El algoritmo simple habitual para encontrar el elemento mediano en una matriz de números es:n
- Muestra de elementos de con reemplazo en A B
- Ordene y encuentre el rango elementos y de| B | ± √ lrB
- Verifique que y estén en lados opuestos de la mediana de y que haya a lo sumo elementos en entre y para alguna constante constante . Falla si esto no sucede.r A C √ AlrC>0
- De lo contrario, encuentre la mediana ordenando los elementos de entre yl r
No es difícil ver que esto se ejecuta en tiempo lineal y que tiene éxito con alta probabilidad. (Todos los eventos negativos son grandes desviaciones de la expectativa de un binomio).
Un algoritmo alternativo para el mismo problema, que es más natural enseñar a los estudiantes que han visto una clasificación rápida, es el que se describe aquí: Selección aleatoria
También es fácil ver que este tiene un tiempo de ejecución lineal esperado: digamos que una "ronda" es una secuencia de llamadas recursivas que finaliza cuando uno da una división de 1 / 4-3 / 4, y luego observe que la longitud esperada de una ronda es como máximo 2. (En el primer sorteo de una ronda, la probabilidad de obtener una buena división es 1/2 y luego aumenta, ya que el algoritmo se describió de modo que la longitud de la ronda está dominada por una variable aleatoria geométrica).
Entonces ahora la pregunta:
¿Es posible mostrar que la selección aleatoria se ejecuta en tiempo lineal con alta probabilidad?
Tenemos rondas , y cada ronda tiene una longitud de al menos con una probabilidad máxima de , por lo que un límite de unión da que el tiempo de ejecución es con probabilidad .k 2 - k + 1 O ( n log log n ) 1 - 1 / O ( log n )
Esto es un poco insatisfactorio, pero ¿es realmente la verdad?
Respuestas:
No es cierto que el algoritmo se ejecute en tiempo lineal con alta probabilidad. Considerando solo la primera ronda, el tiempo de ejecución es al menos veces una variable aleatoria . Sea la probabilidad de falla permitida. Como , el tiempo de ejecución es al menos .Θ(n) G(1/2) p(n)⟶0 Pr[G(1/2)≥log2p(n)−1]=p(n) Ω(nlog2p(n)−1)=ω(n)
(Hay algunas trampas involucradas, ya que la duración de la primera ronda no es realmente . Un análisis más cuidadoso podría o no validar esta respuesta).G(1/2)
Editar: Grübel y Rosler demostraron que el número esperado de comparaciones divididas por tiende (en cierto sentido) a cierta distribución límite, que no tiene límites. Véase, por ejemplo, el artículo de Grübel "Algoritmo de selección de Hoare: un enfoque de cadena de Markov", que hace referencia a su artículo original.n
fuente