dr. jesÚs a. gonzÁlez bernal ciencias ... - …jagonzalez/ada/ordenamiento-b.pdf · dr. jesÚs a....

26
DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal

Upload: lamxuyen

Post on 27-Sep-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

D R . J E S Ú S A . G O N Z Á L E Z B E R N A L C I E N C I A S C O M P U T A C I O N A L E S

I N A O E

Análisis y Diseño de Algoritmos

Ordenamiento en Tiempo Lineal

Page 2: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

2

Ordenamiento por Comparación (Comparison Sorts)

�  Tiempo de ejecución ¡  HeapSort y MergeSort, O(nlgn), peor caso ¡  QuickSort, O(nlgn), caso promedio

�  Para alguna entrada ¡  Ω(nlgn)

�  Los algoritmos anteriores comparten una característica ¡  El orden que determinan se basa en comparaciones entre los

elementos de entrada ¡  Los conocemos como “ordenamiento basado en

comparaciones” ó “comparison sorts”

2

Page 3: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

3

Ordenamiento Lineal (Linear Sorting)

�  No se basan en comparaciones ¡  Counting Sort ¡  Radix Sort ¡  Bucket Sort

3

Page 4: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

4

Cotas Inferiores para Ordenamiento

�  En “comparison sort”, comparamos elementos ¡  Dados 2 elementos ai y aj probamos:

÷ ai < aj, ai ≤ aj, ai = aj, ai ≥ aj ó ai > aj para determinar orden relativo

÷ No verificamos los valores de otra forma

�  Para algoritmos lineales ¡  Si asumimos entradas únicas, no serían necesarias las

comparaciones “=“ ÷ Quedan sólo comparaciones de la forma ai ≤ aj

4

Page 5: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

5

Modelo de Árboles de Decisión

�  Ordenamientos de comparación se ven en términos de árboles de decisión ¡  Árbol binario completo que representa comparaciones hechas

por un alg. de ordenamiento particular sobre una entrada de determinado tamaño

¡  Se ignora el control, movimientos de datos y otros aspectos del algoritmo

5

Page 6: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Árbol de Decisión para Insertion Sort con 3 Valores

�  Nodo interno anotado como i:j, i y j en el rango [1..n] �  Hojas anotadas por una permutación <π(1), π(2), …, π(n)>

�  La ejecución del alg. de ord à ruta de la raíz a hoja

6

n = 3 Entrada: <a1=6, a2=8, a3=5> Posibles salidas: 3!

Page 7: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Counting Sort

�  Asume entrada de n elementos enteros en rango de 0 a k

�  Cuando k = O(n), ordenamiento corre en Θ(n) �  Determina para cada elemento de entrada x, el # de

elementos menores de x ¡  Así posiciona a x en su lugar en el arreglo de salida ¡  Si hay 17 elementos menores a x à x va en el lugar 18 ¡  Manejo de números repetidos

7

Page 8: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Algoritmo Counting Sort 8

�  A[j] à Elemento del arreglo original �  C[A[j]] à # de repeticiones del número en A[j] �  B[C[A[j]]] à Arreglo final, pone el número en la posición final

Page 9: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Ejemplo de Counting Sort 9

Page 10: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Análisis de Counting Sort 10

�  Ciclo for líneas 1-2 toma Θ(k) �  Ciclo for líneas 3-4 toma Θ(n) �  Ciclo for líneas 9-11 toma Θ(n) �  Tiempo total es Θ(k+n)

¡  En general usamos counting sort cuando tenemos k = O(n) ÷ Tiempo de ejecución Θ(n)

�  Mejora la cota inferior Ω(nlgn) porque no es un algoritmo de ordenamiento por comparación ¡  No hace comparaciones entre elementos ¡  Usa los valores de los elementos para indexarlos en el arreglo

Page 11: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Análisis Counting Sort 11

�  Algoritmo estable ¡  Números con el mismo valor aparecen en la salida en el mismo

orden en que estaban en el arreglo de entrada ¡  Propiedad importante cuando hay datos asociados con el

elemento que se ordena ¡  Counting Sort se utiliza como subrutina de Radix Sort ¡  La estabilidad de Counting Sort es importante para que Radix

Sort sea un algoritmo correcto

Page 12: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Radix Sort 12

�  Originalmente utilizado para ordenar juegos de cartas perforadas (IBM) ¡  Los ordenadores de tarjetas trabajaban una columna a la

vez

�  Actualmente se utiliza para ordenamientos multi-llave (p.e. año/mes/día)

�  Considera cada dígito del número como una llave independiente

Page 13: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Radix Sort 13

�  ¿Cómo ordenamos? ¡  Primero ordena el dígito más significativo n, luego el dígito

n-2, etc. ÷ Problema: podemos ordenar en 10 conjuntos (uno por dígito) pero

para ordenamientos recursivos subsecuentes requerimos los 10 conjuntos y se debería mantener los otros 9 montones.

¡  Podemos ordenar del dígito menos significativo al más significativo

Page 14: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Ejemplo de Radix Sort 14

Page 15: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Algoritmo de Radix Sort 15

�  d es el número de dígitos ¡  el dígito 1, es el de orden más bajo ¡  el dígito d es el de mayor orden

Page 16: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Análisis de Radix Sort 16

�  Si cada dígito esta en el rango de 1 a k, usamos CountingSort

�  Cada paso por un dígito toma Θ(n + k) �  Para d dígitos Θ(dn + dk) �  Si d es una constante y k = O(n), T(n) = O(n) �  Radix-n significa que cada dígito puede diferenciar

entre n símbolos diferentes, en ejemplos anteriores utilizamos radix-10 (dígitos del 0 al 9).

Page 17: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Precisión 17

�  ¿Porqué pasadas posteriores no desacomodan los ordenamientos previos?

�  Probar que después de la pasada p, ordenando para el dígito p+1 hacia el último dígito ¡  Por inducción sobre p

÷ Verdadero para p=1, aplicamos sort estable al dígito 1, ordenado después de la primera pasada

÷ Asumimos verdadero para p=1 y probamos para p=i+1 ÷ Después de la pasada i, comparamos dos números x y y ÷  Si x esta antes que y, pasó una de estas dos condiciones

¢  x < y para el dígito i, à x va antes que y en orden ¢  x = y para el dígito i, à x < y para el resto del número, ubicado en

ese orden en una pasada anterior, no fue intercambiado por el uso de un ordenamiento estable

Page 18: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Ejemplo 18

�  Pruebe que n enteros en el rango de 1 a n2 se pueden ordenar en tiempo O(n)

�  El número de dígitos utilizado para representar n2 números diferentes en un sistema de números k-ario es: logk(n2) ¡  Entonces, considerando los n2 números como números en radix-n,

tenemos: ¡  d=logn(n2)=2logn(n)=2 ¡  Entonces necesitamos 2 dígitos, d = 2 ¡  Cada dígito requiere n símbolos (radix-n) , por lo que k=n ¡  T(n)= Θ(d(n + k)) = Θ(2(n + n)) = Θ(n).

Page 19: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Bucket Sort 19

�  Corre en tiempo lineal cuando la entrada se toma de una distribución uniforme

�  Rápido porque asume algo sobre la entrada (como counting sort, asume números en un rango pequeño) ¡  Bucket Sort asume números generados aleatoriamente y

distribuidos uniformemente en un rango de [o,1)

�  Divide el intervalo de [0,1) en n sub-intervalos de igual tamaño ¡  Se ordenan los números en cada partición ¡  Se recorren las particiones en orden listando los elementos

Page 20: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Algoritmo Bucket Sort 20

Page 21: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Ejemplo de Bucket Sort 21

Page 22: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Análisis Bucket Sort 22

1.  BucketSort(A) COST*TIMES 2.  n = length(A) 1 3.  for i = 1 to n n+1 4.  insert(A[i], B[floor(nA[i])] n 5.  for i = 0 to n-1 n +1 6.  InsertionSort(B[i]) n*T(InsertionSort) 7.  return (B[0],B[1], …, B[n-1]) n

Page 23: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Análisis Bucket Sort 23

�  TBS = 4n + TISn + 3 �  Sea ni = número de elementos en partición B[i] �  El tiempo esperado para ordenar los elementos en B[i] = E(O(ni

2)) = O(E(ni

2)). �  Note que el valor esperado de una variable aleatoria X como se describe

en el capítulo 6 es:

¡  La variable x representa el valor de X, y Pr(X=x) la probabilidad de que el valor de X sea x

�  La varianza de una variable aleatoria X con media E[X] se denota como Var[X]

∑ ==x

xXxXE )Pr()(

intentos para binomial óndistribucila esesta ,)(

][][][ 22

nqpkn

kXP

XEXVarXE

knk −⎟⎟⎠

⎞⎜⎜⎝

⎛==

+=

Page 24: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Análisis Bucket Sort 24

�  Para todas las particiones, �  Dados

¡  n elementos, uniformemente distribuidos sobre todos los posibles valores

¡  n particiones

�  ¿Cuál es la probabilidad de que un elemento sea insertado en la partición i? ¡  P=1/n.

�  Dados n intentos que consisten en poner elementos en las particiones, ¿cuántos elementos se insertarán en la partición i?

∑ ∑−

=

=

=1

0

1

0

22 )).(())((n

i

n

iii nEOnEO

Page 25: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Análisis Bucket Sort 25

)1(/12

1/11)(

/11)1()( y varianza1)( mediacon

),(

22

Θ=

−=

+−=

−=−=

==

=

nnnE

npnpnVarnpnEpnBinomialn

i

i

i

i

�  Por tanto, TIS = Θ(1) �  y TBS = 4n + Θ(1)n + 3 = O(n) para el caso promedio.

En el peor caso, el tiempo de ejecución es n2.

Page 26: DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS ... - …jagonzalez/ADA/Ordenamiento-b.pdf · DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos

Aplicaciones de Bucket Sort

�  GPU bucket sort algorithm with applications to nearest-neighbour search, by T. Rozen, K. Boryczko, W. Alda ¡  http://wscg.zcu.cz/WSCG2008/Papers_2008/journal/G07-

full.pdf

26