Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmo Bellman Dijsktra
Algoritmo Bellman Dijsktra
UNIVERSIDAD DE PAMPLONA
PAMPLONA NORTE DE SANTANDER
2019
INTRODUCCIÓN
En el presente trabajo se explican algunos ejemplos en los que es posible
emplear los algoritmos de Bellman-Ford y el algoritmo de Dijkstra para
resolver algunos tipos de problemas tanto de la vida cotidiana como en el
campo de la robótica de tal forma que sirve como guía para el planteamiento
de otros problemas en diferentes áreas. Es importante resaltar que estos
algoritmos son bastantes potentes si hablamos de encontrar la ruta más
corta de un punto inicial a otro final, entre diferentes ubicaciones donde
conocemos sus pesos entre ellos, sin la necesidad de emplear una red
neuronal compleja la cual puede emplear mucho más gasto de
procesamiento computacional que un simple algoritmo que emplea una serie
de secuencias de forma ordenada, el cual puede implementarse sin mucho
problema.
Algoritmo de Bellman-Ford.
Descripción
El algoritmo de Bellman-Ford determina la ruta más corta desde un nodo origen hacia
los demás nodos para ello es requerido como entrada un grafo cuyas aristas posean
pesos. La diferencia de este algoritmo con los demás es que los pesos pueden tener
valores negativos ya que Bellman-Ford me permite detectar la existencia de un ciclo
negativo. [1]
Como trabaja
Para la detección de ciclos negativos realizamos el paso de relajación una vez más y
si se obtuvieron mejores resultados es porque existe un ciclo negativo, para verificar
porque tenemos un ciclo podemos seguir relajando las veces que queramos y
seguiremos obteniendo mejores resultados. [1]
El primer problema que se planteó es sobre un Drone el cual después de recorrer una
zona determinada de lotes este traza diferentes puntos con sus respectivas distancias
creando una especie de mapeo, de tal forma que desde la posición inicial del Drone
(será nuestro punto de origen) hasta algún Lote escogido (Lote X será nuestro punto
final o punto de destino que el Drone quiere llegar), este problema es un buen
ejemplo ya que se establecen los pesos entre los lotes que en este caso son Km de
distancia entre ellos, de tal forma que conociendo estos datos es posible emplear el
algoritmo de Bellman-Ford para establecer la ruta más corta y por ende reducir los
tiempos entre una posible ruta y otra. Cabe aclarar que en este algoritmo se plantea un
grafo que tiene dos direcciones esto quiere decir que no tiene un sentido establecido,
una sola dirección en cada uno de sus puntos.
Código en Python:
Se realiza un bucle de tal forma que se pueda comprobar que no exista otro cambio de
valores y así mismo se va recorriendo cada una de las posiciones de la matriz, como
se observa en la siguiente imagen.
Por último mediante un bucle While recorremos la matriz Valores mediante una
condición que nos permitirá determinar el camino más corto para llegar al punto final
o destino establecido.
Por último tenemos como resultado que la Ruta más corta para llegar desde el
“Drone” hasta el punto final de destino que es la “Lote E” se debe hacer el recorrido:
2 + 2 + 6 = 10 Km TOTAL
De tal forma que lo que el algoritmo en Python nos muestra es la siguiente ruta la
cual es señalada en Azul, y observamos que en realidad es la Ruta más óptima para
llegar desde la posición del Drone al Lote E.
2 + 2 + 3 + 1 = 8 Km TOTAL
De tal forma que lo que el algoritmo en Python nos muestra es la siguiente ruta la
cual es señalada en Azul, y observamos que en realidad es la Ruta más óptima para
llegar desde la posición del Drone al Lote D.
Otros Módulos:
Mediante el uso de los módulos GraphPro los cuales fueron desarrollados por una
persona de tal manera que pudieran ser utilizados en Python por mas personas, de tal
forma ques son OpenSource y están alojados en el siguiente link en GitHub.
En el código se observa que se asignan unos pesos y se crea un grafo con al menos 6
ubicaciones, los pesos se asignan de manera aleatoria y se determina que es un grafo
en una sola dirección y el punto inicial es 0 y el punto final o destino es 3 :
El grafo entre sus puntos solo contiene una dirección dada en un solo sentido, como
se observa en la figura 7.
Código en Python:
Para no extender tanto el código con funciones y métodos pasare al código del
algoritmo Dijkstra.
Por ultimo llamamos la función Dijkstra e imprimimos la ruta más óptima en este
caso para llegar desde el punto de origen “Robot” hasta el punto E.
7 + 4 + 6 = 17 TOTAL
Conclusiones.
Bibliografía: