Download - Curso de Nivelación de Algoritmos - Clase 3
![Page 1: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/1.jpg)
BúsquedasComplejidad
Ordenamiento
Curso de Nivelación de AlgoritmosClase 3
Lic. Ernesto [email protected]
Maestría y Carrera de Especialización en Explotación de Datos y Descubrimientode Conocimiento
26 de marzo de 2008
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 2: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/2.jpg)
BúsquedasComplejidad
Ordenamiento
Búsquedas
EjemploDecir si un número dado se encuentra en una lista de números.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 3: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/3.jpg)
BúsquedasComplejidad
Ordenamiento
Búsquedas
EjemploDecir si un número dado se encuentra en una lista ordenada denúmeros.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 4: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/4.jpg)
BúsquedasComplejidad
Ordenamiento
Búsquedas
Ejemplo¿Conocen el juego de adivinen un número?
I El jugador A piensa un número en un rango.I El jugador B intenta adivinarlo.I El jugador A solo puede responder mayor, menor o si acertó.I Después rotan los papeles y gana quién hace menos preguntas.
Elegir una estrategia para jugar.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 5: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/5.jpg)
BúsquedasComplejidad
Ordenamiento
Búsquedas
EjemploDibujen esa estrategia con el esquema que se sientan cómodos,para el rango 1..15.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 6: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/6.jpg)
BúsquedasComplejidad
Ordenamiento
Búsquedas
¿En cuántos pasos se resuelve?¿Qué relación tiene con el número 15?
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 7: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/7.jpg)
BúsquedasComplejidad
Ordenamiento
Búsquedas
EjemploAhora dibujen esa estrategia para el rango 1..7 ∪ 101..107.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 8: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/8.jpg)
BúsquedasComplejidad
Ordenamiento
Búsquedas
Es posible adivinar cualquier número como máximo en:
log2(n)
de pasos. . .
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 9: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/9.jpg)
BúsquedasComplejidad
Ordenamiento
Búsquedas
I Esta estructura es bien conocida. Se llama Árbol Binario deBúsqueda.
I Es un tipo especial de árbol.I Permite realizar búsquedas en tiempo logarítmico (de estar
balanceado).I Su regla de construcción es: los elementos de la rama izquierda
son menores a los de la rama derecha.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 10: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/10.jpg)
BúsquedasComplejidad
Ordenamiento
Búsquedas
Ejemplo
I ¿Recuerdan las agendas no-electrónicas?El acceso es en 2 pasos:
I Primero encuentro la letra inicial.I Y después busco de manera secuencial.
I Dibujen el diagrama de acceso a los registros.I Calculen el esfuerzo en encontrar un registro.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 11: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/11.jpg)
BúsquedasComplejidad
Ordenamiento
Búsquedas y Complejidad
I Podemos decir que realizar una búsqueda en una listadesordenada se realiza en tiempo lineal.
I Una búsqueda en una lista ordenada se realiza en tiempologarítmico.
I Una búsqueda en una lista semi-ordenada, como una agendase realiza entre esos dos tiempos.
I Podemos categorizar a los problemas según su esfuerzo deresolución.
Esa es la idea de complejidad.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 12: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/12.jpg)
BúsquedasComplejidad
Ordenamiento
Complejidad
Ejemplo
I Piensen otras maneras de medir el esfuerzo de resolución.I Calcular la complejidad en función de la cantidad de datos de
entrada, para los ejemplos de la primera y segunda clase.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 13: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/13.jpg)
BúsquedasComplejidad
Ordenamiento
Ordenamiento
I El proceso de clasificación u ordenamiento de una lista deobjetos es un proceso fundamental en la computación.
I Existen variados métodos de ordenamiento cada unoespecialmente diseñado para diferentes datos de entrada
EjemploPiensen algún método de ordenamiento.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 14: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/14.jpg)
BúsquedasComplejidad
Ordenamiento
Ordenamiento
# Algoritmo de selección>>> def seleccion (x):
a = list (x) #lista nueva a partir de xi = 0while i < len(a)-2: #selecciona el menor de entre a[i]..a[n]
j = i + 1indicemenor = iclavemenor = a[i]
while j < len(a):if a[j] < clavemenor:
clavemenor = a[j]indicemenor = j
j = j + 1
a[i], a[indicemenor] = a[indicemenor], a[i] #swap!i = i + 1
return a
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 15: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/15.jpg)
BúsquedasComplejidad
Ordenamiento
Ordenamiento
>>> # Algoritmo de selección>>> l = [4, 2, 6, 5, 3, 1]>>> k = seleccion(l)[1, 2, 6, 5, 3, 4][1, 2, 6, 5, 3, 4][1, 2, 3, 5, 6, 4][1, 2, 3, 4, 6, 5][1, 2, 3, 4, 5, 6]
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 16: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/16.jpg)
BúsquedasComplejidad
Ordenamiento
Ordenamiento y Complejidad
I ¿Cuál es el esfuerzo del algoritmo de ordenamiento porselección?
n(n − 1) pasos
I Decimos O(n2)
I ¿Existirá algún método más eficiente?
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 17: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/17.jpg)
BúsquedasComplejidad
Ordenamiento
Ordenamiento y Complejidad
I Recuerdan el ejercicio ”Intercalar 2 listas ordenadas paraformar otra lista ordenada”
I ¿Cuánto es el esfuerzo de ese algoritmo?
Es un algoritmo de costo lineal.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 18: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/18.jpg)
BúsquedasComplejidad
Ordenamiento
Ordenamiento y Complejidad
ReguerdanI Las listas de 1 sólo elemento ya están ordenadas, ¿verdad?I ¿Cuánto cuesta?:
Intercalar 2 listas de 1 elemento. 2 pasosIntercalar 2 listas de 2 elementos. 4 pasosIntercalar 2 listas de 4 elementos. 8 pasos
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 19: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/19.jpg)
BúsquedasComplejidad
Ordenamiento
Ordenamiento y Complejidad
Ordenar([8, 1, 6, 3, 7, 2, 5, 4]) = ?
Intercalar([8], [1]) = [1, 8] 2 pasosIntercalar([6], [3]) = [3, 6] 2 pasosIntercalar([7], [2]) = [2, 7] 2 pasosIntercalar([5], [4]) = [4 ,5] 2 pasos
Intercalar([1,8], [3,6]) = [1,3,6,8] 4 pasosIntercalar([2,7], [4,5]) = [2,4,5,7] 4 pasos
Intercalar([1,3,6,8], [2,4,5,7]) = [1,2,3,4,5,6,7,8] 8 pasos
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 20: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/20.jpg)
BúsquedasComplejidad
Ordenamiento
Ordenamiento y Complejidad
I Hemos realizado:I ((2 + 2 + 2 + 2) + (4 + 4) + 8) operacionesI (3 ∗ 8) operaciones
I ¿Pueden generalizar este método de ordenamiento?I ¿Cuánto es su costo?
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 21: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/21.jpg)
BúsquedasComplejidad
Ordenamiento
Ordenamiento y Complejidad
I Este algoritmo es bien conocido y se lo conoce comoMergeSort.
I El costo de este algoritmo es de:
O(n log(n))
I Existen, además, una serie de algoritmos de costo O(n log(n)),entre otros el HeapSort o el QuickSort cada uno condiferencias de implementación.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
![Page 22: Curso de Nivelación de Algoritmos - Clase 3](https://reader031.vdocuments.mx/reader031/viewer/2022020207/557cf5aed8b42a89158b48bd/html5/thumbnails/22.jpg)
BúsquedasComplejidad
Ordenamiento
Búsquedas
Ejemplo
I Hacer un seguimiento de papel para los algoritmos deordenamiento que hemos visto.
I Escribir el algoritmo MergeSort.
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos