Estaba revisando el análisis de clasificación rápida en el libro de Algoritmos de Sedgewick. Él crea la siguiente relación de recurrencia para el número de comparaciones en el ordenamiento rápido mientras ordena una matriz de N elementos distintos.
Me está costando entender esto ... Sé que se necesita una probabilidad de 1 / N para que cualquier elemento se convierta en el pivote y que si k se convierte en el pivote, entonces el subconjunto izquierdo tendrá elementos k-1 y el subconjunto derecho La matriz tendrá elementos Nk.
1.¿Cómo se convierte el costo de la partición en N + 1? ¿Se necesita N + 1 para hacer la partición?
2.Sedgewick dice que, para cada valor de k, si los suma, la probabilidad de que el elemento de partición sea k + el costo de las dos sub-matrices obtiene la ecuación anterior.
- ¿Alguien puede explicar esto para que aquellos con menos conocimientos de matemáticas (yo) puedan entender?
- Específicamente, ¿cómo se obtiene el segundo término en la ecuación?
- ¿Qué significa exactamente ese término?
Respuestas:
La función de costo
C
para la clasificación rápida consta de dos partes. La primera parte es el costo de dividir la matriz en dos 'mitades' (las mitades no tienen que ser del mismo tamaño, de ahí las comillas). La segunda parte es el costo de clasificar esas dos mitades.El
(N + 1)
término es en realidad un término condensado, y proviene de los términosEste es el costo de la partición en clasificación rápida: se
N-1
compara con el valor de pivote y 2 comparaciones adicionales debido a algunas condiciones de contorno en la partición.La segunda parte de la ecuación consiste en los costos para clasificar las dos 'mitades' a cada lado del valor de pivote
k
.Después de elegir un valor de pivote, le quedan dos 'mitades' sin clasificar. El costo de clasificar estas 'mitades' depende de su tamaño y se describe más fácilmente como una aplicación recursiva de la función de costo
C
. Si el pivote es el menor de losN
valores, los costos para ordenar cada una de las dos 'mitades' son respectivamenteC(0)
yC(N-1)
(el costo para ordenar una matriz con 0 elementos y el costo para ordenar uno conN-1
elementos). Si el pivote es el quinto más pequeño, entonces el costo para ordenar cada una de las dos 'mitades' es respectivamenteC(5)
yC(N-6)
(el costo para ordenar una matriz con 5 elementos y el costo para ordenar una conN-6
elementos). Y de manera similar para todos los demás valores de pivote.Pero, ¿cuánto cuesta ordenar esas dos 'mitades' si no conoce el valor pivote? Esto se hace tomando el costo de cada valor posible del pivote y multiplicándolo por la posibilidad de que ese valor en particular aparezca.
Como cada valor de pivote es igualmente probable, la posibilidad de elegir un valor de pivote particular es
1/N
si tieneN
elementos. Para entender esto, piensa en tirar un dado. Con un dado adecuado, la posibilidad de que cada lado termine mirando hacia arriba es igual, por lo que la probabilidad de sacar un 1 es 1/6.Combinado, esto da el término de suma donde, para cada valor posible k del pivote, el costo (
C(k-1) + C(N-k)
) se multiplica por la oportunidad (1/N
)La derivación adicional de la fórmula de sumatoria en la pregunta al
2N lnN
título requiere demasiadas matemáticas para explicar los detalles de este documento, pero se basa en el entendimiento de que el costo de ordenar una matriz deN
elementos (C(N)
) puede expresarse en términos de ordenar un matriz deN-1
elementos (C(N-1)
) y un factor que es directamente proporcional aN
.fuente
Parece que N + 1 como el número de comparaciones para el paso de partición es un error en el libro. Debe averiguar para cada uno de los elementos no dinámicos N – 1 si es menor o mayor que el pivote, lo que requiere una comparación; así N-1 comparaciones en total, no N + 1. (Considere el caso más simple, N = 2, es decir, un pivote y otro elemento: no hay absolutamente ningún espacio para hacer tres comparaciones entre dos elementos).
Considere el caso donde el pivote elegido resulta ser el elemento más pequeño (k = 1). Esto significa que la matriz se divide en una parte vacía a la izquierda (no hay elementos que sean menores que el pivote) y una parte a la derecha que contiene todos los elementos excepto el pivote (todos los demás elementos son mayores que el pivote ) Esto significa que los subproblemas que ahora desea resolver de forma recursiva tienen tamaños 0 y N – 1 (k – 1 y N – k), respectivamente, y requieren comparaciones C (0) y C (N – 1); así, C (0) + C (N – 1) en total.
Si el pivote resulta ser el segundo elemento más pequeño (k = 2), los tamaños del subproblema son 1 y N – 2 (k – 1 y N – k; un elemento a la izquierda, porque es el único más pequeño que El pivote). Por lo tanto, la resolución recursiva de estos subproblemas requiere comparaciones C (1) + C (N – 2). Y así sucesivamente si el pivote es el tercer elemento más pequeño, el cuarto, etc. Estas son las expresiones en los numeradores.
Debido a que el pivote se elige aleatoriamente entre los N elementos, cada caso (pivote es el más pequeño, pivote es el segundo más pequeño, etc.) ocurre con la misma probabilidad 1 / N. De ahí proviene la N en los denominadores.
fuente