ANÁLISIS Y DISEÑO DEALGORITMOSUniversidad Nacional de Ingeniería
Contenidos   Programación dinámica   Algoritmos voraces
Divide y Vencerás: Resumen   Dividir     Descomponer     el problema.   Vencer     Resolver   los sub-problemas.   Co...
Programación Dinámica
   Volvamos al caso Fibonacci…     ¿Por   qué era ineficiente la solución recursiva?     ¿Los subproblemas en los que d...
Programación Dinámica   Programación =     Escoger   basándose en una serie de opciones     Utilización de una tabla o ...
Programación Dinámica: Pasos1.   Caracterizar la estructura de la solución     óptima2.   Analizar el problema de manera “...
Caminos más cortos   Aplicaciones (dos de muchas)     Vuelos     Líneas   de ensamblado   Tipo de grafo     Ponderado...
Algoritmo de Floyd   Calcula una serie sucesiva de matrices     Donde se van almacenando los caminos más cortos     Not...
Algoritmo de Floyd   La receta:                      Matriz de pesos en                                    iteración k (s...
Pseudocódigo del algoritmo(Neapolitan)floyd (n, W[][], D[][]){    D=W;    for(k=1; k<=n; k++)      for(i=1; i<=n; i++)    ...
Algoritmos voraces
Algoritmos voraces   Quiere el máximo en cada paso     Para ciertos problemas, asegura el óptimo     Algoritmos “miopes”
Árbol de extensión mínima   Subgrafo conectado que contiene todos los    vértices del grafo original.     Es un árbol.  ...
Algoritmo de Prim   Basado en vértices   Pasos     Escoger    un vértice     De sus aristas, seleccionar la de menor p...
v       1           v    1                   23           3                            6    v       4           v    3    ...
Algoritmo de Kruskal   Basado en aristas   Pasos     Ordenar  por pesos las aristas.     Extraer la más liviana.     ...
v       1   v    1           23    v       4   v    3           4        2   v            5
Pseudocódigo del algoritmo (altonivel)F=crear conjuntos disjuntos de V, uno por cada vértice y que solamente   contiene el...
Otros algoritmos para búsqueda yoptimización   Local   Recocido simulado   Tabú   Algoritmos genéticos   Agrupamiento
Resumen   Programación dinámica     Enfoque   top-down implementado como bottom-      up     Se van almacenando las sol...
Referencias   Baase, Sara y Allen Van Gelder. Computer    Algorithms: Introduction to Design and Analysis.    Addison-Wes...
Algoritmos
Algoritmos
Upcoming SlideShare
Loading in …5
×

Algoritmos

705 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
705
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Algoritmos

  1. 1. ANÁLISIS Y DISEÑO DEALGORITMOSUniversidad Nacional de Ingeniería
  2. 2. Contenidos Programación dinámica Algoritmos voraces
  3. 3. Divide y Vencerás: Resumen Dividir  Descomponer el problema. Vencer  Resolver los sub-problemas. Combinar  Obtener la solución global.
  4. 4. Programación Dinámica
  5. 5.  Volvamos al caso Fibonacci…  ¿Por qué era ineficiente la solución recursiva?  ¿Los subproblemas en los que descomponía el problema original eran dependientes o independientes?  ¿Qué diferencia hay entre ésta y la solución iterativa?
  6. 6. Programación Dinámica Programación =  Escoger basándose en una serie de opciones  Utilización de una tabla o arreglo para construir una solución
  7. 7. Programación Dinámica: Pasos1. Caracterizar la estructura de la solución óptima2. Analizar el problema de manera “top-down”3. Resolver el problema de manera “bottom-up”4. Construir la solución óptima
  8. 8. Caminos más cortos Aplicaciones (dos de muchas)  Vuelos  Líneas de ensamblado Tipo de grafo  Ponderado y dirigido  Matriz de pesos ¿Cómo harías para resolver este problema?
  9. 9. Algoritmo de Floyd Calcula una serie sucesiva de matrices  Donde se van almacenando los caminos más cortos  Nota: El CMC siempre será un camino simple En cada iteración, se va liberando un vértice  Para fungir como intermediario en el camino Primera iteración  caminos directos Última iteración  Se puede pasar por todos los vértices
  10. 10. Algoritmo de Floyd La receta: Matriz de pesos en iteración k (se libera vértice k) Lo que ya tengo Distancia que uso con k como intermediario
  11. 11. Pseudocódigo del algoritmo(Neapolitan)floyd (n, W[][], D[][]){ D=W; for(k=1; k<=n; k++) for(i=1; i<=n; i++) for(j=1; j<=n; j++) D[i][j]=minimo(D[i][j], D[i][k] + D[k][j]);}
  12. 12. Algoritmos voraces
  13. 13. Algoritmos voraces Quiere el máximo en cada paso  Para ciertos problemas, asegura el óptimo  Algoritmos “miopes”
  14. 14. Árbol de extensión mínima Subgrafo conectado que contiene todos los vértices del grafo original.  Es un árbol.  De peso mínimo. ¿Aplicaciones? 1 1 1
  15. 15. Algoritmo de Prim Basado en vértices Pasos  Escoger un vértice  De sus aristas, seleccionar la de menor peso  Incluir la arista y los vértices en el árbol
  16. 16. v 1 v 1 23 3 6 v 4 v 3 4 2 v 5 5
  17. 17. Algoritmo de Kruskal Basado en aristas Pasos  Ordenar por pesos las aristas.  Extraer la más liviana.  Si no crea un ciclo  Registrarlacomo parte del árbol  Registrar sus nodos como parte del árbol
  18. 18. v 1 v 1 23 v 4 v 3 4 2 v 5
  19. 19. Pseudocódigo del algoritmo (altonivel)F=crear conjuntos disjuntos de V, uno por cada vértice y que solamente contiene el vérticeordenar las aristas de menor a mayorwhile la instancia no se ha resuelto seleccionar la siguiente arista if arista conecta dos vértices de conjuntos disjuntos fusiona los conjuntos agrega arista a F if todos los conjuntos se han fusionado la instancia ha sido resuelta
  20. 20. Otros algoritmos para búsqueda yoptimización Local Recocido simulado Tabú Algoritmos genéticos Agrupamiento
  21. 21. Resumen Programación dinámica  Enfoque top-down implementado como bottom- up  Se van almacenando las soluciones Algoritmos voraces  Obtienenel óptimo asegurando el mayor valor en cada paso
  22. 22. Referencias Baase, Sara y Allen Van Gelder. Computer Algorithms: Introduction to Design and Analysis. Addison-Wesley, Massachusetts, 2000. 3era. edición. Cormen, Thomas H. et al. Introduction to Algorithms. McGraw-Hill, EUA, 2003. 2da. Edición. Neapolitan, Richard & Kumarss Naimipour . Foundations of Algorithms Using C++ Pseudocode. Jones and Bartlett Publishers, Massachusetts, 1998. 2da. edición.

×