SlideShare una empresa de Scribd logo
1
UNIVERSIDAD TECNOLÓGICA DE LOS
ANDES
FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS E
INFORMÁTICA
ALGORITMOS Y
PROGRAMACION II
ING: GODOFREDO POCCORI UMERES
PRESENTAN:
• MAROCHO HUAMAN ALEXANDER
• HUACAC SOTO ALVARO
• YUPANQUI JARA MARIA EMPERATRIZ
• GAMARRA RODRIGUEZ FRAN FERNANDO
CUSCO-PERU
2
INDICE
1. INTRODUCCIÓN................................................................................................................. 3
2. ALGORITMO DE BELLMAN-FORD............................................................................... 5
3. ALGORITMO ..................................................................................................................... 11
4. CONCLUSIONES ............................................................................................................... 13
5. BIBLIOGRAFÍA ................................................................................................................. 14
3
1. INTRODUCCIÓN
Así como los problemas de los puentes de Königsberg fueron resueltos por Leonhard
Euler nosotros resolvimos este tema basándonos en los pasos que se sigue en un grafo y así
llegar a concluir este trabajo de manera exitosa
El problema de los puentes de Königsberg es un problema matemático resuelto por
Leonhard Euler en 1736 y cuya resolución dio origen a la teoría de grafos. El problema se
formuló en el siglo XVIII y consistía en encontrar un recorrido para cruzar a pie toda la ciudad
pasando solo una vez por cada uno de los puentes y regresando al mismo punto de inicio. La
respuesta es negativa, es decir, no existe una ruta con estas características.
Desarrollado por Richar Bellman, Lester Ford y Samuel Ens . Quienes dicen “Los pesos
negativos no son simplemente una curiosidad matemática, surgen de una forma natural en la
reducción a problemas de caminos más cortos”
Similar a un algoritmo de Dijkstra, el algoritmo de bellman-ford genera el camino más
corto en un grafo dirigido ponderado. El algoritmo de Dijkstra está hecho para resolver el
4
problema con un tiempo menor, pero eso hace como consecuencia de que el grafo no pueda usar
negativos en los valores de las aristas. Debido a ello el algoritmo se vé solo cuando los pesos de
las aristas sean negativos, aunque sea uno solo de ellos.
Estos se han vuelto en un gran ejemplo para la reducción de los problemas en los caminos
hamiltonianos que es de orden de complejidad NP-Completo, siendo los cuales un algoritmo
que a pesar de su utilidad es prácticamente tan complejo que pueden llegar a ser de una
complejidad incluso superior a N²-1.
Otra propiedad de este algoritmo es que si este contiene un ciclo de coste negativo el
algoritmo será capaz de detectarlo, pero no encontrará el camino más corto que no repita ningún
vértice en el proceso.
5
2. ALGORITMO DE BELLMAN-FORD
Para realizar la teoria tomaremos una ejemplo asumiendo el siguiente grafo dirigido con
una nodos A,B,C y D. y respectivas distancias entre ellos:
consecuentemente tendremos una tabla con iteraciones que desconocemos desde un
principio e iremos resolviendo durante el proceso:
K=0 K=1 K=2 K=3 K=4 K=...
A A,0
B A,3
C A,∞
D A,6
6
Donde la distancia se ve inicializada en K=0 desde el punto de origen hasta los todos los
nodos, inclusive si no tienen un peso. De tal forma que de A hasta A hay 0 puesto que es el
mismo nodo, de A hasta B hay 6, de A hasta C hay ∞ puesto que no hay un camino definido y
por ende es infinito y de A hasta D es 6.
A partir de aquí lo que haremos es actualizar las etiquetas con las nuevas distancias que
vamos conociendo una vez hemos inicializado.
Tras inicializar A se quedaría igual se toma el menor número para a desde la suma de sus
diferentes rutas y tomando el menor, para el primer caso Para llegar a B con un peso de 3 o
tomando de a a D con un peso de 2 luego de sumar sus pesos. Para llegar a C la menor ruta
tomando la ruta anterior +2 por su peso sería 5. Para acabar con D quedándose igual puesto que
la ruta menor sigue siendo la misma.
7
Y correspondientemente asignaremos los nuevos valores a la tabla.
K=0 K=1 K=2 K=3 K=4 K=...
A A,0 A,0
B A,3 D,2
C A,∞ B,5
D A,6 A,6
Y repetimos el proceso aclarando que siempre tomaremos la última etiqueta expresada.
Repitiendo tantas veces sea necesario, hasta que K=n tiene que ser igual a K=n-1.
8
K=0 K=1 K=2 K=3 K=4 K=...
A A,0 A,0 A,0
B A,3 D,2 D,2
C A,∞ B,5 B,4
D A,6 A,6 A,6
Como vemos que k=2 y K=1 no se repiten realizaremos el proceso otra vez.
9
K=0 K=1 K=2 K=3 K=4 K=...
A A,0 A,0 A,0 A,0
B A,3 D,2 D,2 D,2
C A,∞ B,5 B,4 B,4
D A,6 A,6 A,6 A,6
Como podemos observar k=2 y K=3 son idénticas, mostrando el final del algoritmo y la
+
Para leer el siguiente cuadro solo habría que analizar la columna deseada, y repitiendolo
iterando en su último resultado.
10
K=0 K=1 K=2 K=3
A A,0 A,0 A,0 A,0
B A,3 D,2 D,2 D,2
C A,∞ B,5 B,4 B,4
D A,6 A,6 A,6 A,6
Por ejemplo si deseamos llegar a C nos ubicamos en la fila C y desplazamos hasta la
última iteración para saber que debemos ir a B con un consumo de 2, luego repetiremos el
proceso para llegar a B por el por D con un consumo de -4 y de D a A con un consumo de 6.
y con eso habría acabado, aclarando que dependiendo del grafo serán más o menos
iteraciones.
En resumen. Este algoritmo puede hallar el camino más corto a pesar de sus valores, pero
está limitado a que necesita completarse para poder ser usado, y el número de operaciones
11
necesarias es exponencial así que no se puede saber cuántas iteraciones son necesarias para
completarlo.
3. ALGORITMO
Para demostrar el código usaremos el mismo grafo que hemos usado en el ejercicio
teórico pero reemplazamos las letras por sus números según el orden que estos tengan en el
alfabeto.
class Grafo:
def __init__(self, NumeroNodos:int):
self.Nodos = NumeroNodos
self.grafo = []
def agregar_arista(self, Origen:int, Destino:int, Peso:int):
self.grafo.append([Origen, Destino, Peso])
def bellman_ford(self, origen:int):
#Inicializar una lista con todos los nodos en infinitos
distancias = [float("inf")] * self.Nodos
#La distancia de si misma es 0
distancias[origen] = 0
# Actualizacion de pesos
for _ in range(self.Nodos - 1):
for O, D, P in self.grafo:
if distancias[O - 1] != float("inf") and distancias[O - 1] + P < distancias[D - 1]:
distancias[D - 1] = distancias[O - 1] + P
# Verificar ciclos de peso negativo
for O, D, P in self.grafo:
if distancias[O - 1] != float("inf") and distancias[O - 1] + P < distancias[D - 1]:
print("El grafo entró en un ciclo de entrada negativo")
return
12
self._imprimir_solucion(distancias)
def _imprimir_solucion(self, distancias):
print("Distancia mínima desde el origen:")
for nodo in range(1, self.Nodos + 1):
print(f"Nodo {nodo}: {distancias[nodo - 1]}")
bf = Grafo(4)
bf.agregar_arista(1, 2, 3)
bf.agregar_arista(1, 4, 6)
bf.agregar_arista(4, 2, -4)
bf.agregar_arista(2, 3, 2)
bf.agregar_arista(3, 4, 3)
bf.bellman_ford(0)
dando como resultado en la terminal
13
4. CONCLUSIONES
El algoritmo de Bellman-Ford es fundamental para la teoría de grafos debido a su
capacidad para encontrar el camino más corto entre dos nodos en un grafo dirigido ponderado.
Su importancia radica en varias propiedades clave que lo hacen versátil y necesario en diversas
aplicaciones.
La capacidad del algoritmo Bellman-Ford para manejar gráficos con pesos negativos lo
distingue de otros algoritmos más especializados. Su capacidad para detectar ciclos de peso
negativos es crítica en situaciones donde el costo asociado con una ventaja puede ser negativo,
evitando así resultados indefinidos o inconsistentes en problemas de optimización.
Además, la versatilidad del algoritmo se refleja en su capacidad para adaptarse a diversas
situaciones, incluida la posibilidad de manejar gráficos que presenten pesos negativos y ciclos de
pesos negativos. Esta capacidad la convierte en una herramienta valiosa en una variedad de
contextos, desde la planificación de rutas en sistemas de transporte hasta la optimización de
redes informáticas.
14
5. BIBLIOGRAFÍA
Algoritmo de Bellman, R. (11 de ene de 2021). wikipedia. Obtenido de wikipedia:
https://es.wikipedia.org/w/index.php?title=Algoritmo_de_Bellman-
Ford&oldid=132302116
Benigno, S. S. (7 de 07 de 22). Ediciones Paraninfo, S.A. Obtenido de
https://www.paraninfo.es/catalogo/9788413679280/teoria-de-grafos-y-modelizacion--
problemas-resueltos
Goldberg, A. V. (3 de 6 de 1993). ScienceDirec. Obtenido de
https://doi.org/10.1016/0893-9659(93)90022-f

Más contenido relacionado

La actualidad más candente

Dts x dicoding #2 memulai pemrograman kotlin
Dts x dicoding #2 memulai pemrograman kotlinDts x dicoding #2 memulai pemrograman kotlin
Dts x dicoding #2 memulai pemrograman kotlin
Ahmad Arif Faizin
 
Pipeline Design Project
Pipeline Design ProjectPipeline Design Project
Pipeline Design Project
Daniel Kerkhoff
 
Java practical
Java practicalJava practical
Java practical
shweta-sharma99
 
Operator overloading
Operator overloadingOperator overloading
Operator overloading
abhay singh
 
Merge sort
Merge sortMerge sort
Merge sort
Rojin Khadka
 
Bellman ford Algorithm
Bellman ford AlgorithmBellman ford Algorithm
Bellman ford Algorithm
taimurkhan803
 
Greedy algorithms -Making change-Knapsack-Prim's-Kruskal's
Greedy algorithms -Making change-Knapsack-Prim's-Kruskal'sGreedy algorithms -Making change-Knapsack-Prim's-Kruskal's
Greedy algorithms -Making change-Knapsack-Prim's-Kruskal's
Jay Patel
 
Grails object relational mapping: GORM
Grails object relational mapping: GORMGrails object relational mapping: GORM
Grails object relational mapping: GORM
Saurabh Dixit
 
Golang 101
Golang 101Golang 101
Golang 101
宇 傅
 
context free grammars automata therory and compiler design
context free grammars automata therory and compiler designcontext free grammars automata therory and compiler design
context free grammars automata therory and compiler design
sunitachalageri1
 
Shortest path algorithms
Shortest path algorithmsShortest path algorithms
Shortest path algorithms
Amit Kumar Rathi
 
Functional Domain Modeling - The ZIO 2 Way
Functional Domain Modeling - The ZIO 2 WayFunctional Domain Modeling - The ZIO 2 Way
Functional Domain Modeling - The ZIO 2 Way
Debasish Ghosh
 
Point free or die - tacit programming in Haskell and beyond
Point free or die - tacit programming in Haskell and beyondPoint free or die - tacit programming in Haskell and beyond
Point free or die - tacit programming in Haskell and beyond
Philip Schwarz
 
7-Operator Precedence Parser-23-05-2023.pptx
7-Operator Precedence Parser-23-05-2023.pptx7-Operator Precedence Parser-23-05-2023.pptx
7-Operator Precedence Parser-23-05-2023.pptx
venkatapranaykumarGa
 
Program to remove Left factoring
Program to remove Left factoringProgram to remove Left factoring
Program to remove Left factoring
Shraddha Patel
 
Monadic Java
Monadic JavaMonadic Java
Monadic Java
Mario Fusco
 
Flat plate deflection-chapter13 (1)
Flat plate deflection-chapter13 (1)Flat plate deflection-chapter13 (1)
Flat plate deflection-chapter13 (1)
Y.Naveen Kumar
 
Stress Concentration Lab
Stress Concentration LabStress Concentration Lab
Stress Concentration Lab
Siddhesh Sawant
 

La actualidad más candente (18)

Dts x dicoding #2 memulai pemrograman kotlin
Dts x dicoding #2 memulai pemrograman kotlinDts x dicoding #2 memulai pemrograman kotlin
Dts x dicoding #2 memulai pemrograman kotlin
 
Pipeline Design Project
Pipeline Design ProjectPipeline Design Project
Pipeline Design Project
 
Java practical
Java practicalJava practical
Java practical
 
Operator overloading
Operator overloadingOperator overloading
Operator overloading
 
Merge sort
Merge sortMerge sort
Merge sort
 
Bellman ford Algorithm
Bellman ford AlgorithmBellman ford Algorithm
Bellman ford Algorithm
 
Greedy algorithms -Making change-Knapsack-Prim's-Kruskal's
Greedy algorithms -Making change-Knapsack-Prim's-Kruskal'sGreedy algorithms -Making change-Knapsack-Prim's-Kruskal's
Greedy algorithms -Making change-Knapsack-Prim's-Kruskal's
 
Grails object relational mapping: GORM
Grails object relational mapping: GORMGrails object relational mapping: GORM
Grails object relational mapping: GORM
 
Golang 101
Golang 101Golang 101
Golang 101
 
context free grammars automata therory and compiler design
context free grammars automata therory and compiler designcontext free grammars automata therory and compiler design
context free grammars automata therory and compiler design
 
Shortest path algorithms
Shortest path algorithmsShortest path algorithms
Shortest path algorithms
 
Functional Domain Modeling - The ZIO 2 Way
Functional Domain Modeling - The ZIO 2 WayFunctional Domain Modeling - The ZIO 2 Way
Functional Domain Modeling - The ZIO 2 Way
 
Point free or die - tacit programming in Haskell and beyond
Point free or die - tacit programming in Haskell and beyondPoint free or die - tacit programming in Haskell and beyond
Point free or die - tacit programming in Haskell and beyond
 
7-Operator Precedence Parser-23-05-2023.pptx
7-Operator Precedence Parser-23-05-2023.pptx7-Operator Precedence Parser-23-05-2023.pptx
7-Operator Precedence Parser-23-05-2023.pptx
 
Program to remove Left factoring
Program to remove Left factoringProgram to remove Left factoring
Program to remove Left factoring
 
Monadic Java
Monadic JavaMonadic Java
Monadic Java
 
Flat plate deflection-chapter13 (1)
Flat plate deflection-chapter13 (1)Flat plate deflection-chapter13 (1)
Flat plate deflection-chapter13 (1)
 
Stress Concentration Lab
Stress Concentration LabStress Concentration Lab
Stress Concentration Lab
 

Similar a ALGORITMO DE BELLMAN FORD.pdf

Raices deecuaciones
Raices deecuacionesRaices deecuaciones
Raices deecuaciones
Flor Cardenas Alvarez
 
Electrónica digital: Funciones canónicas y mapa de Karnaugh
Electrónica digital: Funciones canónicas y mapa de KarnaughElectrónica digital: Funciones canónicas y mapa de Karnaugh
Electrónica digital: Funciones canónicas y mapa de Karnaugh
SANTIAGO PABLO ALBERTO
 
Informe
InformeInforme
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
Rosa E Padilla
 
Electrónica digital: Multiplexores, demultiplexores decodificadores, codifica...
Electrónica digital: Multiplexores, demultiplexores decodificadores, codifica...Electrónica digital: Multiplexores, demultiplexores decodificadores, codifica...
Electrónica digital: Multiplexores, demultiplexores decodificadores, codifica...
SANTIAGO PABLO ALBERTO
 
La ruta mas corta
La ruta mas cortaLa ruta mas corta
La ruta mas corta
rafael gonzalez
 
Algoritmo de dijkstra final
Algoritmo de dijkstra finalAlgoritmo de dijkstra final
Algoritmo de dijkstra final
salomon
 
IO 2(REDES).pdf
IO 2(REDES).pdfIO 2(REDES).pdf
5.2 la ruta mas corta
5.2 la ruta mas corta5.2 la ruta mas corta
5.2 la ruta mas corta
ADRIANA NIETO
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
AlgoritmoAlgoritmo
4.metodo de la biseccion
4.metodo de la biseccion4.metodo de la biseccion
4.metodo de la biseccion
rjvillon
 
Longitud de arco freddy
Longitud de arco freddyLongitud de arco freddy
Longitud de arco freddy
alpsoct
 
Soluciones A - B - C
Soluciones A - B - CSoluciones A - B - C
Soluciones A - B - C
Gerar Quispe Torres
 
Soluciones A - B - C
Soluciones A - B - CSoluciones A - B - C
Soluciones A - B - C
Gerar Quispe Torres
 
2.6 aplicaciones
2.6 aplicaciones2.6 aplicaciones
2.6 aplicaciones
Esteban Andres Diaz Mina
 
Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores
SANTIAGO PABLO ALBERTO
 
CIRC DIG CI PN02 Boole y Karnaugh Eval_por_estudiante.pdf
CIRC DIG CI PN02 Boole y Karnaugh Eval_por_estudiante.pdfCIRC DIG CI PN02 Boole y Karnaugh Eval_por_estudiante.pdf
CIRC DIG CI PN02 Boole y Karnaugh Eval_por_estudiante.pdf
AVINADAD MENDEZ
 
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdfClaseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Abdias13
 
Algoritmos busquedas
Algoritmos busquedasAlgoritmos busquedas

Similar a ALGORITMO DE BELLMAN FORD.pdf (20)

Raices deecuaciones
Raices deecuacionesRaices deecuaciones
Raices deecuaciones
 
Electrónica digital: Funciones canónicas y mapa de Karnaugh
Electrónica digital: Funciones canónicas y mapa de KarnaughElectrónica digital: Funciones canónicas y mapa de Karnaugh
Electrónica digital: Funciones canónicas y mapa de Karnaugh
 
Informe
InformeInforme
Informe
 
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
 
Electrónica digital: Multiplexores, demultiplexores decodificadores, codifica...
Electrónica digital: Multiplexores, demultiplexores decodificadores, codifica...Electrónica digital: Multiplexores, demultiplexores decodificadores, codifica...
Electrónica digital: Multiplexores, demultiplexores decodificadores, codifica...
 
La ruta mas corta
La ruta mas cortaLa ruta mas corta
La ruta mas corta
 
Algoritmo de dijkstra final
Algoritmo de dijkstra finalAlgoritmo de dijkstra final
Algoritmo de dijkstra final
 
IO 2(REDES).pdf
IO 2(REDES).pdfIO 2(REDES).pdf
IO 2(REDES).pdf
 
5.2 la ruta mas corta
5.2 la ruta mas corta5.2 la ruta mas corta
5.2 la ruta mas corta
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
4.metodo de la biseccion
4.metodo de la biseccion4.metodo de la biseccion
4.metodo de la biseccion
 
Longitud de arco freddy
Longitud de arco freddyLongitud de arco freddy
Longitud de arco freddy
 
Soluciones A - B - C
Soluciones A - B - CSoluciones A - B - C
Soluciones A - B - C
 
Soluciones A - B - C
Soluciones A - B - CSoluciones A - B - C
Soluciones A - B - C
 
2.6 aplicaciones
2.6 aplicaciones2.6 aplicaciones
2.6 aplicaciones
 
Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores
 
CIRC DIG CI PN02 Boole y Karnaugh Eval_por_estudiante.pdf
CIRC DIG CI PN02 Boole y Karnaugh Eval_por_estudiante.pdfCIRC DIG CI PN02 Boole y Karnaugh Eval_por_estudiante.pdf
CIRC DIG CI PN02 Boole y Karnaugh Eval_por_estudiante.pdf
 
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdfClaseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
 
Algoritmos busquedas
Algoritmos busquedasAlgoritmos busquedas
Algoritmos busquedas
 

Último

herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
Eduardo455921
 
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Javier Martinez Seco
 
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) -  JRM - APSTI I ADuckDuckGo (Motor de Busqueda) -  JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DarnotOcxalFlorianoP
 
sesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWAREsesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWARE
YanelyMedalithBM
 
APLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdfAPLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdf
jordanovillacorta09
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
Maria Celeste Trujillo Cruz
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
PaulDelgadoSoto
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
dayronfabricioruizmo
 

Último (10)

herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
 
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
 
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) -  JRM - APSTI I ADuckDuckGo (Motor de Busqueda) -  JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
 
sesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWAREsesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWARE
 
APLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdfAPLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdf
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
 

ALGORITMO DE BELLMAN FORD.pdf

  • 1. 1 UNIVERSIDAD TECNOLÓGICA DE LOS ANDES FACULTAD DE INGENIERÍA ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS E INFORMÁTICA ALGORITMOS Y PROGRAMACION II ING: GODOFREDO POCCORI UMERES PRESENTAN: • MAROCHO HUAMAN ALEXANDER • HUACAC SOTO ALVARO • YUPANQUI JARA MARIA EMPERATRIZ • GAMARRA RODRIGUEZ FRAN FERNANDO CUSCO-PERU
  • 2. 2 INDICE 1. INTRODUCCIÓN................................................................................................................. 3 2. ALGORITMO DE BELLMAN-FORD............................................................................... 5 3. ALGORITMO ..................................................................................................................... 11 4. CONCLUSIONES ............................................................................................................... 13 5. BIBLIOGRAFÍA ................................................................................................................. 14
  • 3. 3 1. INTRODUCCIÓN Así como los problemas de los puentes de Königsberg fueron resueltos por Leonhard Euler nosotros resolvimos este tema basándonos en los pasos que se sigue en un grafo y así llegar a concluir este trabajo de manera exitosa El problema de los puentes de Königsberg es un problema matemático resuelto por Leonhard Euler en 1736 y cuya resolución dio origen a la teoría de grafos. El problema se formuló en el siglo XVIII y consistía en encontrar un recorrido para cruzar a pie toda la ciudad pasando solo una vez por cada uno de los puentes y regresando al mismo punto de inicio. La respuesta es negativa, es decir, no existe una ruta con estas características. Desarrollado por Richar Bellman, Lester Ford y Samuel Ens . Quienes dicen “Los pesos negativos no son simplemente una curiosidad matemática, surgen de una forma natural en la reducción a problemas de caminos más cortos” Similar a un algoritmo de Dijkstra, el algoritmo de bellman-ford genera el camino más corto en un grafo dirigido ponderado. El algoritmo de Dijkstra está hecho para resolver el
  • 4. 4 problema con un tiempo menor, pero eso hace como consecuencia de que el grafo no pueda usar negativos en los valores de las aristas. Debido a ello el algoritmo se vé solo cuando los pesos de las aristas sean negativos, aunque sea uno solo de ellos. Estos se han vuelto en un gran ejemplo para la reducción de los problemas en los caminos hamiltonianos que es de orden de complejidad NP-Completo, siendo los cuales un algoritmo que a pesar de su utilidad es prácticamente tan complejo que pueden llegar a ser de una complejidad incluso superior a N²-1. Otra propiedad de este algoritmo es que si este contiene un ciclo de coste negativo el algoritmo será capaz de detectarlo, pero no encontrará el camino más corto que no repita ningún vértice en el proceso.
  • 5. 5 2. ALGORITMO DE BELLMAN-FORD Para realizar la teoria tomaremos una ejemplo asumiendo el siguiente grafo dirigido con una nodos A,B,C y D. y respectivas distancias entre ellos: consecuentemente tendremos una tabla con iteraciones que desconocemos desde un principio e iremos resolviendo durante el proceso: K=0 K=1 K=2 K=3 K=4 K=... A A,0 B A,3 C A,∞ D A,6
  • 6. 6 Donde la distancia se ve inicializada en K=0 desde el punto de origen hasta los todos los nodos, inclusive si no tienen un peso. De tal forma que de A hasta A hay 0 puesto que es el mismo nodo, de A hasta B hay 6, de A hasta C hay ∞ puesto que no hay un camino definido y por ende es infinito y de A hasta D es 6. A partir de aquí lo que haremos es actualizar las etiquetas con las nuevas distancias que vamos conociendo una vez hemos inicializado. Tras inicializar A se quedaría igual se toma el menor número para a desde la suma de sus diferentes rutas y tomando el menor, para el primer caso Para llegar a B con un peso de 3 o tomando de a a D con un peso de 2 luego de sumar sus pesos. Para llegar a C la menor ruta tomando la ruta anterior +2 por su peso sería 5. Para acabar con D quedándose igual puesto que la ruta menor sigue siendo la misma.
  • 7. 7 Y correspondientemente asignaremos los nuevos valores a la tabla. K=0 K=1 K=2 K=3 K=4 K=... A A,0 A,0 B A,3 D,2 C A,∞ B,5 D A,6 A,6 Y repetimos el proceso aclarando que siempre tomaremos la última etiqueta expresada. Repitiendo tantas veces sea necesario, hasta que K=n tiene que ser igual a K=n-1.
  • 8. 8 K=0 K=1 K=2 K=3 K=4 K=... A A,0 A,0 A,0 B A,3 D,2 D,2 C A,∞ B,5 B,4 D A,6 A,6 A,6 Como vemos que k=2 y K=1 no se repiten realizaremos el proceso otra vez.
  • 9. 9 K=0 K=1 K=2 K=3 K=4 K=... A A,0 A,0 A,0 A,0 B A,3 D,2 D,2 D,2 C A,∞ B,5 B,4 B,4 D A,6 A,6 A,6 A,6 Como podemos observar k=2 y K=3 son idénticas, mostrando el final del algoritmo y la + Para leer el siguiente cuadro solo habría que analizar la columna deseada, y repitiendolo iterando en su último resultado.
  • 10. 10 K=0 K=1 K=2 K=3 A A,0 A,0 A,0 A,0 B A,3 D,2 D,2 D,2 C A,∞ B,5 B,4 B,4 D A,6 A,6 A,6 A,6 Por ejemplo si deseamos llegar a C nos ubicamos en la fila C y desplazamos hasta la última iteración para saber que debemos ir a B con un consumo de 2, luego repetiremos el proceso para llegar a B por el por D con un consumo de -4 y de D a A con un consumo de 6. y con eso habría acabado, aclarando que dependiendo del grafo serán más o menos iteraciones. En resumen. Este algoritmo puede hallar el camino más corto a pesar de sus valores, pero está limitado a que necesita completarse para poder ser usado, y el número de operaciones
  • 11. 11 necesarias es exponencial así que no se puede saber cuántas iteraciones son necesarias para completarlo. 3. ALGORITMO Para demostrar el código usaremos el mismo grafo que hemos usado en el ejercicio teórico pero reemplazamos las letras por sus números según el orden que estos tengan en el alfabeto. class Grafo: def __init__(self, NumeroNodos:int): self.Nodos = NumeroNodos self.grafo = [] def agregar_arista(self, Origen:int, Destino:int, Peso:int): self.grafo.append([Origen, Destino, Peso]) def bellman_ford(self, origen:int): #Inicializar una lista con todos los nodos en infinitos distancias = [float("inf")] * self.Nodos #La distancia de si misma es 0 distancias[origen] = 0 # Actualizacion de pesos for _ in range(self.Nodos - 1): for O, D, P in self.grafo: if distancias[O - 1] != float("inf") and distancias[O - 1] + P < distancias[D - 1]: distancias[D - 1] = distancias[O - 1] + P # Verificar ciclos de peso negativo for O, D, P in self.grafo: if distancias[O - 1] != float("inf") and distancias[O - 1] + P < distancias[D - 1]: print("El grafo entró en un ciclo de entrada negativo") return
  • 12. 12 self._imprimir_solucion(distancias) def _imprimir_solucion(self, distancias): print("Distancia mínima desde el origen:") for nodo in range(1, self.Nodos + 1): print(f"Nodo {nodo}: {distancias[nodo - 1]}") bf = Grafo(4) bf.agregar_arista(1, 2, 3) bf.agregar_arista(1, 4, 6) bf.agregar_arista(4, 2, -4) bf.agregar_arista(2, 3, 2) bf.agregar_arista(3, 4, 3) bf.bellman_ford(0) dando como resultado en la terminal
  • 13. 13 4. CONCLUSIONES El algoritmo de Bellman-Ford es fundamental para la teoría de grafos debido a su capacidad para encontrar el camino más corto entre dos nodos en un grafo dirigido ponderado. Su importancia radica en varias propiedades clave que lo hacen versátil y necesario en diversas aplicaciones. La capacidad del algoritmo Bellman-Ford para manejar gráficos con pesos negativos lo distingue de otros algoritmos más especializados. Su capacidad para detectar ciclos de peso negativos es crítica en situaciones donde el costo asociado con una ventaja puede ser negativo, evitando así resultados indefinidos o inconsistentes en problemas de optimización. Además, la versatilidad del algoritmo se refleja en su capacidad para adaptarse a diversas situaciones, incluida la posibilidad de manejar gráficos que presenten pesos negativos y ciclos de pesos negativos. Esta capacidad la convierte en una herramienta valiosa en una variedad de contextos, desde la planificación de rutas en sistemas de transporte hasta la optimización de redes informáticas.
  • 14. 14 5. BIBLIOGRAFÍA Algoritmo de Bellman, R. (11 de ene de 2021). wikipedia. Obtenido de wikipedia: https://es.wikipedia.org/w/index.php?title=Algoritmo_de_Bellman- Ford&oldid=132302116 Benigno, S. S. (7 de 07 de 22). Ediciones Paraninfo, S.A. Obtenido de https://www.paraninfo.es/catalogo/9788413679280/teoria-de-grafos-y-modelizacion-- problemas-resueltos Goldberg, A. V. (3 de 6 de 1993). ScienceDirec. Obtenido de https://doi.org/10.1016/0893-9659(93)90022-f