La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Luis Manuel Monroy García Matemáticas discretas Ingeniería de Sistemas Universidad Simón Bolívar.

Presentaciones similares


Presentación del tema: "Luis Manuel Monroy García Matemáticas discretas Ingeniería de Sistemas Universidad Simón Bolívar."— Transcripción de la presentación:

1 Luis Manuel Monroy García Matemáticas discretas Ingeniería de Sistemas Universidad Simón Bolívar

2 Algoritmo de dijkstra

3  Es un algoritmo de búsqueda grafica que resuelve solo la fuente más corta de un problema del camino para un gráfico con los negativos de bordes costos de ruta, produciendo un camino más corto al árbol. Este algoritmo se utiliza a menudo en la ruta y como una subrutina en otros algoritmos de grafos.  Para una fuente dada de vértice (nodo) en el gráfico, el algoritmo encuentra la ruta con menor coste (es decir, el camino más corto) entre el vértice y cualquier otro vértice. Algoritmo de la ruta más corta:

4 Ejemplo  Si los vértices de una gráfica representan las ciudades y los costos de borde de ruta representan conducir distancias entre pares de ciudades conectadas por un camino directo, el algoritmo de dijkstra se puede utilizar para encontrar la ruta más corta entre una ciudad y todas las demás ciudades. Como resultado, el camino más corto primera vez ampliamente utilizado en la red los protocolos de enrutamiento, en especial IS-IS y OSPF (Open ShortestPathFirst).

5 Modelo de la ruta más corta:  El problema de la ruta más corta incluye un juego de nodos conectados donde solo un nodo es considerado como el origen y solo un nodo es considerado como el nodo destino. Su objetivo es determinar un camino de conexiones que minimizan la distancia total del origen al destino. El problema se resuelve por el “algoritmo de etiquetado”. La esencia del procedimiento es que analiza toda la red a partir del origen; identifica de manera sucesiva la ruta más corta a cada uno de los nodos en orden ascendente de sus distancias (más cortas), desde el origen; el problema queda resuelto en el momento de llegar al nodo destino.

6 Definición del problema:  Se tiene n nodos, partiendo del nodo inicial1 y terminando en el nodo final n.  Arcos bi-direccionales conectan los nodos con distancias mayores que cero.  Se desea encontrar la ruta de mínima distancia que conecta el nodo 1 con el nodo n.  Por medio de la aplicación del algoritmo de este problema podemos conocer la menor distancia entre un nodo origen y un nodo destino.

7 Pasos a seguir:  Elaborar un cuadro con todos los nodos y los ramales que salen de él.  Partiendo del origen, debemos encontrar el nodo más cercano a él.  Anular todos los ramales que entren al nodo más cercano elegido.  Comenzando en el origen se debe encontrar el nodo más cercano a él, por intermedio del nodo ya elegido y volver al tercer paso hasta llegar al destino.

8 Algoritmo de Dijkstra: CAMINO MAS CORTO  Este algoritmo también llamado algoritmo de caminos mínimos, es un algoritmo para la determinar del camino más corto dado un vértice origen al resto de vértices en un grafo con pesos en cada arista. Su nombre se refiere a Edsger Dijkstra, quien lo describió por primera vez en 1959.  Allí se determina la ruta más corta desde un nodo origen hacia los demás nodos.

9  La idea subyacente en este algoritmo consiste en ir explorando todos los caminos más cortos que parten del vértice origen y que llevan a todos los demás vértices; cuando se obtiene el camino más corto desde el vértice origen, al resto del vértices que componen el grafo, el algoritmo se detiene.  El algoritmo es una especialización de la búsqueda de costos uniforme, y como tal, no funciona en grafos con aristas de costo negativo(al elegir siempre el nodo con distancia menor, pueden quedar excluidos de la búsqueda de nodos que en próximas iteraciones bajarían el costo general del camino al pasar por una arista con costo negativo).

10 Ruta más corta – solución por el algoritmo de Dijkstra:  Para solucionar el problema de la ruta más corta entre dos nodos de un grafo se puede utilizar el algoritmo de Dijkstra, el cual sigue el siguiente procedimiento para calcular la ruta más corta desde el nodo origen hasta cada uno de los nodos del grafo:  Crear una lista de nodos para almacenar los nodos con distancia mínima ya calculada  Crear una cola de prioridad para los nodos pendientes de evaluar  Inserta el nodo de origen a la cola de prioridad  Mientras que haya nodos en la cola de prioridad

11 Ejemplo  Si los pesos de mis aristas son de valor 1, entonces bastará con usar el algoritmo de BFS.algoritmo de BFS  Si los pesos de mis aristas son negativos no puedo usar el algoritmo de dijsktra, para pesos negativos tenemos otro algoritmo llamado Algoritmo de Bellmand-Ford.

12 Algoritmo de Bellman-Ford

13 El algoritmo de Bellman-Ford  Este algoritmo es una estructura básica muy parecido al algoritmo de Dijkstra, pero en vez de seleccionar vorazmente el nodo de peso mínimo aun sin procesar para relajarlo, simplemente relaja todas las aristas, y lo hace │ V │ -1 veces, siendo │ V │ el número de vértices en el grafo.  Las repeticiones permiten a las distancias mínimas recorrer el árbol, ya que en la ausencia de ciclos negativos, el camino más corto solo visita cada vértice una vez. A diferencia de la solución voraz, la cual depende de la suposición de que los pasos sean positivos, esta solución se aproxima más al caso general.

14 Versiones del algoritmo de Bellman-Ford  Versión no optimatizada para grafos con ciclos negativos, cuyo coste de tiempo es O(VE)  Versión optimatizada para grafos con aristas de peso negativo, pero en el grafo no existen ciclos de coste negativo, cuyo coste de tiempo, es también O (VE).

15 Versiones del algoritmo de Bellman-Ford  Una variante distribuida al algoritmo del Bellman-Ford se usa en protocolos de encaminamiento basados en vector de distancias, por ejemplo el protocolo de encaminamiento de información (RIP). El algoritmo es distribuido porque envuelve unas series de nodos (routers) dentro de un sistema autónomo (AS), un conjunto de redes y dispositivos router IP administrados típicamente por un Proveedor de Servicios de Internet (ISP).

16 Se compone de los siguientes pasos:  Cada nodo calcula la distancia entre el mismo y todos los demás dentro de un AS y almacena esta información en una tabla.  Cada nodo envía su tabla a todos los nodos vecinos.  Cuando un nodo recibe las tablas de distancias de sus vecinos, este calcula la ruta más corta a los demás nodos y actualiza su tabla para reflejar los cambios.

17 Las desventajas principales del algoritmo de Bellman-Ford en este ajuste son:  No es escala bien.  Los cambios en la topología de red no se reflejan rápidamente ya que las actualizaciones se distribuyen nodo por nodo.  Contando hasta el infinito (si un fallo de enlace o nodo hace que un nodo sea inalcanzable desde un conjunto de otros nodos, estos pueden estar siempre aumentando gradualmente sus cálculos de distancia a él, y mientras tanto puede haber bucles de enrutamiento).

18 Algoritmo de Floyd-Warshall

19 Algoritmo de Floyd-Warshall  El problema que intenta resolver este algoritmo es el de encontrar el camino más corto entre todos los pares de nodos o vértices de un grafo. Esto es semejante a construir una tabla con todas las distancias mínimas entre pares de ciudades de un mapa, indicando además la ruta a seguir para ir de la primera ciudad a la segunda. Este es uno de los problemas más interesantes que se pueden resolver con algoritmos de grafos.

20  Existen varias soluciones a este problema y los algoritmos a aplicar dependen también de la existencia de arcos con pesos o costes negativos en el grafo. En el caso de no existir pesos negativos, sería posible ejecutar V veces el algoritmo de Dijkstra para el cálculo del camino mínimo, donde V es el número de vértices o nodos del grafo. Esto conllevaría un tiempo de ejecución de O (V^3) (aunque se puede reducir).

21  Si existen arcos con pesos negativos, se puede ejecutar también V veces el Algoritmo de Bellman-Ford, una vez para cada nodo del grafo. Para grafos densos (con muchas conexiones o arcos) esto conllevaría un tiempo de ejecución de O (V^4).

22  El algoritmo de Floyd-Warshall (‘All-Pairs- Shortest-Path’ – Todos los caminos mínimos) ideado por Floyd en 1962 basándose en un teorema de Warshall también de 1962, usa la metodología de Programación Dinámica para resolver el problema. Éste puede resolver el problema con pesos negativos y tiempos de ejecución iguales a O (V^33); sin embargo, para ciclos de peso negativo el algoritmo tiene problemas. A continuación se muestra el pseudocódigo del algoritmo:

23


Descargar ppt "Luis Manuel Monroy García Matemáticas discretas Ingeniería de Sistemas Universidad Simón Bolívar."

Presentaciones similares


Anuncios Google