SlideShare una empresa de Scribd logo
1 de 24
ANÁLISIS Y DISEÑO DE
ALGORITMOS
Universidad 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: Pasos
1.   Caracterizar la estructura de la solución
     óptima
2.   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                   2

3           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           2

3
    v       4   v
    3           4

        2   v
            5
Pseudocódigo del algoritmo (alto
nivel)
F=
crear conjuntos disjuntos de V, uno por cada vértice y que solamente
   contiene el vértice

ordenar las aristas de menor a mayor

while 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 y
optimizació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.

Más contenido relacionado

La actualidad más candente

Utp ia_s5_adaline
 Utp ia_s5_adaline Utp ia_s5_adaline
Utp ia_s5_adalinec09271
 
Algoritmo de dijkstra final
Algoritmo de dijkstra finalAlgoritmo de dijkstra final
Algoritmo de dijkstra finalsalomon
 
Red NEURONAL de Hamming
Red   NEURONAL    de HammingRed   NEURONAL    de Hamming
Red NEURONAL de HammingESCOM
 
Utp 2015-2_ia_s6_adaline y backpropagation
 Utp 2015-2_ia_s6_adaline y backpropagation Utp 2015-2_ia_s6_adaline y backpropagation
Utp 2015-2_ia_s6_adaline y backpropagationjcbp_peru
 
redes neuronales con Levenberg-Marquardt lmbp
redes neuronales con Levenberg-Marquardt lmbpredes neuronales con Levenberg-Marquardt lmbp
redes neuronales con Levenberg-Marquardt lmbpESCOM
 
Algoritmo de Retropropagación
Algoritmo de RetropropagaciónAlgoritmo de Retropropagación
Algoritmo de RetropropagaciónESCOM
 
Algoritmo de dijkstra
Algoritmo de dijkstraAlgoritmo de dijkstra
Algoritmo de dijkstraFANtochw
 
REDES NEURONALES RECURRENTES Elman
REDES NEURONALES RECURRENTES ElmanREDES NEURONALES RECURRENTES Elman
REDES NEURONALES RECURRENTES ElmanESCOM
 
Utp 2015-2_sirn_s6_adaline y backpropagation
 Utp 2015-2_sirn_s6_adaline y backpropagation Utp 2015-2_sirn_s6_adaline y backpropagation
Utp 2015-2_sirn_s6_adaline y backpropagationjcbenitezp
 
Backpropagation con momentum
Backpropagation  con momentumBackpropagation  con momentum
Backpropagation con momentumESCOM
 
Learning Vector Quantization LVQ
Learning Vector Quantization LVQLearning Vector Quantization LVQ
Learning Vector Quantization LVQESCOM
 
RED De Retro-propagación Neuronal
RED De Retro-propagación NeuronalRED De Retro-propagación Neuronal
RED De Retro-propagación NeuronalESCOM
 
Algoritmo de Dijkstra
Algoritmo de DijkstraAlgoritmo de Dijkstra
Algoritmo de DijkstraPedro Miranda
 
redes neuronales Som
redes neuronales Somredes neuronales Som
redes neuronales SomESCOM
 
Prácticas identificación de sistemas
Prácticas identificación de sistemasPrácticas identificación de sistemas
Prácticas identificación de sistemasJaime Martínez Verdú
 
REDES NEURONALES Base Radial
REDES NEURONALES Base RadialREDES NEURONALES Base Radial
REDES NEURONALES Base RadialESCOM
 
RED NEURONAL Backpropagation
RED NEURONAL BackpropagationRED NEURONAL Backpropagation
RED NEURONAL BackpropagationESCOM
 
Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)Linio Colquehuanca Rodrigo
 
Diseño de Redes Neuronales Multicapa y Entrenamiento
Diseño de Redes Neuronales Multicapa y EntrenamientoDiseño de Redes Neuronales Multicapa y Entrenamiento
Diseño de Redes Neuronales Multicapa y EntrenamientoESCOM
 

La actualidad más candente (20)

Utp ia_s5_adaline
 Utp ia_s5_adaline Utp ia_s5_adaline
Utp ia_s5_adaline
 
Algoritmo de dijkstra final
Algoritmo de dijkstra finalAlgoritmo de dijkstra final
Algoritmo de dijkstra final
 
Red NEURONAL de Hamming
Red   NEURONAL    de HammingRed   NEURONAL    de Hamming
Red NEURONAL de Hamming
 
Utp 2015-2_ia_s6_adaline y backpropagation
 Utp 2015-2_ia_s6_adaline y backpropagation Utp 2015-2_ia_s6_adaline y backpropagation
Utp 2015-2_ia_s6_adaline y backpropagation
 
redes neuronales con Levenberg-Marquardt lmbp
redes neuronales con Levenberg-Marquardt lmbpredes neuronales con Levenberg-Marquardt lmbp
redes neuronales con Levenberg-Marquardt lmbp
 
Algoritmo de Retropropagación
Algoritmo de RetropropagaciónAlgoritmo de Retropropagación
Algoritmo de Retropropagación
 
Dijkstra
DijkstraDijkstra
Dijkstra
 
Algoritmo de dijkstra
Algoritmo de dijkstraAlgoritmo de dijkstra
Algoritmo de dijkstra
 
REDES NEURONALES RECURRENTES Elman
REDES NEURONALES RECURRENTES ElmanREDES NEURONALES RECURRENTES Elman
REDES NEURONALES RECURRENTES Elman
 
Utp 2015-2_sirn_s6_adaline y backpropagation
 Utp 2015-2_sirn_s6_adaline y backpropagation Utp 2015-2_sirn_s6_adaline y backpropagation
Utp 2015-2_sirn_s6_adaline y backpropagation
 
Backpropagation con momentum
Backpropagation  con momentumBackpropagation  con momentum
Backpropagation con momentum
 
Learning Vector Quantization LVQ
Learning Vector Quantization LVQLearning Vector Quantization LVQ
Learning Vector Quantization LVQ
 
RED De Retro-propagación Neuronal
RED De Retro-propagación NeuronalRED De Retro-propagación Neuronal
RED De Retro-propagación Neuronal
 
Algoritmo de Dijkstra
Algoritmo de DijkstraAlgoritmo de Dijkstra
Algoritmo de Dijkstra
 
redes neuronales Som
redes neuronales Somredes neuronales Som
redes neuronales Som
 
Prácticas identificación de sistemas
Prácticas identificación de sistemasPrácticas identificación de sistemas
Prácticas identificación de sistemas
 
REDES NEURONALES Base Radial
REDES NEURONALES Base RadialREDES NEURONALES Base Radial
REDES NEURONALES Base Radial
 
RED NEURONAL Backpropagation
RED NEURONAL BackpropagationRED NEURONAL Backpropagation
RED NEURONAL Backpropagation
 
Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)
 
Diseño de Redes Neuronales Multicapa y Entrenamiento
Diseño de Redes Neuronales Multicapa y EntrenamientoDiseño de Redes Neuronales Multicapa y Entrenamiento
Diseño de Redes Neuronales Multicapa y Entrenamiento
 

Destacado

Simulated Annealing
Simulated AnnealingSimulated Annealing
Simulated Annealingkellison00
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated AnnealingMarcos Castro
 
Simulated Annealing
Simulated AnnealingSimulated Annealing
Simulated Annealingguestead520
 
Simulated Annealing - A Optimisation Technique
Simulated Annealing - A Optimisation TechniqueSimulated Annealing - A Optimisation Technique
Simulated Annealing - A Optimisation TechniqueAUSTIN MOSES
 
Simulated Annealing
Simulated AnnealingSimulated Annealing
Simulated AnnealingJoy Dutta
 
Simulated annealing -a informative approach
Simulated annealing -a informative approachSimulated annealing -a informative approach
Simulated annealing -a informative approachRanak Ghosh
 

Destacado (10)

Evidencia 4
Evidencia 4Evidencia 4
Evidencia 4
 
Simulated Annealing
Simulated AnnealingSimulated Annealing
Simulated Annealing
 
Simulated annealing
Simulated annealingSimulated annealing
Simulated annealing
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated Annealing
 
Simulated Annealing
Simulated AnnealingSimulated Annealing
Simulated Annealing
 
Simulated Annealing - A Optimisation Technique
Simulated Annealing - A Optimisation TechniqueSimulated Annealing - A Optimisation Technique
Simulated Annealing - A Optimisation Technique
 
Simulated Annealing
Simulated AnnealingSimulated Annealing
Simulated Annealing
 
Tema 15 temples
Tema 15 templesTema 15 temples
Tema 15 temples
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Simulated annealing -a informative approach
Simulated annealing -a informative approachSimulated annealing -a informative approach
Simulated annealing -a informative approach
 

Similar a Algoritmos (20)

Inteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys BInteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys B
 
Presentación OR Problemas de Caminos Más Cortos
Presentación OR Problemas de Caminos Más CortosPresentación OR Problemas de Caminos Más Cortos
Presentación OR Problemas de Caminos Más Cortos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Redes Neuronales
Redes NeuronalesRedes Neuronales
Redes Neuronales
 
Utp sirn_s6_adaline y backpropagation
 Utp sirn_s6_adaline y backpropagation Utp sirn_s6_adaline y backpropagation
Utp sirn_s6_adaline y backpropagation
 
Aprendizaje de Maquina y Aplicaciones
Aprendizaje de Maquina y AplicacionesAprendizaje de Maquina y Aplicaciones
Aprendizaje de Maquina y Aplicaciones
 
IO 2(REDES).pdf
IO 2(REDES).pdfIO 2(REDES).pdf
IO 2(REDES).pdf
 
Redes neuronales artificiales
Redes neuronales artificialesRedes neuronales artificiales
Redes neuronales artificiales
 
Programación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalProgramación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de Kruskal
 
T7 Alg Mult Matr
T7 Alg Mult MatrT7 Alg Mult Matr
T7 Alg Mult Matr
 
ED- Complejidad ciclomática
ED- Complejidad ciclomáticaED- Complejidad ciclomática
ED- Complejidad ciclomática
 
EstructurasDatos - Complejidad Ciclomática
EstructurasDatos - Complejidad CiclomáticaEstructurasDatos - Complejidad Ciclomática
EstructurasDatos - Complejidad Ciclomática
 
Grafos 9.5 2016
Grafos 9.5 2016Grafos 9.5 2016
Grafos 9.5 2016
 
Flujo en redes
Flujo en redesFlujo en redes
Flujo en redes
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronales
 
Examen Parcial 2
Examen Parcial 2Examen Parcial 2
Examen Parcial 2
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronales
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronales
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronales
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronales
 

Algoritmos

  • 1. ANÁLISIS Y DISEÑO DE ALGORITMOS Universidad Nacional de Ingeniería
  • 2. Contenidos  Programación dinámica  Algoritmos voraces
  • 3.
  • 4. Divide y Vencerás: Resumen  Dividir  Descomponer el problema.  Vencer  Resolver los sub-problemas.  Combinar  Obtener la solución global.
  • 6. 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?
  • 7. 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
  • 8. Programación Dinámica: Pasos 1. Caracterizar la estructura de la solución óptima 2. Analizar el problema de manera “top-down” 3. Resolver el problema de manera “bottom-up” 4. Construir la solución óptima
  • 9. 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?
  • 10.
  • 11. 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
  • 12. 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
  • 13. 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]); }
  • 15. Algoritmos voraces  Quiere el máximo en cada paso  Para ciertos problemas, asegura el óptimo  Algoritmos “miopes”
  • 16. Á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
  • 17. 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
  • 18. v 1 v 1 2 3 3 6 v 4 v 3 4 2 v 5 5
  • 19. 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
  • 20. v 1 v 1 2 3 v 4 v 3 4 2 v 5
  • 21. Pseudocódigo del algoritmo (alto nivel) F= crear conjuntos disjuntos de V, uno por cada vértice y que solamente contiene el vértice ordenar las aristas de menor a mayor while 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
  • 22. Otros algoritmos para búsqueda y optimización  Local  Recocido simulado  Tabú  Algoritmos genéticos  Agrupamiento
  • 23. 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
  • 24. 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.