Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
V0 1 V1
3
-3
2 V3
V2
2
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