com.mhhe.clrs2e
Class EdmondsKarp
java.lang.Object
|
+--com.mhhe.clrs2e.MaxFlow
|
+--com.mhhe.clrs2e.EdmondsKarp
- public class EdmondsKarp
- extends MaxFlow
Implements the Edmonds-Karp algorithm for maximum flow from
Section 26.2 of Introduction to Algorithms, Second
edition.
Nested Class Summary |
private static class |
EdmondsKarp.EKInfo
Inner class for the information found by a breadth-first
search in the Edmonds-Karp algorithm. |
Method Summary |
EdmondsKarp.EKInfo[] |
breadthFirstSearch(com.mhhe.clrs2e.FlowNetwork g,
com.mhhe.clrs2e.Vertex s,
com.mhhe.clrs2e.Vertex t)
Performs a breadth-first search in the Edmonds-Karp algorithm. |
void |
computeMaxFlow(com.mhhe.clrs2e.FlowNetwork g,
com.mhhe.clrs2e.Vertex s,
com.mhhe.clrs2e.Vertex t)
Finds a maximum flow in a flow network from a given source to a
given sink. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
EdmondsKarp
public EdmondsKarp()
computeMaxFlow
public void computeMaxFlow(com.mhhe.clrs2e.FlowNetwork g,
com.mhhe.clrs2e.Vertex s,
com.mhhe.clrs2e.Vertex t)
- Finds a maximum flow in a flow network from a given source to a
given sink.
- Specified by:
computeMaxFlow
in class MaxFlow
- Parameters:
g
- The flow network.s
- The source vertex.t
- The sink vertex.
breadthFirstSearch
public EdmondsKarp.EKInfo[] breadthFirstSearch(com.mhhe.clrs2e.FlowNetwork g,
com.mhhe.clrs2e.Vertex s,
com.mhhe.clrs2e.Vertex t)
- Performs a breadth-first search in the Edmonds-Karp algorithm.
This method is written as distinct code from the BFS.search(com.mhhe.clrs2e.AdjacencyListGraph, com.mhhe.clrs2e.Vertex)
version of breadth-first search because
- We have to maintain additional information upon visiting
a vertex, namely the edge that is taken into the vertex.
- We stop once we find the sink.
- Parameters:
g
- The flow network.s
- The source vertex.t
- The sink vertex.
- Returns:
- An array of
EKInfo
objects, one per
vertex.