Selección Tiempo Real
flakitha_9127 de Septiembre de 2014
4.033 Palabras (17 Páginas)167 Visitas
Selección Tiempo Lineal
Ahora hemos introducido varios algoritmos que pueden ordenar n números en El lg n / tiempo. Combinar tipo y heapsort alcanzar este límite superior en el peor de los casos; quicksort consigue que en promedio. Por otra parte, para cada uno de estos algoritmos, podemos producir un secuencia de números de entrada n que causa el algoritmo para funcionar en? lg .N n / tiempo. Estos algoritmos comparten una propiedad interesante: el orden de clasificación determinan se basa únicamente en las comparaciones entre los elementos de entrada. Llamamos a tal clasificación algoritmos tipo de comparación. Todos los algoritmos de ordenación introducidos hasta ahora son tipo de comparación. En la Sección 8.1, vamos a demostrar que cualquier comparación de orden debe hacer? Lg .N n / comparaciones en el peor de los casos para ordenar n elementos. Por lo tanto, combinar y ordenar heapsort son asintóticamente óptima, y no existe comparación de orden que es más rápido en más de un factor constante. Secciones 8.2, 8.3, y 8.4 examinan tres algoritmos de ordenación de recuento de género, radix especie, y un cubo especie-que se ejecutan en un tiempo lineal. Por supuesto, estos algoritmos utilizan operaciones distintas de las comparaciones para determinar el orden de la clasificación. En consecuencia, el? lg .N n / límite inferior no se aplica a ellos.
8.1 Cotas inferiores para clasificar
En una suerte de comparación, usamos sólo las comparaciones entre los elementos que ganar para información acerca de un HA1 secuencia de entrada; a2; :::; ani. Esto es, dados dos elementos ai y aj, llevamos a cabo una de las pruebas ai <aj, ai? aj, ai aj D, ai? aj, o ai> aj para determinar su orden relativo. No podemos inspeccionar los valores de la elementos o para ganancia de información acerca de ellos en cualquier otra forma. En esta sección, se supone, sin pérdida de generalidad, que todos los elementos de entrada son distintos. Dado este supuesto, las comparaciones de la forma ai aj D son inútiles, por lo que podemos suponer que no se realizan comparaciones de este formulario. También observamos que las comparaciones ai? aj, ai? aj, ai> aj, y ai <aj son todos equivalentes en esa
Figura 8.1 Árbol de decisiones para la ordenación por inserción operar en tres elementos. Un nodo interno anotado por i: j indica una comparación entre ai y aj. Una hoja anotado por la permutación h 0.1 /; 0,2 /; :::; .n / I indica que es pedir un 0,1 / un 0,2 / un .n /. El camino sombreado indica las decisiones tomadas al ordenar la secuencia de entrada ha1 D 6; a2 D 8; a3 D 5i; la h3 permutación; 1; 2i en la hoja indica que el ordenamiento ordenada es a3 D 5? a1 D 6? a2 D 8. Hay 3S D 6 posibles permutaciones de los elementos de entrada, por lo que el árbol de decisiones deben tener en menos 6 hojas. ofrecen importantes datos idénticos sobre el orden relativo de ai y aj. Por lo tanto asumir que todas las comparaciones tienen la forma ai? aj. El modelo de árbol de decisión Podemos ver la clase de comparación abstractamente en términos de árboles de decisión. Una decisión árbol es un árbol binario completo que representa las comparaciones entre los elementos que se llevan a cabo mediante un algoritmo de clasificación particular, operando en una entrada de un dado tamaño. Control, el movimiento de datos, y todos los demás aspectos del algoritmo se ignoran.
La figura 8.1 muestra el árbol de decisión correspondiente al algoritmo de ordenación por inserción de la Sección 2.1 que opera en una secuencia de entrada de tres elementos. En un árbol de decisión, nos anotamos cada nodo interno por i: j para algún i y j en el rango 1? i; j? n, donde n es el número de elementos en la secuencia de entrada. Nosotros también anotar cada hoja por una permutación h 0,1 /?; ? 0,2 /; :::; ? .n / i. (Vea la Sección C.1 para el fondo de permutaciones.) La ejecución de los algoritmos de clasificación corresponde a la localización de un camino simple de la raíz del árbol de decisión hacia abajo a una hoja. Cada nodo interno indica una comparación ai? aj. El subárbol izquierdo luego dicta comparaciones posteriores una vez que sabemos que ai?
aj, y los dictados subárbol derecho comparaciones posteriores sabiendo que ai> aj. Cuando llegamos a una hoja, la clasificación algoritmo ha creado el pedido de un? 0,1 /? un? 0,2 /? ? ? ? ? un? .n /. Debido cualquier algoritmo de clasificación correcta debe ser capaz de producir cada permutación de su entrada, cada una de las permutaciones ns n elementos deben aparecer como una de las hojas de la árbol de decisión para una especie comparación sea correcta. Además, cada una de estas hojas debe ser accesible desde la raíz por una tendencia a la baja que corresponde a una real ejecución de la comparación de orden. (Nos referiremos a las hojas como "alcanzable".)
Por lo tanto, vamos a considerar sólo los árboles de decisión en el que cada permutación aparece como una hoja accesible.
Un límite inferior para el peor de los casos
La longitud del camino simple más largo de la raíz de un árbol de decisión para cualquiera de sus hojas alcanzables representa el número del peor caso de comparaciones que la correspondiente algoritmo de ordenación realiza. En consecuencia, el número de caso más desfavorable de comparaciones para un algoritmo de comparación de orden dada es igual a la altura de su decisión árbol. Un límite inferior en las alturas de los árboles de decisión en el que cada permutación aparece como una hoja puede llegar, por tanto, es una cota inferior del tiempo de funcionamiento de cualquier comparación algoritmo de ordenación. El siguiente teorema establece un límite inferior tal.
Teorema 8.1
Cualquier algoritmo de comparación de orden requiere? .N Lg n / comparaciones en el peor de los casos. Prueba De la discusión anterior, es suficiente para determinar la altura de un árbol de decisión en el que cada permutación presenta como una hoja alcanzable. Considere la posibilidad de un árbol de decisiones de la altura h con l hojas alcanzables que corresponde a una comparación tipo de n elementos. Debido a que cada una de las permutaciones NS de la entrada aparece como algunas hojas, tenemos ns? l. Desde un árbol binario de altura h no tiene más de 2h
hojas, tenemos ns? l? 2H;
que, tomando logaritmos, implica
h? lg.nŠ / (ya que la función LG es monótona creciente)
D? Lg .N n / (por la ecuación (3.19)).
Corolario 8.2
Heapsort y fusionar especie son asintóticamente tipo de comparación óptima.
A prueba de On lg n / cotas superiores sobre los tiempos de ejecución para heapsort y fusionar
coincida con el tipo? .N lg n / peor de los casos límite inferior del Teorema 8.1.
Ejercicios
8.1-1
¿Cuál es el menor profundidad posible de una hoja en un árbol de decisión para una comparación
ordenar?
194 Capítulo 8 Clasificación en Tiempo Lineal
8.1-2
Obtener límites asintóticamente apretado sobre lg.nŠ / sin usar la aproximación de Stirling.
En lugar de ello, evaluar la suma
Pn
kd1 lg k utilizando técnicas de Sección
A.2.
8.1-3
Demostrar que no hay comparación especie cuyo tiempo de ejecución es lineal durante al menos la mitad
de las entradas de NS de longitud n. ¿Qué pasa con una fracción de 1 = n de las entradas de longitud n?
8.2 Contar especie couting sort
Contando especie supone que cada uno de los elementos de entrada n es un entero en el rango
0 a k, para algún entero k. Cuando k D O.n /, el tipo se ejecuta en, .n / hora.
Contando tipo determina, para cada elemento de entrada x, el número de elementos menos que x. Utiliza esta información para colocar elemento x directamente en su posición en el matriz de salida. Por ejemplo, si 17 elementos son menos de x, entonces x pertenece en la producción
18a posición Debemos modificar este esquema ligeramente para manejar la situación en la que varios elementos tienen el mismo valor, ya que no queremos poner a todos en la misma posición.
En el código para el recuento de género, se supone que la entrada es una matriz AOE1: n ?, y
por lo tanto A: longitud D n. Requerimos otras dos matrices: la matriz BOE1: n? ostenta la
de salida, y el COE0 matriz ordenada:: k? proporciona almacenamiento temporal de trabajo.
8.2 Contar tipo 195
Figura 8.2 La operación de contar-SORT en una matriz de entrada AOE1: 8 ?, donde cada elemento de A es un entero no negativo no mayor que k D 5. (a) La matriz A y la matriz auxiliar C después de línea 5 (b) La matriz C después de la línea 8 (c) - (e) La matriz de salida B y la matriz auxiliar C después de uno, dos, y tres iteraciones del bucle en las líneas 10-12, respectivamente. Sólo los elementos ligeramente sombreadas de
array B ha sido rellenado. (f) La final ordenados matriz de salida B.
Figura 8.2 ilustra contando especie. Después de que el bucle for de las líneas 2-3 inicializa el
array C a cero, el bucle de las líneas 4-5 inspecciona cada elemento de entrada. Si el valor de un elemento de entrada es i, incrementamos COEi ?. Por lo tanto, después de la línea 5, COEi? sostiene el número de elementos de entrada igual a I para cada entero i D 0; 1; :::; k. Líneas 7-8 determinar para cada i D 0; 1; :::; k cuántos elementos de entrada son menos que o igual a i manteniendo una suma continua de la matriz C.
Por último, el bucle de las líneas 10 a 12 plazas cada elemento AOEj? en su correcta posición ordenada en la matriz de salida B. Si todos los n elementos son distintos, entonces cuando
...