Algoritmo de Bellman Ford para solucionar el problema de la ruta ms corta entre nodos
Bellman Ford algorithm to solve the shortest path problem between nodes
Algoritmo de Bellman Ford para resolver o problema do caminho mais curto entre ns
Correspondencia: jyungan@espoch.edu.ec
Ciencias Tecnologas de la Informacin y la Comunicacin
Artculo de Investigacin
* Recibido: 23 de mayo de 2022 *Aceptado: 12 de junio de 2022 * Publicado: 19 de julio de 2022
I. Magster en Interconectividad de Redes, Ingeniero en Sistemas Informticos, Escuela Superior Politcnica de Chimborazo, Riobamba, Ecuador.
II. Magster en Matemtica Bsica, Ingeniero en Sistemas, Escuela Superior Politcnica de Chimborazo. Riobamba, Ecuador.
III. Mster Universitario en Tecnologa Educativa y Competencias Digitales, Magster en Desarrollo de la Inteligencia y Educacin, Ingeniero en Sistemas, Escuela Superior Politcnica de Chimborazo, Riobamba, Ecuador.
Resumen
Conocer la historia de la ruta ms corta es algo impredecible, ya que el problema del camino ms corto se ha venido presentando desde la antigedad, por ejemplo: encontrar caminos cortos hacia la comida. Es por ello que se consideraba un problema elemental y fcil de resolver. Aos ms tarde investigadores desarrollaron mtodos para dar una solucin independiente a problemas como: rutas con menos trfico, caminos en un laberinto, enrutamiento alternativo, llamadas a larga distancia, etc.). Su evolucin a dar soluciones ha permitido desarrollar mtodos matriciales para el camino ms corto de longitud unitaria. El mtodo Bellman-Ford permite encontrar la ruta ms corta con un algoritmo ms simple, maneja arcos negativos y su tiempo de ejecucin es menor, lo que le convierte en el mtodo a ser estudiado.
Palabras Clave: Bellman-Ford; Algoritmo; Ruta ms corta.
Abstract
Knowing the history of the shortest route is somewhat unpredictable, since the problem of the shortest path has been present since ancient times, for example: finding short routes to food. That is why it was considered an elementary problem and easy to solve. Years later, researchers developed methods to provide an independent solution to problems such as: routes with less traffic, paths in a maze, alternative routing, long distance calls, etc.). Its evolution to provide solutions has allowed the development of matrix methods for the shortest path of unit length. The Bellman-Ford method allows finding the shortest path with a simpler algorithm, it handles negative arcs and its execution time is shorter, which makes it the method to be studied.
Keywords: Bellman-Ford; Algorithm; Shortest route.
Resumo
Conhecer a histria do caminho mais curto algo imprevisvel, pois o problema do caminho mais curto est presente desde a antiguidade, por exemplo: encontrar caminhos curtos para alimentao. Por isso era considerado um problema elementar e de fcil soluo. Anos depois, pesquisadores desenvolveram mtodos para fornecer uma soluo independente para problemas como: rotas com menos trfego, caminhos em labirinto, roteamento alternativo, chamadas de longa distncia etc.). Sua evoluo para fornecer solues permitiu o desenvolvimento de mtodos matriciais para o caminho mais curto de comprimento unitrio. O mtodo de Bellman-Ford permite encontrar o caminho mais curto com um algoritmo mais simples, trata arcos negativos e seu tempo de execuo menor, o que o torna o mtodo a ser estudado.
Palavras-chave: Bellman-Ford; Algoritmo; Rota mais curta.
Introduccin
Encontrar la ruta ms corta, radica en hallar un camino entre un nodo origen y un nodo destino. Estos nodos se encuentran enlazados directa o indirectamente a travs de arcos que tienen una ponderacin, el cual puede ser entendido como costo, distancia, tiempo, etc. El algoritmo de Bellman Ford, soluciona el problema de la ruta ms corta, empleando teora de grafos y anlisis y diseo de algoritmos.
Es importante entender que un grafo es una dupla compuesta por un conjunto finito de vrtices, tambin llamados nodos y tpicamente dibujados por crculos y un conjunto que llamaremos conjunto de aristas. Mientras que, un algoritmo es una secuencia finita y ordenada de pasos para realizar una tarea en forma precisa.
Las redes de datos (grafos) utilizan protocolos para establecer comunicacin entre diferentes equipos denominados host. Estos protocolos (algoritmos) estn gobernados por reglas que determinan su comportamiento. El enrutamiento de mensajes entre equipos (nodos/routers) se lo hace a travs de protocolos que garantizan la conectividad entre redes.
Desarrollo
La red (grafo) es un tipo comn de estructura de datos que ofrece una visin holstica y descendente para dar sentido a diversos sistemas interactivos, incluidos los sistemas sociales, los sistemas biolgicos, los sistemas de trfico, los sistemas de comunicacin, etc., que se ven muy afectados por una pequea porcin de nodos influyentes, tambin llamados propagadores influyentes. Dichos nodos desempean un papel fundamental y pueden enriquecer significativamente nuestra comprensin de los sistemas mencionados. Por ejemplo, ser capaces de detectar eficaz y adecuadamente los nodos influyentes nos permite controlar la propagacin de epidemias, disear un plan de marketing vlido, evitar que la red elctrica falle, predecir el flujo de trfico futuro e identificar protenas esenciales. (Liu et al., 2021)
Un grafo est formado por dos conjuntos
- , un conjunto de vrtices (tambin llamados nodos)
- , un conjunto de aristas (cada arista est asociada a dos vrtices).
En las situaciones de modelizacin, las aristas se utilizan para expresar algn tipo de relacin entre los vrtices. (Pruim, s. f.)
La teora de grafos proporciona un lenguaje para hablar de las propiedades de las relaciones. Disear algoritmos de grafos realmente novedosos es una tarea muy difcil. La clave para utilizar eficazmente los algoritmos de grafos en las aplicaciones reside en modelar correctamente el problema para poder aprovechar los algoritmos existentes. Familiarizarse con muchos problemas algortmicos de grafos diferentes es ms importante que entender los detalles de los algoritmos de grafos particulares. (Skiena, 2008)
La ruta ms corta
Si tenemos dos vrtices en un grafo y mltiples caminos entre ellos, entonces hay un camino ms corto en esa coleccin. Ese camino no es necesariamente nico. El problema del camino ms corto es el proceso de encontrar el camino ms corto entre dos vrtices de un grafo. Podemos considerarlo como la ruta ms eficiente a travs del grafo.
Otra forma de considerar el problema del camino ms corto es recordar que un camino es una serie de relaciones derivadas. El camino ms corto es la serie con la derivacin ms corta, o la relacin ms cercana. Dado que un grafo modela relaciones, a menudo nos interesan las relaciones ms cercanas. (Shortest Path Problem - an overview | ScienceDirect Topics, s. f.)
El problema de la ruta ms corta es uno de los problemas de optimizacin de redes ms fundamentales. Este problema surge en la prctica y surge como un subproblema en muchos algoritmos de optimizacin de redes. (Cherkassky et al., 1996)
Algoritmos bsicos
Los algoritmos ms importantes para resolver los problemas de camino ms corto son:
- La bsqueda de amplitud y la bsqueda de profundidad se refieren a diferentes rdenes de bsqueda; para la bsqueda de profundidad, se pueden encontrar casos en los que su implementacin ingenua no encuentra una solucin ptima, o no termina.
- El algoritmo de Dijkstra resuelve el problema del camino ms corto de una sola fuente si todos los pesos de las aristas son mayores o iguales a cero. Sin empeorar la complejidad del tiempo de ejecucin, este algoritmo puede, de hecho, calcular los caminos ms cortos desde un punto de partida s dado a todos los dems nodos.
- El algoritmo de Bellman-Ford tambin resuelve el problema de los caminos ms cortos de una sola fuente, pero a diferencia del algoritmo de Dijkstra, los pesos de las aristas pueden ser negativos.
- El algoritmo de Floyd-Warshall resuelve el problema de las rutas ms cortas de todos los pares.
- El algoritmo A* resuelve el problema del camino ms corto de una sola fuente para costes de aristas no negativos. (Shortest Path Problem - an overview | ScienceDirect Topics, s. f.)
Mtodo
La eleccin del mtodo ms adecuado y su correcta ejecucin es lo que impulsa a realizar una buena investigacin. Para el presente trabajo se ha considerado el mtodo mixto (cualitativo y cuantitativo), ya que se est contemplado:
- Se har uso de las tcnicas documentales y de experimento. La tcnica documental para la recoleccin de informacin a travs de publicaciones en revistas cientficas. La tcnica del experimento con el uso del programa para el anlisis de grafos.
- El Anlisis y aplicacin paso a paso del algoritmo de Bellman Ford se la realiza en una hoja de trabajo (Tabla 1)
- Anlisis y diseo de un programa escrito en Java que permita implementar el algoritmo de Bellman Ford.
Anlisis
Algoritmo de Bellman-Ford
Este algoritmo busca la estructura del grafo y genera la mejor solucin. Resuelve el problema del camino ms corto de fuente nica en el que los pesos de los bordes pueden ser negativos. El algoritmo de Bellman-Ford para las rutas ms cortas es casi completamente intuitivo y devuelve un valor booleano que indica si hay o no un ciclo de peso negativo al que se puede acceder desde la fuente. Entonces, cuando hay un ciclo, el algoritmo indica que no existe una solucin, pero cuando no la hay, el algoritmo produce los caminos ms cortos y su peso. Adems, la base es la siguiente: dado un grfico con vrtices, la mayor cantidad de arcos que puede haber en un camino ms corto es . Esto se demuestra fcilmente por induccin. El camino ms corto tiene ms de , entonces debe tener un circuito negativo, de manera similar, un grfico con un circuito negativo tendr un camino ms corto de n o ms arcos. Todas estas observaciones conducen al algoritmo Bellman-Ford. (Mukhlif & Saif, s. f.) (Figura 1)
Figura 1: Proceso del algoritmo de Bellman Ford
Fuente: (Patel, 2014)
Algoritmo 1. Bellman Ford, Ruta mnima |
. |
|
|
|
|
|
|
|
|
|
|
Pseudocdigo del algoritmo Bellman-Ford
- Inicialice todos los vrtices y establezca su distancia desde la fuente a un valor alto, como infinito, y establezca el valor de distancia para la fuente en 0 valores
- Repita lo siguiente para el nmero de tiempos tales como: para cada arista que pertenece al grfico dibujado si distanciaentonces la , lo que significa que la distancia se actualiza.
- Repita los siguientes pasos para cada borde que pertenece al grfico dibujado si entonces no existe ningn ciclo negativo - peso entre el origen y el destino.
- Devuelve los valores de distancia para todos los nodos una vez completadas todas las iteraciones. (Mukhlif & Saif, s. f.)
Funcionamiento
Al igual que otros problemas de programacin dinmica, el algoritmo calcula las rutas ms cortas de forma ascendente. Primero calcula las distancias ms cortas que tienen como mximo un borde en la ruta. Luego, calcula los caminos ms cortos con 2 aristas como mximo, y as sucesivamente. Despus de la i-sima iteracin del bucle exterior, se calculan los caminos ms cortos con como mximo i aristas. Puede haber un mximo de |V| 1 aristas en cualquier camino simple, por eso el ciclo externo ejecuta |v| - 1 vez. La idea es, asumiendo que no hay un ciclo de peso negativo, si hemos calculado las rutas ms cortas con como mximo aristas i, entonces una iteracin sobre todas las aristas garantiza dar la ruta ms corta con aristas como mximo (i+1). (BellmanFord Algorithm | DP-23, 2012)
Este algoritmo tiene las ventajas de:
- Minimizacin de costes.
- Maximizacin del rendimiento.
- Permite dividir el trfico.
Desventajas:
- En el protocolo de enrutamiento no se tiene en cuenta las ponderaciones.
- Respuesta lenta a los cambios en la topologa de red. (Singh et al., 2018)
Diseo de clases: (Figura 2:)
Figura 2: Diagrama de clases
Fuente: Juan C. Yungn-Cazar.
Implementacin del programa
Clase Vertex: En esta clase se implementa los nodos. Est compuesta por los atributos nombre, estado de visitado, lista de aristas asociadas a los nodos, distancia mnima, y nodo antecesor. (Figura 3)
Figura 3: Implementacin clase Vertex (Nodo)
Fuente: Juan C. Yungn-Cazar.
Clase Edge: En esta clase se implementa las aristas que conectan a los nodos. Est compuesta por los atributos ponderacin o peso; referencia de nodo inicial y referencia de nodo final. (Figura 4)
Figura 4: Implementacin clase Edge (Arista)
Fuente: Juan C. Yungn-Cazar.
Clase BellmanFord: En esta clase se impelenta el algorirmo de Bellman Ford. Est compuesta por los atributos lista de nodos (vertexList) y lista de aristas (edgexList). (Figura 5)
Figura 5: Implementacin clase BellmanFord
Fuente: Juan C. Yungn-Cazar.
Escenario de aplicacin
Se disea un grafo dirigido con 9 nodos que representan a diferentes ciudades del pas y las aristas representan a las conexiones viales entre ellas con su respectiva distancia. (Figura 6)
Figura 6: Escenario propuesto
Fuente: Juan C. Yungn-Cazar.
Clase App: En esta clase se implementa el escenario de estudio. (Figura 7)
Figura 7: Implementacin clase App (Escenario de pruebas)
Fuente: Juan C. Yungn-Cazar.
Resultados
Tabla 1: Resultados del anlisis y aplicacin paso a paso del algoritmo
|
Quito |
Latacunga |
Ambato |
Riobamba |
Macas |
Nueva Loja |
F. Orellana |
Puyo |
Tena |
Quito |
0 |
109 |
149 |
210 |
367 |
255 |
337 |
251 |
511 |
Latacunga |
Infinito |
0 |
40 |
101 |
258 |
Infinito |
Infinito |
142 |
Infinito |
Ambato |
Infinito |
Infinito |
0 |
61 |
218 |
Infinito |
Infinito |
102 |
Infinito |
Riobamba |
Infinito |
Infinito |
Infinito |
0 |
157 |
Infinito |
Infinito |
Infinito |
Infinito |
Macas |
Infinito |
Infinito |
Infinito |
Infinito |
0 |
Infinito |
Infinito |
Infinito |
Infinito |
Nueva Loja |
Infinito |
Infinito |
Infinito |
Infinito |
456 |
0 |
82 |
330 |
256 |
F. Orellana |
Infinito |
Infinito |
Infinito |
Infinito |
374 |
Infinito |
0 |
248 |
174 |
Puyo |
Infinito |
Infinito |
Infinito |
Infinito |
126 |
Infinito |
Infinito |
0 |
Infinito |
Tena |
Infinito |
Infinito |
Infinito |
Infinito |
200 |
Infinito |
Infinito |
74 |
0 |
Tabla 2: Resultados de rutas mnimas calculadas por el programa
ORIGEN |
DESTINO |
COSTE |
RUTA |
Quito |
Latacunga |
109 |
Latacunga = Quito, Latacunga |
Quito |
Ambato |
149 |
Ambato = Quito, Latacunga, Ambato |
Quito |
Riobamba |
210 |
Riobamba = Quito, Latacunga, Ambato, Riobamba |
Quito |
Macas |
367 |
Macas = Quito, Latacunga, Ambato, Riobamba, Macas |
Quito |
Nueva Loja |
255 |
Nueva Loja = Quito, Nueva Loja |
Quito |
F.Orellana |
337 |
F. Orellana = Quito, Nueva Loja, F. Orellana |
Quito |
Puyo |
251 |
Puyo = Quito, Latacunga, Ambato, Puyo |
Quito |
Tena |
511 |
Tena = Quito, Nueva Loja, F. Orellana, Tena |
ORIGEN |
DESTINO |
COSTE |
RUTA |
Latacunga |
Ambato |
40 |
Ambato = Latacunga, Ambato |
Latacunga |
Riobamba |
101 |
Riobamba = Latacunga, Ambato, Riobamba |
Latacunga |
Macas |
258 |
Latacunga, Ambato, Riobamba, Macas |
Latacunga |
Puyo |
142 |
Puyo = Latacunga, Ambato, Puyo |
ORIGEN |
DESTINO |
COSTE |
RUTA |
Ambato |
Riobamba |
61 |
Riobamba = Ambato, Riobamba |
Ambato |
Macas |
218 |
Macas = Ambato, Riobamba, Macas |
Ambato |
Puyo |
102 |
Puyo = Ambato, Puyo |
ORIGEN |
DESTINO |
COSTE |
RUTA |
Riobamba |
Macas |
157 |
Macas = Riobamba, Macas |
ORIGEN |
DESTINO |
COSTE |
RUTA |
Nueva Loja |
Macas |
456 |
Macas = Nueva Loja, F. Orellana, Tena, Puyo, Macas |
Nueva Loja |
F. Orellana |
82 |
F. Orellana = Nueva Loja, F. Orellana |
Nueva Loja |
Puyo |
330 |
Puyo = Nueva Loja, F. Orellana, Tena, Puyo |
Nueva Loja |
Tena |
256 |
Tena = Nueva Loja, F. Orellana, Tena |
ORIGEN |
DESTINO |
COSTE |
RUTA |
F.Orellana |
Macas |
374 |
Macas = F. Orellana, Tena, Puyo, Macas |
F.Orellana |
Puyo |
248 |
Puyo = F. Orellana, Tena, Puyo |
F.Orellana |
Tena |
174 |
Tena = F. Orellana, Tena |
ORIGEN |
DESTINO |
COSTE |
RUTA |
Tena |
Macas |
200 |
Macas = Tena, Puyo, Macas |
Tena |
Puyo |
74 |
Puyo = Tena, Puyo |
ORIGEN |
DESTINO |
COSTE |
RUTA |
Puyo |
Macas |
126 |
Macas = Puyo, Macas |
El camino ms corto calculado por el algoritmo tomando como nodo origen Quito hasta el nodo destino Macas es el que visita los nodos: Latacunga con una ponderacin de 109 Km, Ambato (40 Km) con una ponderacin acumulada de 149 Km, Riobamba (61 Km) con una ponderacin acumulada de 210 Km; hasta llegar al nodo destino Macas (157 Km) con una ponderacin total de 367 Km.
El siguiente camino ms corto calculado por el algoritmo tomando como nodo origen Quito hasta el nodo destino Macas es el que visita los nodos: Latacunga con una ponderacin de 109 Km, Ambato (40 Km) con una ponderacin acumulada de 149 Km, Puyo (102 Km) con una ponderacin acumulada de 251 Km; hasta llegar al nodo destino Macas (126 Km) con una ponderacin total de 377 Km.
El camino ms largo calculado por el algoritmo tomando como nodo origen Quito hasta el nodo destino Macas es el que visita los nodos: Nueva Loja con una ponderacin de 255 Km, Francisco de Orellana (82 Km) con una ponderacin acumulada de 337 Km, Tena (174 Km) con una ponderacin acumulada 511 Km, Puyo (74 Km) con una ponderacin acumulada de 585 Km; hasta llegar al nodo destino Macas (126 Km) con una ponderacin total de 711 Km.
Conclusiones
Un grafo es una representacin grfica de nodos (ciudades, routers) conectados por arcos (carreteras, enlaces seriales)
La ruta mnima o camino ms corto simplemente es la distancia entre nodos (origen y destino) con menor distancia.
El problema del camino ms corto es recordar que un camino es una serie de relaciones derivadas. El camino ms corto es la serie con la derivacin ms corta o la relacin ms cercana. Dado que un grfico est modelando relaciones, a menudo nos interesan las relaciones ms cercanas.
El algoritmo de Bellman Ford plantea una solucin al problema de la ruta ms corta, pero no es el nico, por ejemplo, para resolver este problema tambin existe el algoritmo de Dijkstra.
El tiempo de ejecucin del algoritmo de Bellman Ford es bajo (microsegundos) lo que le convierte en un mtodo muy eficiente para un pequeo nmero de nodos.
Encontrar la ruta ms corta, por lo general es un problema frecuente en temas de logstica y transporte, las redes de comunicacin de datos; entre las ms importantes.
reas del conocimiento involucrada: Teora de grafos, Anlisis y diseo de algoritmos, Estructura de datos, Algebra lineal, Logstica y transporte, Redes de computadoras, etc.
Referencias
- BellmanFord Algorithm | DP-23. (2012, diciembre 1). GeeksforGeeks. https://www.geeksforgeeks.org/bellman-ford-algorithm-dp-23/
- Cherkassky, B. V., Goldberg, A. V., & Radzik, T. (1996). Shortest paths algorithms: Theory and experimental evaluation. Mathematical Programming, 73(2), 129-174. https://doi.org/10.1007/BF02592101
- Liu, Y., Wei, X., Chen, W., Hu, L., & He, Z. (2021). A graph-traversal approach to identify influential nodes in a network. Patterns, 2(9), 100321. https://doi.org/10.1016/j.patter.2021.100321
- Moreno, E. (2012). Grafos: Fundamentos y Algoritmos. Santiago de Chile, Chile: Editorial ebooks Patagonia - J.C. Sez Editor.
- Recuperado de https://elibro.net/es/ereader/espoch/68438?page=82.
- Mukhlif, F., & Saif, A. (s. f.). Comparative Study On Bellman-Ford And Dijkstra Algorithms. 6.
- Patel, V. (2014). A survey paper of Bellman-ford algorithm and Dijkstra algorithm for finding shortest path in GIS application. 4(1), 3.
- Prez Aguila, R. (2013). Una introduccin a las matemticas discretas y teora de grafos. El Cid Editor.
- Recuperado de https://elibro.net/es/lc/espoch/titulos/36562
- Pruim, R. (s. f.). 1 Introduction to Graphs | Graphs. Recuperado 27 de junio de 2022, de https://rpruim.github.io/m252/S19/from-class/graphs/introduction-to-graphs.html#graphs
- Reid, A. y Lorenz, J. (2018). Introduccin al enrutamiento y la conmutacin en la empresa: gua de estudio de CCNA Discovery. Pearson Educacin.
- Recuperado de: https://elibro.net/es/lc/espoch/titulos/53862
- Rodrguez Villalobos, A. (2017). Grafos: software para la construccin, edicin y anlisis de grafos. Bubok Publishing S.L.
- Recuperado de https://elibro.net/es/lc/espoch/titulos/55604
- Shortest Path ProblemAn overview | ScienceDirect Topics. (s. f.). Recuperado 27 de junio de 2022, de https://www.sciencedirect.com/topics/computer-science/shortest-path-problem
- Singh, J. B., Tripathi, R. C., & Research, D. (2018). Investigation of BellmanFord Algorithm, Dijkstras Algorithm for suitability of SPP. 6(1), 4.
- Skiena, S. S. (2008). The Algorithm Design Manual. Springer London. https://doi.org/10.1007/978-1-84800-070-4
2022 por los autores. Este artculo es de acceso abierto y distribuido segn los trminos y condiciones de la licencia Creative Commons Atribucin-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0)
(https://creativecommons.org/licenses/by-nc-sa/4.0/).
Enlaces de Referencia
- Por el momento, no existen enlaces de referencia
Polo del Conocimiento
Revista Científico-Académica Multidisciplinaria
ISSN: 2550-682X
Casa Editora del Polo
Manta - Ecuador
Dirección: Ciudadela El Palmar, II Etapa, Manta - Manabí - Ecuador.
Código Postal: 130801
Teléfonos: 056051775/0991871420
Email: polodelconocimientorevista@gmail.com / director@polodelconocimiento.com
URL: https://www.polodelconocimiento.com/