8 typedef std::vector<Path *> PathVector;
23 template<
class Tannotation,
class Tedge_iterator>
24 void Dijkstra(NodeID from, PathVector &paths);
52 bool EliminateCycles(PathVector &path, NodeID origin_id, NodeID next_id);
A handler doing "something" on a link graph component.
Class for calculation jobs to be run on link graphs.
First pass of the MCF calculation.
MCF1stPass(LinkGraphJob &job)
Run the first pass of the MCF calculation.
bool EliminateCycles()
Eliminate all cycles in the graph.
uint FindCycleFlow(const PathVector &path, const Path *cycle_begin)
Find the flow along a cycle including cycle_begin in path.
void EliminateCycle(PathVector &path, Path *cycle_begin, uint flow)
Eliminate a cycle of the given flow in the given set of paths.
Second pass of the MCF calculation.
MCF2ndPass(LinkGraphJob &job)
Run the second pass of the MCF calculation which assigns all remaining demands to existing paths.
Link graph handler for MCF.
void Run(LinkGraphJob &job) const override
Run the calculation.
Multi-commodity flow calculating base class.
MultiCommodityFlow(LinkGraphJob &job)
Constructor.
void Dijkstra(NodeID from, PathVector &paths)
A slightly modified Dijkstra algorithm.
LinkGraphJob & job
Job we're working with.
uint max_saturation
Maximum saturation for edges.
uint PushFlow(Node &node, NodeID to, Path *path, uint accuracy, uint max_saturation)
Push flow along a path and update the unsatisfied_demand of the associated edge.
void CleanupPaths(NodeID source, PathVector &paths)
Clean up paths that lead nowhere and the root path.
A leg of a path in the link graph.
Some typedefs for component handlers.