Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8....

33
Introducci´ on a la algoritmia II Jos´ e de Jes´ us Lavalle Mart´ ınez Benem´ erita Universidad Aut´onoma de Puebla Facultad de Ciencias de la Computaci´ on Maestr´ ıa en Ciencias de la Computaci´ on An´ alisis y Dise˜ no de Algoritmos MCOM 20300 Oto˜ no 2020 Jos´ e de Jes´ us Lavalle Mart´ ınez (FCC-BUAP) Introducci´on a la algoritmia II Oto˜ no 2020 1 / 14

Transcript of Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8....

Page 1: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Introduccion a la algoritmia II

Jose de Jesus Lavalle Martınez

Benemerita Universidad Autonoma de PueblaFacultad de Ciencias de la ComputacionMaestrıa en Ciencias de la Computacion

Analisis y Diseno de AlgoritmosMCOM 20300

Otono 2020

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 1 / 14

Page 2: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Contenido

1 La importancia de la eficiencia

2 Un algoritmo lineal para ordenamiento

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 2 / 14

Page 3: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

La importancia de la eficiencia

Ya que las computadoras se hacen cada vez mas y mas rapidas,pudiera parecer que no vale la pena gastar nuestro tiempo tratandode disenar algoritmos mas eficientes.

¿No serıa mas facil esperar a la siguiente generacion decomputadoras?

Los principios establecidos anteriormente muestran que esto no esverdad.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 3 / 14

Page 4: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

La importancia de la eficiencia

Ya que las computadoras se hacen cada vez mas y mas rapidas,pudiera parecer que no vale la pena gastar nuestro tiempo tratandode disenar algoritmos mas eficientes.

¿No serıa mas facil esperar a la siguiente generacion decomputadoras?

Los principios establecidos anteriormente muestran que esto no esverdad.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 3 / 14

Page 5: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

La importancia de la eficiencia

Ya que las computadoras se hacen cada vez mas y mas rapidas,pudiera parecer que no vale la pena gastar nuestro tiempo tratandode disenar algoritmos mas eficientes.

¿No serıa mas facil esperar a la siguiente generacion decomputadoras?

Los principios establecidos anteriormente muestran que esto no esverdad.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 3 / 14

Page 6: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia I

Ejemplo 1

Suponga que para solucionar un problema particular tiene disponible unalgoritmo exponencial y una computadora que puede correr este algoritmosobre ejemplares de tamano n en 10−4 × 2n segundos.

n 10−4 × 2n seg

10 10−4 × 210 seg = 0.1024 seg20 10−4 × 220 seg = 104.86 seg30 10−4 × 230 seg = 107,374.18 seg

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 4 / 14

Page 7: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia I

Ejemplo 1

Suponga que para solucionar un problema particular tiene disponible unalgoritmo exponencial y una computadora que puede correr este algoritmosobre ejemplares de tamano n en 10−4 × 2n segundos.

n 10−4 × 2n seg

10 10−4 × 210 seg = 0.1024 seg20 10−4 × 220 seg = 104.86 seg30 10−4 × 230 seg = 107,374.18 seg

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 4 / 14

Page 8: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia II

Ejemplo 2

Suponiendo que se pudiera ejecutar una computadora sin interrupcion ysin errores por una ano completo. ¿Que tamano de ejemplar se puederesolver en un ano?

Solucion:10−4 × 2n seg = 86400× 365 seg

2n = 104 × 86400× 365

n = log2(104 × 86400× 365)

n = 38.19820

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 5 / 14

Page 9: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia II

Ejemplo 2

Suponiendo que se pudiera ejecutar una computadora sin interrupcion ysin errores por una ano completo. ¿Que tamano de ejemplar se puederesolver en un ano?

Solucion:10−4 × 2n seg = 86400× 365 seg

2n = 104 × 86400× 365

n = log2(104 × 86400× 365)

n = 38.19820

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 5 / 14

Page 10: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia II

Ejemplo 2

Suponiendo que se pudiera ejecutar una computadora sin interrupcion ysin errores por una ano completo. ¿Que tamano de ejemplar se puederesolver en un ano?

Solucion:10−4 × 2n seg = 86400× 365 seg

2n = 104 × 86400× 365

n = log2(104 × 86400× 365)

n = 38.19820

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 5 / 14

Page 11: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia II

Ejemplo 2

Suponiendo que se pudiera ejecutar una computadora sin interrupcion ysin errores por una ano completo. ¿Que tamano de ejemplar se puederesolver en un ano?

Solucion:10−4 × 2n seg = 86400× 365 seg

2n = 104 × 86400× 365

n = log2(104 × 86400× 365)

n = 38.19820

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 5 / 14

Page 12: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia II

Ejemplo 2

Suponiendo que se pudiera ejecutar una computadora sin interrupcion ysin errores por una ano completo. ¿Que tamano de ejemplar se puederesolver en un ano?

Solucion:10−4 × 2n seg = 86400× 365 seg

2n = 104 × 86400× 365

n = log2(104 × 86400× 365)

n = 38.19820

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 5 / 14

Page 13: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia III

Ejemplo 3

Suponga que necesita resolver ejemplares mas grandes que esto y quetiene el dinero suficiente para comprar una computadora nueva un cientode veces mas rapida que la primera. ¿Que tamano de ejemplar se puederesolver en un ano con esta maquina 100 veces mas rapida?

Solucion:

10−4 × 2n seg−−− t seg

102t′ −−− t seg

102t′ =t× 10−4 × 2n seg2

t seg

102t′ = 10−4 × 2n seg

t′ = 10−2 × 10−4 × 2n seg

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 6 / 14

Page 14: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia III

Ejemplo 3

Suponga que necesita resolver ejemplares mas grandes que esto y quetiene el dinero suficiente para comprar una computadora nueva un cientode veces mas rapida que la primera. ¿Que tamano de ejemplar se puederesolver en un ano con esta maquina 100 veces mas rapida?

Solucion:

10−4 × 2n seg−−− t seg

102t′ −−− t seg

102t′ =t× 10−4 × 2n seg2

t seg

102t′ = 10−4 × 2n seg

t′ = 10−2 × 10−4 × 2n seg

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 6 / 14

Page 15: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia III

Ejemplo 3

Suponga que necesita resolver ejemplares mas grandes que esto y quetiene el dinero suficiente para comprar una computadora nueva un cientode veces mas rapida que la primera. ¿Que tamano de ejemplar se puederesolver en un ano con esta maquina 100 veces mas rapida?

Solucion:

10−4 × 2n seg−−− t seg

102t′ −−− t seg

102t′ =t× 10−4 × 2n seg2

t seg

102t′ = 10−4 × 2n seg

t′ = 10−2 × 10−4 × 2n seg

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 6 / 14

Page 16: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia III

Ejemplo 3

Suponga que necesita resolver ejemplares mas grandes que esto y quetiene el dinero suficiente para comprar una computadora nueva un cientode veces mas rapida que la primera. ¿Que tamano de ejemplar se puederesolver en un ano con esta maquina 100 veces mas rapida?

Solucion:

10−4 × 2n seg−−− t seg

102t′ −−− t seg

102t′ =t× 10−4 × 2n seg2

t seg

102t′ = 10−4 × 2n seg

t′ = 10−2 × 10−4 × 2n seg

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 6 / 14

Page 17: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia III

Ejemplo 3

Suponga que necesita resolver ejemplares mas grandes que esto y quetiene el dinero suficiente para comprar una computadora nueva un cientode veces mas rapida que la primera. ¿Que tamano de ejemplar se puederesolver en un ano con esta maquina 100 veces mas rapida?

Solucion:

10−4 × 2n seg−−− t seg

102t′ −−− t seg

102t′ =t× 10−4 × 2n seg2

t seg

102t′ = 10−4 × 2n seg

t′ = 10−2 × 10−4 × 2n segJose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 6 / 14

Page 18: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia IV

Procedemos como al inicio del Ejemplo 2.

10−2 × 10−4 × 2n seg = 86400× 365 seg

2n = 102 × 104 × 86400× 365

n = log2(102 ×

na︷ ︸︸ ︷104 × 86400× 365)

n = 44.84206

Con la nueva computadora a lo mas resolveriamos ejemplares de tamano

n = log2 100 + na < 7 + na

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 7 / 14

Page 19: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia IV

Procedemos como al inicio del Ejemplo 2.

10−2 × 10−4 × 2n seg = 86400× 365 seg

2n = 102 × 104 × 86400× 365

n = log2(102 ×

na︷ ︸︸ ︷104 × 86400× 365)

n = 44.84206

Con la nueva computadora a lo mas resolveriamos ejemplares de tamano

n = log2 100 + na < 7 + na

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 7 / 14

Page 20: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia IV

Procedemos como al inicio del Ejemplo 2.

10−2 × 10−4 × 2n seg = 86400× 365 seg

2n = 102 × 104 × 86400× 365

n = log2(102 ×

na︷ ︸︸ ︷104 × 86400× 365)

n = 44.84206

Con la nueva computadora a lo mas resolveriamos ejemplares de tamano

n = log2 100 + na < 7 + na

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 7 / 14

Page 21: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia IV

Procedemos como al inicio del Ejemplo 2.

10−2 × 10−4 × 2n seg = 86400× 365 seg

2n = 102 × 104 × 86400× 365

n = log2(102 ×

na︷ ︸︸ ︷104 × 86400× 365)

n = 44.84206

Con la nueva computadora a lo mas resolveriamos ejemplares de tamano

n = log2 100 + na < 7 + na

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 7 / 14

Page 22: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia IV

Procedemos como al inicio del Ejemplo 2.

10−2 × 10−4 × 2n seg = 86400× 365 seg

2n = 102 × 104 × 86400× 365

n = log2(102 ×

na︷ ︸︸ ︷104 × 86400× 365)

n = 44.84206

Con la nueva computadora a lo mas resolveriamos ejemplares de tamano

n = log2 100 + na < 7 + na

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 7 / 14

Page 23: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia IV

Procedemos como al inicio del Ejemplo 2.

10−2 × 10−4 × 2n seg = 86400× 365 seg

2n = 102 × 104 × 86400× 365

n = log2(102 ×

na︷ ︸︸ ︷104 × 86400× 365)

n = 44.84206

Con la nueva computadora a lo mas resolveriamos ejemplares de tamano

n = log2 100 + na < 7 + na

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 7 / 14

Page 24: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia V

Ejemplo 4

Suponga que mejor decide invertir en algoritmia y que habiendogastado la misma cantidad de dinero, ha conseguido un algoritmocubico para solucionar el problema.

Imagine por ejemplo, que usando la primera maquina con el nuevoalgoritmo se pude resolver un ejemplar de tamano n en 10−2 × n3

segundos.

n 10−2 × n3 seg

10 10−2 × 103 seg = 10 seg20 10−2 × 203 seg = 80 seg30 10−2 × 303 seg = 270 seg

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 8 / 14

Page 25: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia V

Ejemplo 4

Suponga que mejor decide invertir en algoritmia y que habiendogastado la misma cantidad de dinero, ha conseguido un algoritmocubico para solucionar el problema.

Imagine por ejemplo, que usando la primera maquina con el nuevoalgoritmo se pude resolver un ejemplar de tamano n en 10−2 × n3

segundos.

n 10−2 × n3 seg

10 10−2 × 103 seg = 10 seg20 10−2 × 203 seg = 80 seg30 10−2 × 303 seg = 270 seg

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 8 / 14

Page 26: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejemplo de la importancia de la eficiencia VI

Ejemplo 5

¿Que tamano de ejemplar se puede resolver con el algoritmo cubico delEjemplo 4 en un dıa?

Solucion:10−2 × n3 seg = 86400 seg

n3 = 102 × 86400

n = (102 × 86400)13

n = 205.1971

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 9 / 14

Page 27: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejercicios sobre la importancia de la eficiencia I

1 ¿Que tamano de ejemplar se puede resolver con el algoritmo cubicodel Ejemplo 4 en un ano?

2 Demuestre que si puede hacer uso del nuevo algoritmo y de lamaquina 100 veces mas rapida, entonces podra resolver ejemplarescuatro o cinco veces mas grandes que con solo el nuevo algoritmo, enla misma cantidad de tiempo, de el factor exacto.

3 Suponga que mide el desempeno de un programa, quizas usandoalguna clase de traza en tiempo de ejecucion, luego optimiza laspartes muy usadas del codigo. No obstante se asegura de no cambiarel algoritmo subyacente. ¿Que esperarıa obtener: (a) una ganancia eneficiencia mediante un factor constante, o (b) una ganancia eneficiencia que es proporcionalmente mayor conforme el tamano delejemplar aumenta? Justifique su respuesta.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 10 / 14

Page 28: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejercicios sobre la importancia de la eficiencia II

4 Un algoritmo de ordenamiento consume 1 segundo para ordenar 1000artıculos en su computadora local.¿Cuanto consumirıa para ordenar10000 artıculos si (a) cree que el algoritmo consume tiempoaproximadamente proporcional a n2 y (b) cree que el algoritmoconsume tiempo aproximadamente proporcional a n log n?

5 Dos algoritmos consumen respectivamente n2 dıas y 2n segundos pararesolver un ejemplar de tamano n. ¿Cual es el tamano del ejemplarmas pequeno para el cual el primer algoritmo supera al segundo?¿Aproximadamente cuanto tiempo consumirıa dicho ejemplar en serresuelto?

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 11 / 14

Page 29: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Un algoritmo lineal para ordenamiento

Se puede demostrar que ningun algoritmo de ordenamiento, quetrabaje comparando los elementos a ser ordenados puede ser masrapido que el orden de n log n.

No obstante, se pueden encontrar otros algoritmos de ordenamientomas eficientes para casos muy especiales.

Suponga por ejemplo que los elementos a ordenar son enteros que sesabe estan en el rango de 1 a 10000. Entonces el siguiente algoritmopuede usarse.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 12 / 14

Page 30: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Un algoritmo lineal para ordenamiento

Se puede demostrar que ningun algoritmo de ordenamiento, quetrabaje comparando los elementos a ser ordenados puede ser masrapido que el orden de n log n.

No obstante, se pueden encontrar otros algoritmos de ordenamientomas eficientes para casos muy especiales.

Suponga por ejemplo que los elementos a ordenar son enteros que sesabe estan en el rango de 1 a 10000. Entonces el siguiente algoritmopuede usarse.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 12 / 14

Page 31: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Un algoritmo lineal para ordenamiento

Se puede demostrar que ningun algoritmo de ordenamiento, quetrabaje comparando los elementos a ser ordenados puede ser masrapido que el orden de n log n.

No obstante, se pueden encontrar otros algoritmos de ordenamientomas eficientes para casos muy especiales.

Suponga por ejemplo que los elementos a ordenar son enteros que sesabe estan en el rango de 1 a 10000. Entonces el siguiente algoritmopuede usarse.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 12 / 14

Page 32: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Un algoritmo lineal para ordenamiento

procedure Casillas(T [1 . . . n])1 array U [1 . . . 10000]2 for k ← 1 to 100003 do U [k]← 04 for i← 1 to n5 do k ← T [i]6 U [k]← U [k] + 17 i← 08 for k ← 1 to 100009 do while U [k] 6= 0

10 do i← i+ 111 T [i]← k12 U [k]← U [k]− 1

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 13 / 14

Page 33: Introducción a la algoritmia IIaleteya.cs.buap.mx/~jlavalle/ada/3 Introduction to... · 2020. 8. 24. · Introduccion a la algoritmia II Jos e de Jesus Lavalle Mart nez Benem erita

Ejercicios sobre el algoritmo Casillas

6 Analice el funcionamiento del algoritmo.

7 Explique su funcionamiento.

8 Implementelo en python.

9 Para probarlo genere aleatoriamente numeros entre 1 y 10000.

10 Muestre que ordenamiento por Casillas consume un tiempo en elorden de n para ordenar n elementos que estan dentro de las cotas.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Introduccion a la algoritmia II Otono 2020 14 / 14