Algoritmos
Upcoming SlideShare
Loading in...5
×
 

Algoritmos

on

  • 751 views

 

Statistics

Views

Total Views
751
Views on SlideShare
751
Embed Views
0

Actions

Likes
1
Downloads
16
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Algoritmos Algoritmos Presentation Transcript

  • 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. Combinar  Obtener la solución global.
  • Programación Dinámica
  •  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?
  • 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
  • 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
  • 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?
  • 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
  • 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
  • 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]);}
  • 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.  De peso mínimo. ¿Aplicaciones? 1 1 1
  • 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
  • v 1 v 1 23 3 6 v 4 v 3 4 2 v 5 5
  • 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
  • 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 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
  • 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 soluciones Algoritmos voraces  Obtienenel óptimo asegurando el mayor valor en cada paso
  • 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.