Orden Amien to 2
-
Upload
helio-junior -
Category
Documents
-
view
8 -
download
0
Transcript of Orden Amien to 2
-
Home Page
Title Page
Contents
JJ II
J I
Page 1 of 100
Go Back
Full Screen
Close
Quit
Ordenamiento en Tiempo Lineal
Profesor: Julio Cesar [email protected]
4 de noviembre de 2003
-
Home Page
Title Page
Contents
JJ II
J I
Page 2 of 100
Go Back
Full Screen
Close
Quit
Generalidades
Los algoritmos vistos hasta ahora, son algoritmos de ordenamientopor comparacion (MergeSort, QuickSort, InsertionSort, HeapSort).
? El costo en el peor caso de MergeSort, HeapSort es O(n lg n).
? El costo en el caso medio del QuickSort es O(n lg n).
? La cota mnima de todos los algoritmos de ordenamiento por com-paracion es (n lg n)
Habra algoritmos mejores que los vistos para ordenar?
? Si es ordenamiento por comparaciones: No!
? En otros casos, si, pero si los arreglos cumplen ciertas propiedades ose cuenta con mas informacion:
Ordenamiento por conteo (counting sort). Radix Sort. Bucket Sort.
-
Home Page
Title Page
Contents
JJ II
J I
Page 3 of 100
Go Back
Full Screen
Close
Quit
Cota Inferior para Ordenamiento por Com-paraciones
Para ordenar < a1, a2, . . . , an > solo utilizaremos comparacionesai aj , ai < aj , ai = aj , ai aj ,ai > aj .
El modelo del Arbol de Decision:
Representa las comparaciones realizadas por un algoritmo de orde-namiento cuando opera sobre una entrada de tamano dado.
Control, movimiento de datos, y otros aspectos son ignorados.
Por ejemplo, para el algoritmo de ordenamiento por Insercion conuna entrada de 3 elementos, el arbol de decision es:
a1 : a 2
a a2 3: a a2 3:
a aa a
1 31 3
::
fig 1: Arbol de decision con tres elementos (Insertion Sort)
-
Home Page
Title Page
Contents
JJ II
J I
Page 4 of 100
Go Back
Full Screen
Close
Quit
Arbol de Decision
En general, cada nodo interno esta etiquetado por una pareja ai : aj(1 i, j n) y cada hoja esta etiquetada con una permuta-cion (pi(1), pi(2), . . . , pi(n)) que indica el ordenamiento de la entrada(api(1) api(2) . . . api(n)).
La ejecucion de un algoritmo de ordenamiento corresponde a recorrerun camino de la raz a una hoja en el arbol de decision.
En cada nodo la comparacion ai aj es realizada.
El subarbol izquierdo representa las comparaciones que se deben ha-cer en caso de respuesta positiva. El subarbol derecho representa lascomparaciones que se deben hacer en caso de respuesta negativa (esdecir ai > aj)
Cada una de las n! permutaciones debe aparecer como una de lashojas del arbol de decision, para que el algoritmo trabaje bien.
-
Home Page
Title Page
Contents
JJ II
J I
Page 5 of 100
Go Back
Full Screen
Close
Quit
Arbol de Decision
Cota inferior para el peor caso
? La longitud del camino mas largo de la raz a una hoja, es el numerode comparaciones que se hacen en el peor caso: este numero es iguala la altura del arbol de decision.
? Entonces una cota inferior sobre la altura de un arbol de decision,es una cota inferior sobre la complejidad de cualquier algoritmo deordenamiento.
? Teorema: Cualquier arbol de decision para ordenar n elementos tienealtura (nlgn).
Demostracion
Dado un arbol de decision de altura h, que ordena n elementos, setiene lo siguiente:
Deben existir al menos n! hojas, correspondientes a las n! res-puesta diferentes.
Como el arbol es de altura h y es binario, el numero de hojas esa lo sumo 2h.
n! 2h lg(n!) h h (nlgn)
? Corolario: HeapSort y MergeSort son algoritmos de ordenamientopor comparacion asintoticamente optimos!!
-
Home Page
Title Page
Contents
JJ II
J I
Page 6 of 100
Go Back
Full Screen
Close
Quit
Ordenamiento por Conteo
En el ordenamiento por conteo se asume que :
? Los n elementos de entrada son enteros en el rango 0 y k.
? Si k = O(n), el algoritmo corre en tiempo O(n).
? Idea: Determinar para cada x, cuantos elementos menores que x hay,por ejemplo, si existe 5 elementos menores que x, entonces x debe iren la posicion 6.
? El algoritmo Counting Sort recibe un arreglo A[1..n] donde se en-cuentran los elementos a ordenar, un arreglos de salida donde queda-ran los datos de ordenados B[1..n] y un arreglo C[0..k] que trabajacomo almacenamiento temporal.
Counting Sort (A,B, k)1 for i 0 to k2 do C[i] 03 for j 1 to length [A]4 do C[A[j]] C[A[j]] + 1B C[i] = # veces que aparece i en A5 for i 1 to k6 do C[i] C[i] + C[i 1]B C[i] = # de elementos de A i7 for j length[A] downto 18 do B[C[A[j]]] A[j]9 C[A[j]] C[A[j]] 1
-
Home Page
Title Page
Contents
JJ II
J I
Page 7 of 100
Go Back
Full Screen
Close
Quit
Ordenamiento por Conteo
Ejemplo de Counting Sort
2
0 1 2 3 4 5
0 2 3 0 1
2
0 1 2 3 4 5
2 4 6 7 8
2
1 2 3 4 6 7 85
5 3 0 2 3 0 3
a)
1 2 3 4 5 6 7 8
3
b)
c)
2
0 1 2 3 4 5
2 4 7 7 8
C
C
A
B
C
fig 2: Operaciones de Counting Sort en un Arreglo A[1..8]
-
Home Page
Title Page
Contents
JJ II
J I
Page 8 of 100
Go Back
Full Screen
Close
Quit
Ordenamiento por Conteo
Continuacion del ejemplo Counting Sort
0 1 2 3 4 5
2 4 6 7 81
0 1 2 3 4 5
2 4 7 81 5
1 2 3 4 5 6 7 8
30
1 2 3 4 5 6 7 8
330
1 2 3 4 5 6 7 8
33 30 0 2 2 5
d)
e)
f)
C
C
B
B
B
fig 3: Operaciones de Counting Sort en un Arreglo A[1..8]
-
Home Page
Title Page
Contents
JJ II
J I
Page 9 of 100
Go Back
Full Screen
Close
Quit
Ordenamiento por Conteo
Cual es el costo de ejecucion del algoritmo Counting Sort?
Tiempo de ejecucion: O(k) 12
+O(n) 34
+O(k) 56
+O(n) 79
= O(k + n)
Si k = O(n), entonces tiempo de ejecucion es O(n)
Una importante propiedad del algoritmo Counting Sort es la Es-tabilidad:
Numeros con el mismo valor aparecen en igual orden en el arreglode salida B que en el arreglo de entrada A.
La estabilidad del algoritmo Counting Sort es importante por lasiguiente razon :
? Es utilizado como una subrutina en al algoritmo Radix Sort.
? Es crucial para la correctitud del Radix Sort.
-
Home Page
Title Page
Contents
JJ II
J I
Page 10 of 100
Go Back
Full Screen
Close
Quit
Radix Sort
El algoritmo Radix Sort ordena n numeros enteros de d dgitos.
Para ordenar los numeros solo lo hacemos con una columna al tiempo, elproblema es ordenar los n numeros de d dgitos.
11
n
d 1 d
d1 d
fig 4: Representacion General
Una forma de ordenar los numeros escoger el dgito menos significativo,ordenar cada uno de los resultados recursivamente y entonces combinarlosen orden.
329457657839436720355
720355436457657329839
720329436839355457657
329355436457657720839
fig 5: Representacion de los numeros
-
Home Page
Title Page
Contents
JJ II
J I
Page 11 of 100
Go Back
Full Screen
Close
Quit
Radix Sort
En el siguiente procedimiento se asume que los n elementos de arre-glo A tiene d dgitos, donde el dgito 1 es de inferior orden orden y eldgito d de alto orden.
Radix Sort (A, d)1 for i 1 to d2 do Ordenar A segun el ndice i
con un ordenamiento estable
El algoritmo Radix Sort se usa para ordenar registros cuya clave es lacomposicion de varios campos por ejemplo (ano-mes-da).
Lemma 1:Dado n numeros en el cual cada dgito puede tomar k posibles valores,Radix Sort ordena correctamente los n numeros en (d(n+ k)).
Si d es constante y k = O(n):
Lemma 2:Dado n numeros de b bits y algun entero positivo r b, Radix-Sortordena correctamente los numeros existentes en ((b/r)(n+ 2r)).
-
Home Page
Title Page
Contents
JJ II
J I
Page 12 of 100
Go Back
Full Screen
Close
Quit
Bucket Sort
El algoritmo se ejecuta en tiempo lineal, donde la entrada es toma-da de una distribucion uniforme.
? Supone que la entrada es generada por un proceso aleatorio que dis-tribuye los elementos uniformente en el intervalo [0, 1).
? Idea:
Dividir el intervalo [0, 1) en n subintervalos de igual tamano(Buckets) y distribuir los n numeros de entrada en los Buckets.
Luego se ordena cada Bucket por insercion y por ultimo, se con-catenan los resultados de cada Bucket.
Como la distribucion es uniforme, la probabilidad de que en cadaBucket haya un solo numero es alta.
? La entrada al algoritmo Bucket es un arreglo A de n elementos ycada elemento A[i] satisface que 0 A[i] < 1. Ademas se necesita unarreglo auxiliar B[0..n 1] de listas enlazadas y se asume que existeun mecanismo para mantener esas listas.
-
Home Page
Title Page
Contents
JJ II
J I
Page 13 of 100
Go Back
Full Screen
Close
Quit
Bucket Sort
Ejemplo de un arreglo de 10 numeros :
123456789
10
A
.78
.17
.39
.26
.72
.94
.21
.12
.23
.68
.12 .17
A
012345678
/
//
/
.21 .23
.39
.68
.72 .78
.949
a) b)
.26
fig 6: Operacion de Bucket-Sort
BucketSort (A)1 n length[A]2 for i 1 to n3 do inserte A[i] en la lista B[bnA[i]c]4 for i 0 to n 15 do ordene la lista B[i] por el algoritmo de ordenamiento por insercion6 Concatene las listas B[0], . . . , B[n 1] en orden
-
Home Page
Title Page
Contents
JJ II
J I
Page 14 of 100
Go Back
Full Screen
Close
Quit
Bucket Sort
El costo de ejecucion de todas las lineas del algoritmo excepto la li-nea 5 toma O(n) en el peor caso.
Analisis: El costo total del Bucket Sort depende de la lnea 5.
T (n) = (n) +n1i=0
O(n2i )
Al aplicar la esperanza en ambos lados de la ecuacion :
E[T (n)] = E[(n) +n1
i=0 O(n2i )]
= (n) +n1
i=0 E[O(n2i )]
= (n) +n1
i=0 O(E[n2i ]) (1)
Afirmamos queE[n2i ] = 2 1/n (2)
Utilizando el valor esperado de la ecuacion (1), el costo de ejecucion delBucket Sort es :
= (n) + n O(2 1/n) = (n)