¿Cuáles son los rompecabezas de algoritmos de notación O más interesantes?

El Método Alias ​​(también conocido como el método Walker [0]):
Suponga que [math] A [/ math] es un conjunto finito de cardinalidad [math] n [/ math] y deje que [math] \ rho: A \ rightarrow [0,1] [/ math] sea una medida de probabilidad discreta en [matemáticas] A [/ matemáticas]. Entonces existe un algoritmo que toma [math] \ mathcal {O} (1) [/ math] para muestrear de la distribución [math] \ rho [/ math] y requiere un solo (una vez) [math] \ mathcal { O} (n) [/ math] paso de preprocesamiento.

En otras palabras, existe un algoritmo de tiempo constante para generar números aleatorios a partir de cualquier distribución discreta.

La prueba de esta afirmación es una pregunta de entrevista común en ciertas áreas de las finanzas cuantitativas. Es intuitivamente sencillo, pero un poco incómodo para describir todos los pequeños detalles (lo describiré en el futuro)

[0] http://dl.acm.org/citation.cfm?i…

Agregar n elementos a un vector redimensionable toma O (n) tiempo.
[matemáticas] 1 + 2 + 4 +… + 2 ^ {k} = 2 ^ {k + 1} – 1 [/ matemáticas]

El algoritmo del divisor común más grande lleva [matemática] O (\ log n) [/ matemática] tiempo.
Un algoritmo básico y muy popular que es difícil de analizar.

Tamiz de Eratóstenes toma [matemáticas] O (n \ log \ log n) [/ matemáticas] tiempo.
La complejidad de un algoritmo que los niños aprenden bastante temprano en sus clases de matemáticas es bastante difícil de calcular. O (n (1 + 1/2 + 1/3 + 1/5 +…))

La estructura de datos Disjoint-Sets tarda [math] O (\ alpha (n)) [/ math] en consultar.
Esta estructura de datos es muy fácil de implementar, pero el análisis de complejidad de su comportamiento es muy complicado.

El algoritmo de multiplicación de enteros grandes de Karatsuba toma [matemática] O (n ^ {\ log 3}) [/ matemática]

  • Consulta mínima mínima de antepasados ​​/ rango
    http://www.cs.sunysb.edu/~bender
  • Van Emde Boas Tree
    http://en.wikipedia.org/wiki/Van
  • Algoritmos de selección:
    Hoare’s: http://en.wikipedia.org/wiki/Sel
    Mediana de medianas: http://en.wikipedia.org/wiki/Sel
  • Árbol exponencial
    No se puede encontrar una buena referencia, equivale a almacenar la mitad superior (por altura) del árbol como un árbol estático (B-) en el disco, y luego almacenar los subárboles que cuelgan de esta mitad superior (cada uno de altura h / 2 ) cada uno en un árbol exponencial definido recursivamente. Mantiene el equilibrio de peso y amortiza los costos de reconstrucción cuidadosamente para que, al final, sea muy rápido (en el modelo DAM). Cada vez que necesita reconstruir un subárbol que es grande, es porque trabaja casi tanto como el tamaño de ese subárbol. Puedo estar recordando mal esto, cualquiera que sepa sobre esto, corrígeme.