- Algoritmo de paso gigante de paso de bebé para calcular el logaritmo discreto en ,
- rango ortogonal 2D estático que cuenta en tiempo y memoria ,
- cola prioritaria con EXTRACT-MIN en y DECREASE-KEY en ,
- colorear un gráfico de 3 colores con colores en tiempo polinómico,
Sólo para nombrar unos pocos.
Si bien estos algoritmos a menudo son subóptimos, son fáciles de entender por los estudiantes y buenos para mostrar rápidamente que los límites ingenuos no son óptimos. Además, las estructuras de datos de idea de raíz cuadrada a veces son más prácticas que sus contrapartes basadas en árboles binarios debido a la facilidad de almacenamiento en caché (sin considerar las técnicas ajenas al caché). Es por eso que presto un poco de atención a este tema mientras doy clases.
Estoy interesado en ejemplos más distintivos de este tipo. Así que estoy buscando algoritmos (preferiblemente elegantes), estructuras de datos, protocolos de comunicación, etc. cuyo análisis se base en la idea de raíz cuadrada. Sus asintóticos no necesitan ser óptimos.
fuente
Respuestas:
El trabajo de Algoritmos geométricos sublineales de Chazelle, Liu y Magen (STOC 2003, SICOMP 2006) tiene varias aplicaciones inteligentes del siguiente truco de muestreo aleatorio. Las variaciones del mismo truco fueron utilizadas previamente por Gärtner y Welzl [ DCG 2001 ], quienes citan la primera edición de CLR (1990).
Supongamos que se nos da una lista ordenada de números circulares vinculados, almacenados en un bloque contiguo de memoria. Es decir, tenemos dos matrices y N e x t [ 1 .. n ] , dondeKe y[ 1 .. n ] nortee x t [ 1 .. n ]
Entonces podemos encontrar el sucesor de un número dado en O ( √x tiempo esperado de la siguiente manera:O(n−−√)
Elija una muestra aleatoria de elementos de la matrizKey. SeaKey[j]la muestra más grande que sea menor quex(o la muestra más grande, si todas las muestras son mayores quex).n−−√ Key Ke y[ j ] X X
Siga los punteros de K e y [ j ] hasta que veamos un número mayor o igual a x (después de ajustar si todas las muestras eran mayores que x ).nortee x t Ke y[ j ] X X
Una aplicación relativamente simple del lema de Yao implica que el límite de tiempo esperado es óptimo. Cualquier algoritmo determinista para este problema requiere un tiempoΩ(n)en el peor de los casos.O ( n--√) Ω ( n )
fuente
Hay triángulos en cualquier m -Edge gráfico y que se pueden encontrar en O ( m 3 / 2 ) tiempo. Hay muchas formas de hacer esto, pero creo que una de las primeras es Itai y Rodeh (STOC 1977) que proporcionan un algoritmo que pasa por una secuencia de iteraciones de tiempo lineal, cada una de las cuales elimina un bosque que se extiende del gráfico. En las primeras iteraciones, cuando el bosque restante tiene al menos n - k componentes, el algoritmo elimina al menosO ( m3 / 2) metro O ( m3 / 2) n - k bordes por paso, y en las últimas iteraciones cuando tiene como máximok componentes, el grado máximo es k y se reduce en al menos uno en cada paso. Entonces, el número total de iteraciones es como máximo m / k + k y elegir la compensación correcta da el límite general de O ( √n - k k m / k + k en iteraciones yO(m 3 / 2 )en el tiempo.O ( m--√) O ( m3 / 2)
fuente