Orden Amien to 2

14
Home Page Title Page Contents      Page  1  of   100 Go Back Full Screen Close Quit Ordenamiento en Tiempo Lineal Pro fesor: Juli o esa r L´opez [email protected] 4 de noviembre de 2003

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)