Está en la página 1de 58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Dise no de Algoritmos
Clase 8: Divide y Conquista Carlos Contreras Bolton
Universidad Andr es Bello

26 de Septiembre de 2013

Carlos Contreras Bolton Dise no de Algoritmos

1/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Tabla de Contenidos
1 2 3 4
Introducci on Esquema de la t ecnica Eciencia de los algoritmos Ejemplo 1 Ejemplo 2 B usqueda Binaria Algoritmo Funcionamiento Complejidad Mergesort Algoritmo Funcionamiento Complejidad Quicksort Algoritmo Funcionamiento Complejidad Ejercicio
2/58

Carlos Contreras Bolton Dise no de Algoritmos

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Introducci on

Popularmente, divide y vencer as (conquista o reinar as), hace referencia a un refr an que implica resolver un problema dif cil, dividi endolo en partes m as simples tantas veces como sea necesario, hasta que la resoluci on de las partes se torna obvia. La soluci on del problema principal se construye con las soluciones encontradas.

Carlos Contreras Bolton Dise no de Algoritmos

3/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Introducci on

En las ciencias de la computaci on, el t ermino divide y conquista (DyC) hace referencia a uno de los m as importantes paradigmas de dise no algor tmico.
El m etodo [2] est a basado en la resoluci on recursiva de un problema dividi endolo en dos o m as subproblemas de igual tipo o similar. El proceso contin ua hasta que estos llegan a ser lo sucientemente sencillos como para que se resuelvan directamente. Al nal, las soluciones a cada uno de los subproblemas se combinan para dar una soluci on al problema original.

Carlos Contreras Bolton Dise no de Algoritmos

4/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Introducci on
El uso de DyC data de la antigua Babilonia en el 200 A.C. [4]. Es la b usqueda binaria, donde el problema original es partido sucesivamente en subproblemas simples de m as o menos la mitad del tama no [4]. Una descripci on del algoritmo en computador apareci o en 1946 en un art culo de John Mauchly [4]. Otro ejemplo antiguo de algoritmo de DyC con m ultiples subproblemas es la descripci on realizada por Gauss en 1805 de lo que se le llama ahora algoritmo de la r apida transformaci on de Fourier-Cooley-Tukey (FFT) [3]. Otro problema antiguo de 2 subdivisiones de DyC fue espec camente desarrollado para computadores y analizado adecuadamente es el algoritmo de Merge-Sort, inventado por John von Neumann en 1945 [4].

Carlos Contreras Bolton Dise no de Algoritmos

5/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Esquema de la t ecnica

Descomponer el caso a resolver en subcasos m as peque nos del mismo problema. Resolver independientemente cada subcaso. Combinar los resultados para construir la soluci on del caso original. Este proceso se suele aplicar recursivamente. La eciencia de esta t ecnica depende de c omo se resuelvan los subcasos.

Carlos Contreras Bolton Dise no de Algoritmos

6/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Esquema de la t ecnica
Esquema en 3 etapas: Divisi on. Divide el problema original en k subproblemas de menor tama no. Conquistar. Estos subproblemas se resuelven independientemente:
Directamente si son simples. Reduciendo a casos m as simples (t picamente de forma recursiva).

Combinar. Se combinan sus soluciones parciales para obtener la soluci on del problema original. El caso m as frecuente: k = 2.

Carlos Contreras Bolton Dise no de Algoritmos

7/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Esquema de la t ecnica
La forma general de los algoritmos DyC sigue el esquema siguiente: Algorithm 1 Divide y Conquista
Require: x: tipo de problema Ensure: y : soluci on 1: if x es sucientemente simple then 2: return soluci on simple(x) 3: else 4: descomponer x en x1 , x2 , . . . , xn 5: for i 1 hasta n do 6: yi Divide y Conquista(xi ) 7: end for 8: return combinar(y1 , y2 , . . . , yn ) 9: end if

Carlos Contreras Bolton Dise no de Algoritmos

8/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Esquema de la t ecnica

Para aplicar la estrategia DyC es necesario que se cumplan tres condiciones: La decisi on de utilizar el subalgoritmo b asico en lugar de hacer llamadas recursivas debe tomarse cuidadosamente. Tiene que ser posible descomponer el caso en subcasos y recomponer las soluciones parciales de forma eciente. Los subcasos deben ser en lo posible aproximadamente del mismo tama no.

Carlos Contreras Bolton Dise no de Algoritmos

9/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Eciencia de los algoritmos

El tiempo de ejecuci on de un algoritmo de DyC viene dado por la suma de dos elementos: El tiempo que tarda en resolver los a subproblemas en los que se divide el original, a T ( n ), donde n/b es el tama no b de cada sub-problema. El tiempo necesario para combinar las soluciones de los sub-problemas para hallar la soluci on del original; normalmente es O(nk ).

Carlos Contreras Bolton Dise no de Algoritmos

10/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Eciencia de los algoritmos

Por tanto, el tiempo total es dado por la ecuaci on 1 de recurrencia . n + O(nk ) T (n) = a T b La soluci on de esta ecuaci on, si a 1, b 2, k 0, es: k si a > b , T (n) = O(nlogb a ) si a = bk , T (n) = O(nk log n) si a < bk , T (n) = O(nk )

(1)

Carlos Contreras Bolton Dise no de Algoritmos

11/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 1
Exponenciaci on

La versi on m as ingenua de dicho algoritmo es la que se aprecia en el Algoritmo 2. Algorithm 2 Exponente


Require: a y n Ensure: r 1: r 1 2: for i 1 hasta n do 3: r ra 4: end for 5: return r

El costo de una multiplicaci on var a considerablemente con el tama no de los n umeros a multiplicar. Pero s olo nos enfocaremos en contar el n umero de multiplicaciones. El n umero de multiplicaciones es n. Se puede hacer algo mejor?
Carlos Contreras Bolton Dise no de Algoritmos 12/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 1
Exponenciaci on
S , utilizamos la t ecnica de DyC y en base a la observaci on de que para n par, an = (an/2 )2 . Esto nos permite escribirla funci on anterior de otra manera, como se aprecia en el Algoritmo 3.

Algorithm 3 Exponente
Require: a y n Ensure: r 1: if n = 0 then 2: r1 3: else 4: if n es par then ) 5: r Exponente(a, n 2 6: r rr 7: else 8: r a Exponente(a, n 1) 9: end if 10: end if 11: return r

Carlos Contreras Bolton Dise no de Algoritmos

13/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 1
Exponenciaci on

Sea T (n) el n umero de multiplicaciones realizadas por este algoritmo para el exponente n. Si n es par, su ecuaci on de recurrencia es dada por la ecuaci on 2. n +1 (2) 2 Para a = 1, b = 2 y k = 0. Por ello, a = bk y T (n) O(log n) para n m ultiplo de 2. Se puede comprobar que el mismo resultado se obtiene para los dem as ns. T (n) = T

Carlos Contreras Bolton Dise no de Algoritmos

14/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

Como se coment o anteriormente, no es lo mismo multiplicar n umeros peque nos que n umeros grandes. Repasemos con un ejemplo el algoritmo de multiplicaci on usual: 2 8 1 6 5 2 7 6 1 0 6 0 1 5 1 0 7 6 2 9 9 0 5 6 9 5 5 4 1 6 3

+ 1 1

Carlos Contreras Bolton Dise no de Algoritmos

15/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

Por cada d gito de 4163 escribimos una t ermino a sumar. Para el c omputo de cada termino, debemos recorrer los d gitos de 2765. Sea n el n umero de d gitos de los n umeros a multiplicar (asumiendo que los factores tienen aproximadamente el mismo n umero de d gitos). El c omputo de las n l neas insume tiempo O(n2 ), y la suma de los n t erminos tambi en. Ese es el orden del algoritmo usual de multiplicaci on. Podemos hacer algo mejor?

Carlos Contreras Bolton Dise no de Algoritmos

16/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

Intentemos aplicar DyC. Separemos cada factor en dos mitades: el primero en 27 y 65, y el segundo en 41 y 63: 2 2 6 6 7 7 5 5 4 6 4 6 1 3 1 3 = = = = 1 0 7 1 7 0 1 2 6 6 5 4 0 9 5 1 5 1 0 6 9 5 1

Esta es una manera correcta de multiplicar dado que 2765 = 102 27 + 65 y 4163 = 102 41 + 63, luego
2765 4163 = 104 (27 41) + 102 (27 63 + 65 41) + 65 63.

Carlos Contreras Bolton Dise no de Algoritmos

17/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

Se reduce una multiplicaci on de 4 cifras a cuatro multiplicaciones de 2 cifras, m as tres sumas y varios desplazamientos. Entonces, veamos un n umero m as grande:
1

Dividir X = 12345678 = xi 104 + xd , xi = 1234, xd = 5678 Y = 24680135 = yi 104 + yd , yi = 2468, yd = 0135 Combinar X Y = (xi 104 + xd ) (yi 104 + yd ) = xi yi 108 + (xi yd + xd yi ) 104 + xd yd

Carlos Contreras Bolton Dise no de Algoritmos

18/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

En general, n X = xi 10 2 + xd n Y = yi 10 2 + yd n n X Y = (xi 10 2 + xd ) (yi 10 2 + yd ) n = xi yi 10n + (xi yd + xd yi ) 10 2 + xd yd

Carlos Contreras Bolton Dise no de Algoritmos

19/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

Algorithm 4 Multiplica
Require: X , Y , n Ensure: z 1: if n es peque no then 2: return z X Y 3: else 4: Obtener xi , xd , yi , yd 5: z1 Multiplica(xi , yi , n/2) 6: z2 Multiplica(xi , yd , n/2) 7: z3 Multiplica(xd , yi , n/2) 8: z4 Multiplica(xd , yd , n/2) 9: aux suma(z2 , z3 ) 10: z1 desplaza izq(z1 , n) 11: aux desplaza izq(aux, n/2) 12: z suma(z1 , aux) 13: z suma(z , z4 ) 14: return z 15: end if

DIVIDIR

COMBINAR

Carlos Contreras Bolton Dise no de Algoritmos

20/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

Algorithm 5 Multiplica
Require: X , Y , n Ensure: z 1: if n es peque no {O(1)} then 2: return z X Y 3: else 4: Obtener xi , xd , yi , yd 5: z1 Multiplica(xi , yi , n/2) 6: z2 Multiplica(xi , yd , n/2) 7: z3 Multiplica(xd , yi , n/2) 8: z4 Multiplica(xd , yd , n/2) 9: aux suma(z2 , z3 ) 10: z1 desplaza izq(z1 , n) 11: aux desplaza izq(aux, n/2) 12: z suma(z1 , aux) 13: z suma(z , z4 ) 14: return z 15: end if

O(1) O(n) T (n/2) T (n/2) T (n/2) T (n/2) O(n) O(n) O(n) O(n) O(n) O(1)

Carlos Contreras Bolton Dise no de Algoritmos

21/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

Para analizar este algoritmo, consideramos la ecuaci on 3 de recurrencia: T (n) = 4T (n/2) + O(n) (3)

Como 4 > 21 , resulta que T (n) O(nlog2 4 ) = O(n2 ) Es decir, no hemos ganado nada sobre el algoritmo original, el que todos utilizamos en la pr actica El cuello de botella est a en el n umero de multiplicaciones de tama no n . 2 Para mejorar la eciencia debemos reducir el n umero de multiplicaciones necesario ...

Carlos Contreras Bolton Dise no de Algoritmos

22/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

r = (xi +xd )(yi +yd ) = xi yi +(xi yd +xd yi )+xd yd p = xi y i q = xd y d n X Y = p 10n + (r p q ) 10 2 + q Luego podemos realizar una multiplicaci on de tama no n a n partir de 3 multiplicaciones de tama no 2 .

Carlos Contreras Bolton Dise no de Algoritmos

23/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

Algorithm 6 Multiplica
Require: X , Y , n Ensure: z 1: if n es peque no then 2: return z X Y 3: else 4: Obtener xi , xd , yi , yd 5: s1 suma(xi , xd ) 6: s2 suma(yi , yd ) 7: p Multiplica(xi , yi , n/2) 8: q Multiplica(xd , yd , n/2) 9: r Multiplica(s1 , s2 , n/2) 10: aux suma(r, p, q ) 11: aux desplaza izq(aux, n) 12: p desplaza izq(p, n) 13: z suma(p, aux, q ) 14: return z 15: end if

DIVIDIR

COMBINAR

Carlos Contreras Bolton Dise no de Algoritmos

24/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

Algorithm 7 Multiplica
Require: X , Y , n Ensure: z 1: if n es peque no {O(1)} then 2: return z X Y 3: else 4: Obtener xi , xd , yi , yd 5: s1 suma(xi , xd ) 6: s2 suma(yi , yd ) 7: p Multiplica(xi , yi , n/2) 8: q Multiplica(xd , yd , n/2) 9: r Multiplica(s1 , s2 , n/2) 10: aux suma(r, p, q ) 11: aux desplaza izq(aux, n) 12: p desplaza izq(p, n) 13: z suma(p, aux, q ) 14: return z 15: end if

O(1) O(n) O(n) O(n) T (n/2) T (n/2) T (n/2) O(n) O(n) O(n) O(n) O(1)

Carlos Contreras Bolton Dise no de Algoritmos

25/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Multiplicaci on de n umeros grandes

Para analizar este algoritmo, consideramos la ecuaci on 4 de recurrencia: T (n) = 3T (n/2) + O(n) (4)

Como 3 > 21 , resulta que T (n) O(nlog2 3 ) = O(n1,585 ) Implementaci on 1 n2 0,1 ms 10 ms 1 seg 100 seg Implementaci on 2 n1,585 0,04 ms 1,48 ms 56,9 ms 2,19 seg
26/58

Operaciones n = 10 n = 100 n = 1000 n = 10000

Carlos Contreras Bolton Dise no de Algoritmos

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejemplo 2
Por tanto, este m etodo es de un orden de complejidad menor que el tradicional. Por qu e no se ense na entonces en las escuelas y se usa normalmente? Existen fundamentalmente dos razones:
1

Aunque es m as eciente, es mucho menos intuitivo que el m etodo cl asico. Las constantes de proporcionalidad que se obtienen en esta caso hacen que el nuevo m etodo sea m as eciente que el tradicional a partir de 500 bits [1], y los n umeros que normalmente multiplicamos a mano son, afortunadamente, menores de ese tama no.

Carlos Contreras Bolton Dise no de Algoritmos

27/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

B usqueda secuencial
Los algoritmos de b usqueda secuencial y binaria son 2 de los algoritmos m as usados para encontrar elementos en una estructura de datos. La b usqueda lineal probablemente es sencilla de implementar e intuitiva. B asicamente consiste en buscar de manera secuencial un elemento, es decir, preguntar si el elemento buscado es igual al primero, segundo, tercero y as sucesivamente hasta encontrar el deseado. Tiene una complejidad de O(n).

Carlos Contreras Bolton Dise no de Algoritmos

28/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Algoritmo de B usqueda secuencial

Algorithm 8 B usqueda Secuencial


Require: a: arreglo, n: largo del arreglo, x: valor buscado Ensure: boolean 1: for i 1 hasta n do 2: if ai = x then 3: return verdadero 4: end if 5: end for 6: return falso

Carlos Contreras Bolton Dise no de Algoritmos

29/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

B usqueda binaria
Uno de los requisitos antes de ejecutar la b usqueda binaria, es que el conjunto de elementos debe estar ordenado. Funciona de la siguiente forma:
Si x es igual al elemento medio, termina. Si no: Dividir el arreglo en dos subarreglos por la mitad. Si x es m as peque no que el elemento medio, elegimos el subarreglo izquierdo. Si x es mayor que el elemento medio, escogemos el subarreglo derecho. Conquistar: solucionar el subarreglo determinando si x est a en el subarreglo. A menos que el subarreglo sea lo suciente peque no, aplicar la recursi on para lograrlo. Combinar: Obtener la soluci on del arreglo a partir de la soluci on de los subarreglos.
Carlos Contreras Bolton Dise no de Algoritmos 30/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

B usqueda binaria
Algoritmo

Algorithm 9 B usqueda Binaria


Require: a: arreglo, i: posici on inicial, j : posici on nal, x: valor buscado Ensure: boolean 1: k (i + j )/2 2: if i > j then 3: return falso 4: else 5: if ak = x then 6: return verdadero 7: else 8: if x > ax then 9: return B usqueda Binaria(a, k + 1, j , x) 10: else 11: return B usqueda Binaria(a, i, k 1, x) 12: end if 13: end if 14: end if

Carlos Contreras Bolton Dise no de Algoritmos

31/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

B usqueda binaria
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

32/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

B usqueda binaria
Complejidad

Cada llamada genera una llamada recursiva a = 1. El tama no del subproblema es la mitad del problema original b = 2. Sin considerar la recurrencia el resto de operaciones son O(1) luego g (n) es O(1) = O(n0 ), (k = 0). Para analizar este algoritmo, consideramos la ecuaci on 5 de recurrencia: T (n) = T n +1 2 (5)

Entonces a = 1, b = 2 y k = 0. Por ello, a = bk y T (n) O(log n).


Carlos Contreras Bolton Dise no de Algoritmos 33/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort

Algoritmo de ordenaci on DyC: Consiste en dividir en dos partes el arreglo. Se ordena por separado cada una de esas partes y nalmente mezclar ambas partes, manteniendo el orden en un solo arreglo ordenado.
1 2 3

Dividir nuestro conjunto en dos mitades. Conquistar. Ordenar recursivamente cada mitad. Combinar las dos mitades ordenadas: O(n).

Carlos Contreras Bolton Dise no de Algoritmos

34/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

35/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort
Funcionamiento

C omo combinar ecientemente dos listas ordenadas? Usando un arreglo auxiliar y un n umero lineal de comparaciones: Controlar la posici on del elemento m as peque no en cada mitad. A nadir el m as peque no de los dos a un vector auxiliar. Repetir hasta que se hayan a nadido todos los elementos.

Mezcla optimizada: Inplace merge [5]. Cantidad constante de almacenamiento extra.


Carlos Contreras Bolton Dise no de Algoritmos 36/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort
Algoritmo

Algorithm 10 Mergesort Require: a: arreglo, i: posici on inicial, j : posici on nal


1: 2: 3: 4: 5: 6:

if (j i) > 0 then k (i + j )/2 Mergesort (a, i, k ) Mergesort (a, k + 1, j ) Mezcla (a, i, j ) end if

Carlos Contreras Bolton Dise no de Algoritmos

37/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

38/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

39/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

40/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

41/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

42/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

43/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

44/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Mergesort
Complejidad

Cada llamada genera dos llamadas recursivas a = 2. El tama no del subproblema es la mitad del problema original b = 2. Sin considerar la recurrencia la operaci on de mezcla toma 1 O(n) luego g (n) es O(n) = O(n ), (k = 1). Para analizar este algoritmo, consideramos la ecuaci on 6 de recurrencia: n +n 2 Entonces a = 2, b = 2 y k = 1. Por ello, a = bk y T (n) O(n log n). T (n) = 2T
Carlos Contreras Bolton Dise no de Algoritmos

(6)

45/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Quicksort
Es uno de los algoritmos m as ecientes para ordenar en un caso promedio (real). Al igual que MergeSort, Quicksort usa la estrategia DyC, por lo que es natural plantearlo como un procedimiento recursivo. Funciona de la siguiente manera: 1 Se toma un elemento arbitrario del vector, al que denominaremos pivote (p). 2 Se divide el vector de tal forma que todos los elementos a la izquierda del pivote sean menores que el, mientras que los que quedan a la derecha son mayores que el. 3 Ordenamos, por separado, las dos zonas delimitadas por el pivote.
Carlos Contreras Bolton Dise no de Algoritmos 46/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Quicksort
Algoritmo

Algorithm 11 Quicksort Require: a: arreglo, i: posici on izquierda, j : posici on derecha 1: if i < j then 2: pivote Partir(a, i, j ) 3: Quicksort (a, i, pivote 1) 4: Quicksort (a, pivote + 1, j ) 5: end if

Carlos Contreras Bolton Dise no de Algoritmos

47/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Obtenci on del Pivote


Mientras queden elementos mal colocados con respecto al pivote: Se recorre el vector, de izquierda a derecha, hasta encontrar un elemento situado en una posici on i tal que ai > p. Se recorre el vector, de derecha a izquierda, hasta encontrar otro elemento situado en una posici on j tal que aj < p. Se intercambian los elementos situados en las casillas i y j (de modo que, ahora, ai < p < aj ).

Carlos Contreras Bolton Dise no de Algoritmos

48/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Quicksort
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

49/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Quicksort
Algoritmo

Algorithm 12 Partir
Require: a, p, r Ensure: j 1: x ap 2: i p 1 3: j r + 1 4: while verdadero do 5: repeat 6: j j1 7: until aj > x 8: repeat 9: ii+1 10: until ai < x 11: if i < j then 12: Swap (a, i, j ) 13: else 14: return j 15: end if 16: end while Se escoge como pivote

Carlos Contreras Bolton Dise no de Algoritmos

50/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Quicksort
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

51/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Quicksort
Funcionamiento

Carlos Contreras Bolton Dise no de Algoritmos

52/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Quicksort
Complejidad

Cada llamada genera dos llamadas recursivas a = 2. El tama no del subproblema es la mitad del problema original b = 2. Sin considerar la recurrencia la operaci on de mezcla toma O(n) luego g (n) es O(n) = O(n1 ), (k = 1). Para analizar este algoritmo, consideramos la ecuaci on 7 de recurrencia: T (n) = 2T n +n 2 (7)

Entonces a = 2, b = 2 y k = 1. Por ello, a = bk y T (n) O(n log n).


Carlos Contreras Bolton Dise no de Algoritmos 53/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Comparaci on
Algoritmos de Ordenaci on

Carlos Contreras Bolton Dise no de Algoritmos

54/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Ejercicio

Dado un arreglo (a1 , . . . , n) de n elementos que se puedan comparar entre s , encuentre el m aximo y el m nimo. Utilizando un algoritmo iterativo y un algoritmo que utilice DyC. Calcular la complejidad de ambas. Cu al es mejor?

Carlos Contreras Bolton Dise no de Algoritmos

55/58

Algorithm 13 MinMax
Require: a: arreglo, inf : posici on inferior, sup: posici on suprior Ensure: min: valor m nimo, max: valor m aximo if (inf + 1) < sup then

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:

k (inf + sup)/2 [min1 , max1 ] MinMax (a, inf , k) [min2 , max2 ] MinMax (a, k + 1, sup) if min1 > min2 then min min2 else min min1 end if if max1 < max2 then max max2 else max max1 end if else if ainf > asup then min asup else min ainf end if if ainf < asup then max asup else max ainf end if end if

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Bibliograf a I
[1] A. Aho, J. Hopcroft, and J. Ullman. Estructuras de datos y algoritmos. Addison-Wesley Iberoamericana Espana, S.A., 1988. [2] T. Cormen, C. Leiserson, R. Rivest, and C. Stein. Introduction To Algorithms. MIT Press, 2001. [3] M. Heideman, D. Johnson, and C. Burrus. Gauss and the history of the fast fourier transform. ASSP Magazine, IEEE, 1(4):1421, 1984. [4] D. Knuth. The art of computer programming: Sorting and searching. The Art of Computer Programming. Addison-Wesley, 1998.
Carlos Contreras Bolton Dise no de Algoritmos 57/58

Introducci on Esquema de la t ecnica Eciencia de los algoritmos B usqueda Binaria Mergesort Quicksort Ejercicio

Bibliograf a II

[5] M. A. Kronrod. Optimal ordering algorithm without operational eld. Soviet Mathematics, 10:744746, 1969.

Carlos Contreras Bolton Dise no de Algoritmos

58/58