|
lab_flow
Foreboding Flow
|
Represents a algorithm to determine the maximum network flow of a graph. More...
#include <NetworkFlow.h>
Public Member Functions | |
| NetworkFlow (Graph &startingGraph, Vertex source, Vertex sink) | |
| Constructor to create a flow analyzer. More... | |
| bool | findAugmentingPath (Vertex source, Vertex sink, std::vector< Vertex > &path, std::set< Vertex > &visited) |
| Create an initial residual graph. More... | |
| bool | findAugmentingPath (Vertex source, Vertex sink, std::vector< Vertex > &path) |
| findAugmentingPath - use DFS to find a path in the residual graph with leftover capacity. More... | |
| int | pathCapacity (const std::vector< Vertex > &path) const |
| pathCapacity - Determine the capacity of a path in the residual graph. More... | |
| const Graph & | calculateFlow () |
| calculuateFlow - Determine the capacity of a path in the residual graph. More... | |
| const Graph & | getGraph () const |
| Returns a constant reference to the state space graph. More... | |
| const Graph & | getFlowGraph () const |
| const Graph & | getResidualGraph () const |
| int | getMaxFlow () const |
Private Attributes | |
| Graph & | g_ |
| Graph | residual_ |
| Graph | flow_ |
| Vertex | source_ |
| Vertex | sink_ |
| int | maxFlow_ |
Represents a algorithm to determine the maximum network flow of a graph.
Constructor to create a flow analyzer.
| startingGraph | The initial graph. |
| source | The source vertex. |
| sink | The sink vertex. |
| const Graph & NetworkFlow::calculateFlow | ( | ) |
calculuateFlow - Determine the capacity of a path in the residual graph.
Sets the member function maxFlow_ to be the flow, and updates the residual graph and flow graph according to the algorithm.
| bool NetworkFlow::findAugmentingPath | ( | Vertex | source, |
| Vertex | sink, | ||
| std::vector< Vertex > & | path, | ||
| std::set< Vertex > & | visited | ||
| ) |
Create an initial residual graph.
findAugmentingPath - use DFS to find a path in the residual graph with leftover capacity.
Find an augmenting path from the source to the sink.
This version is the helper function.
| source | The starting (current) vertex |
| sink | The destination vertex |
| path | The vertices in the path |
| visited | A set of vertices we have visited |
| bool NetworkFlow::findAugmentingPath | ( | Vertex | source, |
| Vertex | sink, | ||
| std::vector< Vertex > & | path | ||
| ) |
findAugmentingPath - use DFS to find a path in the residual graph with leftover capacity.
This version is the main function. It initializes a set to keep track of visited vertices.
| source | The starting (current) vertex |
| sink | The destination vertex |
| path | The vertices in the path |
| const Graph & NetworkFlow::getGraph | ( | ) | const |
Returns a constant reference to the state space graph.
| int NetworkFlow::pathCapacity | ( | const std::vector< Vertex > & | path | ) | const |
pathCapacity - Determine the capacity of a path in the residual graph.
| path | The vertices in the path |