Sunteți pe pagina 1din 55

Anlisis y Diseo de Algoritmos

Dr. Ivo H. Pineda Torres


Facultad de Ciencias de la Computacin Benemrita Universidad Autnoma de Puebla

28 Mayo 1988

Orgullosamente BUAPo vs los Otros


Asume que tenemos una computadora A rpida(Que signica rapidez para ti?) y una computadora B lenta.
Se desea ordenar un milln de nmeros

Orgullosamente BUAPo vs los Otros


Asume que tenemos una computadora A rpida(Que signica rapidez para ti?) y una computadora B lenta.
Se desea ordenar un milln de nmeros Suponga que la computadora A ejecuta un mil millones de

instrucciones por segundo

Orgullosamente BUAPo vs los Otros


Asume que tenemos una computadora A rpida(Que signica rapidez para ti?) y una computadora B lenta.
Se desea ordenar un milln de nmeros Suponga que la computadora A ejecuta un mil millones de

instrucciones por segundo


Suponga que la computadora B ejecuta diez millones de

instrucciones por segundo

Orgullosamente BUAPo vs los Otros


Asume que tenemos una computadora A rpida(Que signica rapidez para ti?) y una computadora B lenta.
Se desea ordenar un milln de nmeros Suponga que la computadora A ejecuta un mil millones de

instrucciones por segundo


Suponga que la computadora B ejecuta diez millones de

instrucciones por segundo


Y pregunto cuantas veces es ms rpida la computadora A que la

B?

continuamos
Digamos que el mejor programador de la chuapep, o kakaztecas se

le ocurre un super programa que requiere 2n2 instrucciones para ordenar n nmeros y su jefe le regala la computadora A, decide utilizar le mtodo de las cartas inserta y ordena

continuamos
Digamos que el mejor programador de la chuapep, o kakaztecas se

le ocurre un super programa que requiere 2n2 instrucciones para ordenar n nmeros y su jefe le regala la computadora A, decide utilizar le mtodo de las cartas inserta y ordena
Y al distinguidsimo programador de la FCC, ferviente simpatizante

de #YoSoy132, su jefe le regala la computadora B y se pone a darle duro y se le ocurre un super programa con un compilador poco eciente y que requiere 50nlogn instrucciones para ordenar n nmeros, decide utilizar el mtodo de mezcla y ordena.

continuamos
Digamos que el mejor programador de la chuapep, o kakaztecas se

le ocurre un super programa que requiere 2n2 instrucciones para ordenar n nmeros y su jefe le regala la computadora A, decide utilizar le mtodo de las cartas inserta y ordena
Y al distinguidsimo programador de la FCC, ferviente simpatizante

de #YoSoy132, su jefe le regala la computadora B y se pone a darle duro y se le ocurre un super programa con un compilador poco eciente y que requiere 50nlogn instrucciones para ordenar n nmeros, decide utilizar el mtodo de mezcla y ordena.
Qu programa se ejecuta ms rpido???? Si usan la misma

cantidad de datos.

continuamos
Digamos que el mejor programador de la chuapep, o kakaztecas se

le ocurre un super programa que requiere 2n2 instrucciones para ordenar n nmeros y su jefe le regala la computadora A, decide utilizar le mtodo de las cartas inserta y ordena
Y al distinguidsimo programador de la FCC, ferviente simpatizante

de #YoSoy132, su jefe le regala la computadora B y se pone a darle duro y se le ocurre un super programa con un compilador poco eciente y que requiere 50nlogn instrucciones para ordenar n nmeros, decide utilizar el mtodo de mezcla y ordena.
Qu programa se ejecuta ms rpido???? Si usan la misma

cantidad de datos.

continuamos
Digamos que el mejor programador de la chuapep, o kakaztecas se

le ocurre un super programa que requiere 2n2 instrucciones para ordenar n nmeros y su jefe le regala la computadora A, decide utilizar le mtodo de las cartas inserta y ordena
Y al distinguidsimo programador de la FCC, ferviente simpatizante

de #YoSoy132, su jefe le regala la computadora B y se pone a darle duro y se le ocurre un super programa con un compilador poco eciente y que requiere 50nlogn instrucciones para ordenar n nmeros, decide utilizar el mtodo de mezcla y ordena.
Qu programa se ejecuta ms rpido???? Si usan la misma

cantidad de datos. Conclusiones:

continuamos
Digamos que el mejor programador de la chuapep, o kakaztecas se

le ocurre un super programa que requiere 2n2 instrucciones para ordenar n nmeros y su jefe le regala la computadora A, decide utilizar le mtodo de las cartas inserta y ordena
Y al distinguidsimo programador de la FCC, ferviente simpatizante

de #YoSoy132, su jefe le regala la computadora B y se pone a darle duro y se le ocurre un super programa con un compilador poco eciente y que requiere 50nlogn instrucciones para ordenar n nmeros, decide utilizar el mtodo de mezcla y ordena.
Qu programa se ejecuta ms rpido???? Si usan la misma

cantidad de datos. Conclusiones: La cantidad de datos inuy????

Captulo II
Ordenar por Insercin (Insertion Sort)

4 of 12 /IMAGENES/EscudoNegro

Algoritmo
Entrada: Secuencia de n nmeros (a1 , a2 , a3 , ..., an ). Salida: Una permutacin de salida (a1 , a2 , a3 , ..., an ), donde se cumple que (a1 a2 , a3 , ..., an ).

5 of 12 /IMAGENES/EscudoNegro

operacin
Arreglo A=(5,2,4,6,1,3)

6 of 12 /IMAGENES/EscudoNegro

anlisis del cdigo

7 of 12 /IMAGENES/EscudoNegro

anlisis del cdigo. cont.


Note que se usa in ciclo invariante El ndice j indica la carta que se se inserta. Al inicio de cada iteracin el ciclo for esta indexado a j y el arreglo

tiene A[1..j 1].


Los ciclos invariantes tienen tres caractersticas Inicializacin Se cumple la condicin en la primera iteracin Mantenimiento En el caso de ser verdadero antes de la iteracin este valor se mantiene antes de la siguiente iteracin.(ciclo invariante) Terminacin Cuando el ciclo termina , la condicion de invarianza nos garantiza la propiedad de un algoritmo que debe ser correcto.

8 of 12

anlisis del cdigo, cont.


Inicializacin Cuando j=2, el arreglo tiene A[1..j 1], por lo que

tiene un solo elemento.


Mantenimiento Mostraremos que esta propiedad se mantiene,

A[1..j 1], A[1..j 2], A[1..j 3] esto se garantiza con el ciclo for (lineas de la 4 a la 7 y en la lnea 8 es cuando se inserta. No analizaremos el caso del ciclo while.
Terminacin cuando j excede a n j = n + 1 y en este caso el

arreglo est ordenado.

9 of 12 /IMAGENES/EscudoNegro

Anlisis de nuestro caso

Depender el tamao del arreglo para determinar si se ejecutar de manera rpida?

10 of 12

Anlisis de nuestro caso

Depender el tamao del arreglo para determinar si se ejecutar de manera rpida? Vamos al pizarrn.

10 of 12

Entonces

11 of 12

Anlisis
Recuerda que el tiempo que toma este algortimo es de orden n2

12 of 12

Anlisis
Recuerda que el tiempo que toma este algortimo es de orden n2 En trminos de entrada y tiempo , Cul consideras que es el peor caso para nuestro algoritmo?

12 of 12

Anlisis
Recuerda que el tiempo que toma este algortimo es de orden n2 En trminos de entrada y tiempo , Cul consideras que es el peor caso para nuestro algoritmo? Cuando las cartas estn completamente desordenadas

12 of 12

Anlisis
Recuerda que el tiempo que toma este algortimo es de orden n2 En trminos de entrada y tiempo , Cul consideras que es el peor caso para nuestro algoritmo? Cuando las cartas estn completamente desordenadas Cul ser el caso promedio ?

12 of 12

Anlisis
Recuerda que el tiempo que toma este algortimo es de orden n2 En trminos de entrada y tiempo , Cul consideras que es el peor caso para nuestro algoritmo? Cuando las cartas estn completamente desordenadas Cul ser el caso promedio ? Cuando las cartas medianamente desordenadas.

12 of 12

Anlisis
Recuerda que el tiempo que toma este algortimo es de orden n2 En trminos de entrada y tiempo , Cul consideras que es el peor caso para nuestro algoritmo? Cuando las cartas estn completamente desordenadas Cul ser el caso promedio ? Cuando las cartas medianamente desordenadas. Cul es el mejor caso?

12 of 12

Anlisis
Recuerda que el tiempo que toma este algortimo es de orden n2 En trminos de entrada y tiempo , Cul consideras que es el peor caso para nuestro algoritmo? Cuando las cartas estn completamente desordenadas Cul ser el caso promedio ? Cuando las cartas medianamente desordenadas. Cul es el mejor caso? Todas las cartas estn ordenadas.

12 of 12

Anlisis del peor caso


El peor caso en el tiempo de ejecucin constituye una cota superior

en el tiempo de ejecucin para cualquier entrada.


Para algunos algoritmos, el peor caso ocurre con bastante

frecuencia. Buscar en una base de datos elpeor caso ocurre cuando se tiene que buscar en la base completa por un objeto que no est.
El caso promedio por lo general es tan malo como le peor caso.

suponga cuando se tiene que buscar en una mitad del arreglo, se mantiene el trmino cuadrtico.

13 of 12

Diseo
Diseo de Algoritmos Para el caso del algoritmo Ordenamiento por insercin utilizamos un tcnica de diseo incremental. Recurdese que el proceso es tomar una carta e insertarla en su posicin.

14 of 12

Mezcla y Ordena
Como no me caben todas las cartas en la mano entonces: Asumimos que un problema se puede dividir en varios subproblemas que son similares al original pero de menor tamao. Los resuelve cada uno para al nal combinar las soluciones y crear la solucin del problema. Veamos este video merge sort, bscalo en YouTube Algorithms #4 Merge Sort

15 of 12

Pasos Divide y Vencers


DIVIDE: El problema en subproblemas. CONQUISTA: Los subproblemas resolvindolos recursivamente. Si el tamao de los subroblemas son sucientemente pequeos, resulvelos de manera directa. COMBINA Las soluciones de los subproblemas en la solucin del problema original.

16 of 12

Mezcla y Ordena
Como concibes ordenar siguiendo est idea?

17 of 12

Mezcla y Ordena
Como concibes ordenar siguiendo est idea? Disearemos un algoritmo llamado Mezcla y Ordena el cual podramos decir que sigue este paradigma, veamos como podemos denirlo:

17 of 12

Mezcla y Ordena
Como concibes ordenar siguiendo est idea? Disearemos un algoritmo llamado Mezcla y Ordena el cual podramos decir que sigue este paradigma, veamos como podemos denirlo: DIVIDE: Divide una secuencia de n elementos en dos subsecuencias de n/2 elementos.

17 of 12

Mezcla y Ordena
Como concibes ordenar siguiendo est idea? Disearemos un algoritmo llamado Mezcla y Ordena el cual podramos decir que sigue este paradigma, veamos como podemos denirlo: DIVIDE: Divide una secuencia de n elementos en dos subsecuencias de n/2 elementos. CONQUISTA: Ordena las dos subsecuencias de manera recursiva utilizando Mezcla y Ordena.

17 of 12

Mezcla y Ordena
Como concibes ordenar siguiendo est idea? Disearemos un algoritmo llamado Mezcla y Ordena el cual podramos decir que sigue este paradigma, veamos como podemos denirlo: DIVIDE: Divide una secuencia de n elementos en dos subsecuencias de n/2 elementos. CONQUISTA: Ordena las dos subsecuencias de manera recursiva utilizando Mezcla y Ordena. COMBINA Las subsecuencias ordenadas deben mezclarse(procedimiento de mezcla) para obtener la respuesta deseada.

17 of 12

Mezcla
El procedimiento de Mezcla va a mezclar las dos secuencias ordenadas en el paso de combinar. Este procedimiento auxiliar deber ser invocado con los siguiente parmetros Mezcla(A,p,q,r) donde:
A es el arreglo. p,q y r son ndices del arreglo de manera que cumplan p q < r .

Los subarreglos son A[p ..q ], A[q + 1..r ] los cuales se ordenan por separado.
Producen un arreglo de salida A[p ..r ].

18 of 12

Seudocdigo Mezcla

Colocamos un centinela al nal de la pila de cartas paras asegurar llegar al nal y que es el mayor valor.
19 of 12

Detalle Mezcla

20 of 12

Detalle Mezcla

21 of 12

Seudocdigo de Mezcla y ordena

22 of 12

anlisis del algoritmo


Cuando un algoritmo tiene una llamada recursiva a l mismo es usual describirlo a travs de una ecuacin de recurrencia la cual describir de manera general el tiempo de ejecucin de unb algoritmo para una entrada dada.

23 of 12

Obtengamos su expresin de recurrencia


DIVIDE: Divide una secuencia de n elementos en dos subsecuencias de n/2 elementos. CONQUISTA: Ordena las dos subsecuencias de manera recursiva utilizando Mezcla y Ordena. COMBINA Las subsecuencias ordenadas deben mezclarse(procedimiento de mezcla) para obtener la respuesta deseada. T (n ) = (1) si n c , aT (n/b ) + D (n) + C (n) otro caso

24 of 12

Anlisis de Mezcla y Ordena


DIVIDE: Divide consiste en obtener el punto medio del subarreglo el cual toma un tiempo constante. D (n) = (1) CONQUISTA: Resuelve de manera recursiva los dos subproblemas de tamao n/2 el cual contribuye con un tiempo equivalente a 2T (n/2). COMBINA El procedimiento de mezcla sobre un elmento del subarreglo toma un tiempo (n) de manera que el tiempo de combinacin ser C (n) = (n) Nuestra ecuacin de recurrencia queda erscrita de la siguiente manera: T (n ) = (1) 2T (n/2) + D (n) + C (n) si n = 1, Si n>1

Donde c es constante. como resolver esta ecuacin? R: Usaremos un rbol de recurrencia.


25 of 12

Arbol de Recursin

26 of 12

Anlisis del Arbol de Recursin


El nodo raz del rbol tiene uin costo de cn

27 of 12

Anlisis del Arbol de Recursin


El nodo raz del rbol tiene uin costo de cn El siguiente nivel tiene un costo de c (n/2) + c (n/2) = cn

27 of 12

Anlisis del Arbol de Recursin


El nodo raz del rbol tiene uin costo de cn El siguiente nivel tiene un costo de c (n/2) + c (n/2) = cn El nivel siguiente c (n/4) + c (n/4) + c (n/4) + c (n/4) = cn , asi

sigue.

27 of 12

Anlisis del Arbol de Recursin


El nodo raz del rbol tiene uin costo de cn El siguiente nivel tiene un costo de c (n/2) + c (n/2) = cn El nivel siguiente c (n/4) + c (n/4) + c (n/4) + c (n/4) = cn , asi

sigue.
El nivel i por debajo de la raz tendr 2i nodos y cada uno

contribuyendo con c (n/2i ), de manera que el nivel i debajo d ela raz tiene un costo de 2i c (n/2i ) = cn.

27 of 12

Anlisis del Arbol de Recursin


El nodo raz del rbol tiene uin costo de cn El siguiente nivel tiene un costo de c (n/2) + c (n/2) = cn El nivel siguiente c (n/4) + c (n/4) + c (n/4) + c (n/4) = cn , asi

sigue.
El nivel i por debajo de la raz tendr 2i nodos y cada uno

contribuyendo con c (n/2i ), de manera que el nivel i debajo d ela raz tiene un costo de 2i c (n/2i ) = cn.
El ltimo nivel tendr n nodos y cada uno contribuye con un costo

c para un costo totla de cn.

27 of 12

Anlisis del Arbol de Recursin


El nodo raz del rbol tiene uin costo de cn El siguiente nivel tiene un costo de c (n/2) + c (n/2) = cn El nivel siguiente c (n/4) + c (n/4) + c (n/4) + c (n/4) = cn , asi

sigue.
El nivel i por debajo de la raz tendr 2i nodos y cada uno

contribuyendo con c (n/2i ), de manera que el nivel i debajo d ela raz tiene un costo de 2i c (n/2i ) = cn.
El ltimo nivel tendr n nodos y cada uno contribuye con un costo

c para un costo totla de cn.


el nmero de niveles en el rbol est dado por 2i = n donde n es el

nmero de hojas del nivel y corresponde al tamao de la entrada, ms el primer nivel o raz por lo que tendremos logn + 1.
27 of 12

Anlisis del Arbol de Recursin cont.


el caso base se logra con n = 1, por lo que log (1) = 0 lo que

conrma que el nmero de niveles es log (n) + 1.

28 of 12

Anlisis del Arbol de Recursin cont.


el caso base se logra con n = 1, por lo que log (1) = 0 lo que

conrma que el nmero de niveles es log (n) + 1.


Asumimos (como hiptesis) que el nmero de niveles de un rbol

de recursin con 2i hojas est dado por log 2i + 1 = i + 1.

28 of 12

Anlisis del Arbol de Recursin cont.


el caso base se logra con n = 1, por lo que log (1) = 0 lo que

conrma que el nmero de niveles es log (n) + 1.


Asumimos (como hiptesis) que el nmero de niveles de un rbol

de recursin con 2i hojas est dado por log 2i + 1 = i + 1.


tambien asumimos que el tamao de la entrada es potencia exacta

de 2.

28 of 12

Anlisis del Arbol de Recursin cont.


el caso base se logra con n = 1, por lo que log (1) = 0 lo que

conrma que el nmero de niveles es log (n) + 1.


Asumimos (como hiptesis) que el nmero de niveles de un rbol

de recursin con 2i hojas est dado por log 2i + 1 = i + 1.


tambien asumimos que el tamao de la entrada es potencia exacta

de 2.
De acuerdo a nuestro rbol de recurrencia tenemos que el costo de

cada nivel es cn y tenemos logn + 1 niveles ms el nivel nal esto nos da un costo de cn(logn + 1) = cnlogn + cn, asumimos que c = 1y por inspeccin comprobamios que el orden lo determina el trmino (nlogn)

28 of 12

S-ar putea să vă placă și