Added bellman-ford implementation.
diff --git a/utils/misc/src/main/java/org/onlab/graph/BreadthFirstSearch.java b/utils/misc/src/main/java/org/onlab/graph/BreadthFirstSearch.java
index c02afea..daf8ca2 100644
--- a/utils/misc/src/main/java/org/onlab/graph/BreadthFirstSearch.java
+++ b/utils/misc/src/main/java/org/onlab/graph/BreadthFirstSearch.java
@@ -10,7 +10,8 @@
extends AbstractGraphPathSearch<V, E> {
@Override
- public Result<V, E> search(Graph<V, E> graph, V src, V dst, EdgeWeight<V, E> ew) {
+ public Result<V, E> search(Graph<V, E> graph, V src, V dst,
+ EdgeWeight<V, E> weight) {
checkArguments(graph, src, dst);
// Prepare the graph result.
@@ -18,7 +19,7 @@
// Setup the starting frontier with the source as the sole vertex.
Set<V> frontier = new HashSet<>();
- result.costs.put(src, 0.0);
+ result.updateVertex(src, null, 0.0, true);
frontier.add(src);
boolean reachedEnd = false;
@@ -35,9 +36,8 @@
V nextVertex = edge.dst();
if (!result.hasCost(nextVertex)) {
// If this vertex has not been visited yet, update it.
- result.updateVertex(nextVertex, edge,
- cost + (ew == null ? 1.0 : ew.weight(edge)),
- true);
+ double newCost = cost + (weight == null ? 1.0 : weight.weight(edge));
+ result.updateVertex(nextVertex, edge, newCost, true);
// If we have reached our intended destination, bail.
if (nextVertex.equals(dst)) {
reachedEnd = true;