¿Qué algoritmo es fácil de aprender pero aún tiene una gran importancia?

Los algoritmos de clase de divide y vencerás ( origen: latín ‘divide et impera’ usado en el contexto de guerras imperiales y estrategia de batalla en la historia ) son fáciles e intuitivos de entender. La búsqueda binaria, el tipo de fusión y otros algoritmos similares entran en esta categoría.

Lo notable de esta técnica es que introduce un factor logarítmico en la complejidad de los algoritmos en lugar de un factor lineal, cuadrático o polinómico.

Tenga en cuenta que un algoritmo como la ordenación por inserción tarda un tiempo asintótico n ^ 2, mientras que la ordenación por fusión tarda n lg n tiempo. Si se da una entrada de tamaño 1000 (= n) a ambos, el peor de los casos para ejecutar ambos algoritmos es aproximadamente 1000000 constante instrucciones de tiempo y 10000 instrucciones de tiempo constante respectivamente. Esto puede no parecer mucho, pero a medida que n se acerca al infinito, hay una diferencia exponencial entre ellas. Esto lo convierte en una técnica muy importante en la resolución de problemas y una variedad de problemas aparentemente no relacionados se pueden resolver en menos tiempo cuadrático . (localizar la mediana de una matriz, buscar un elemento, encontrar picos para nombrar algunos)

Como una función lineal es una función exponencial, también lo es una función logarítmica con una función lineal. (Analogía de crecimiento)

f (exp (n)): f (n):: f (n): f (log (n))

Por lo tanto, el enfoque de dividir y conquistar hace que la computación sea más eficiente. Además, la técnica se puede utilizar fácilmente para modelar muchos problemas. Desde algoritmos híbridos y codiciosos utilizados para optimizar una función, computando una rápida transformación de Fourier a algoritmos como la multiplicación de karatsuba; todos usan este paradigma. Muchos algoritmos eficientes en la historia han usado este enfoque.

Dividir y conquistar es muy simple y efectivo al mismo tiempo, no es muy fácil implementarlo, ya que se necesita mucha práctica para modelar correctamente el problema y hay que saberlo al revés para aplicarlo.

http://en.m.wikipedia.org/wiki/D…

En mi opinión, todos estos algoritmos son simples de entender, pero la idea detrás de cada algoritmo es simplemente elegante.

1. RSA (criptosistema)
2. Intercambio de llaves Diffie – Hellman
3. Algoritmo rho de Pollard
4. algoritmo Karatsuba
5. Eliminación gaussiana
6. Quicksort

Si está buscando más algoritmos para aprender, intente Lista de algoritmos

La búsqueda binaria es un algoritmo que se usa para resolver muchos otros problemas. Es fácil de aprender e implementar y se pregunta con mucha frecuencia en entrevistas técnicas.
Los siguientes problemas se pueden resolver de manera muy eficiente aplicando esta estrategia:

1. encuentre un elemento en una matriz ordenada usando Búsqueda binaria.
Solución:

2. Dada una matriz entera ordenada que se rota cualquier número de veces, encuentre el índice pivote, es decir, el índice del elemento mínimo de la matriz.
Solución:

3. Dada una matriz entera ordenada que se rota cualquier número de veces y un número entero, encuentre el índice de num en la matriz.
Solución 1:
Solución 2:

4. Dada una matriz entera ordenada que se rota cualquier número de veces y un número entero, encuentre el índice de num en la matriz.
Solución:

5. Dadas dos matrices ordenadas a y b cada una de tamaño ‘n’, encuentre la mediana de la matriz obtenida fusionando estas dos matrices.
Solución:

6. Dada una matriz entera ordenada de longitud n, cree un Árbol de búsqueda binaria equilibrado utilizando elementos de la matriz.
Solución:

Optimización de costos o algoritmos de categoría codiciosos en mi opinión.
No es que los otros no sean importantes.
Aquí hay una presentación muy lúcida de algo codicioso:
Algoritmos codiciosos
y sin sorpresas, Topcoder también tiene un buen tutorial
Tutoriales de algoritmos

Gracias por la A2A

Búsqueda binaria

Depende de lo que está haciendo. Encontré una idea interesante en las simulaciones. Resulta que la distribución acumulativa de cualquier
La variable aleatoria es uniforme en el rango [0,1]. Dicho eso, si te alimentas
la salida de un generador uniforme de números aleatorios (por ejemplo, rando), en el inverso de la distribución de acumulación, el resultado es un conjunto de números aleatorios que se aproxima a la distribución original. Para aumentar la precisión, cambie el ancho de muestreo. Úselo para desarrollar simulaciones basadas en computadora para sistemas complejos (por ejemplo, tráfico en un semáforo / intersección).

PageRank sin duda.

Es el algoritmo más importante en los últimos 15 años e incluso un niño puede aprender una intuición.

Imagine un gráfico, comience en un nodo aleatorio. Ahora lanza una moneda, si sale cara y luego se mueve a un vecino aleatorio si sale cruz, teletransporta aleatoriamente a otro nodo. Cada vez que visite un nodo escriba una cruz en él. Entonces el rango del nodo es el número de cruces que tiene.

Pagerank lleva no solo a Google, sino a varios algoritmos relacionados, puede usarse para la agrupación, recomendar amigos en un gráfico de red social, etc.

– Algoritmos de búsqueda basados ​​en hash.

Hubo una anécdota cuando alguien dijo que “el 99% de todos los de Yahoo hicieron Hashing y hubo un 1% de pruebas”.

Algoritmos de clasificación, especialmente el cubo y la clasificación rápida.
Y agregaría Map reduce.