Está en la página 1de 2

Estructura de Datos y Algoritmos II EDAII curso 2019-2020

Clase Práctica 9: Caminos mínimos en Grafos ponderados con costos negativos. Algoritmo
Bellman-Ford.

Algoritmo Bellman-Ford
/**
* Ejecuta el algoritmo de caminos mínimos.
* Se permiten aristas con costo negativo.
* Devuelve false si se detectan ciclos negativos.
*/
Dado un vértice inicial s:
1. Se inicializan todos los atributos necesarios a través del
método limpiarDatos().
2. Se actualiza la distancia de s en cero.
3. Se pone a s en la cola y se aumenta su atributo extra.
4. Mientras la cola NO este vacía:
4.1. Se quita el primero de la cola (v)
4.2. Se aumenta el extra de v.
4.3. Si extra(v) > 2*cantidad de vértices
entonces Terminar con falso.
4.4. Para cada vecino w de v
4.4.1. Si distancia(w)>distancia(v) + costo(v,w)
entonces Actualizar distancia
Actualizar anterior
Si w NO está en la cola //usar extra
entonces insertar w en la cola y
aumentar su extra.
sino aumentar extra en 2
5. Terminar satisfactoriamente.

1. Dado el siguiente grafo dirigido:

V0 1 V1
3
-3
2 V3
V2
2

a) Represente gráficamente en una Lista de Adyacencia y Matriz de Adyacencia, el grafo


anterior.
b) Ejecute el algoritmo Bellman-Ford sobre el grafo colocando al lado de cada vértice el
valor del camino mínimo, tomando V0 como vértice origen.
c) Qué pasaría si cambiáramos la arista (V0, V1) con costo 1 por (V1, V0) con costo -1.

2. Escriba en Java un método para cada clase de las estudiadas, que implemente el algoritmo para
el cálculo de los caminos mínimos en grafos ponderados con costos negativos y que responda al
siguiente encabezamiento:
public boolean caminoMConPesosNegativos(String verticeOrigen)
3. Escriba en Java un programa principal que dado un grafo que tenga costos negativos y un
vértice origen, muestre los caminos mínimos a todos los restantes vértices del grafo utilizando
el algoritmo visto anteriormente.

Bibliografía:
1. Estructura de Datos en Java, volumen II, capitulo 14, epígrafe 14.2, pag 370.
2. Introduction to Algorithms

También podría gustarte