54template<
typename TCost>
69 edge e_st =
nullptr)
override {
71 return call(graph, weight, s, t, edgeList, e_st);
77template<
typename TCost>
89 if (e_st !=
nullptr) {
90 e_st = m_gc->copy(e_st);
92 e_st = m_gc->searchEdge(m_gc->copy(s), m_gc->copy(t));
100 TCost sumOfWeights(0);
101 for (
edge e : m_gc->edges) {
103 weightDual[dual.
dualEdge(e)] = weight[m_gc->original(e)];
104 sumOfWeights += weightDual[dual.
dualEdge(e)];
108 weightDual[dual.
dualEdge(e_st)] = sumOfWeights + 1;
114 D.
call(dual, weightDual, sourceNodeList, prevEdge, distance);
118 edge eDual = prevEdge[v];
122 edgeList.
pushBack(m_gc->original(eG));
125 }
while (v != source);
Declaration of CombinatorialEmbedding and face.
Includes declaration of dual graph class.
Includes declaration of graph class.
Declaration of graph copy classes.
Declaration of doubly linked lists and iterators.
Template of base class of min-st-cut algorithms.
Basic declarations, included by all source files.
Combinatorial embeddings of planar graphs with modification functionality.
face rightFace(adjEntry adj) const
Returns the face to the right of adj, i.e., the face containing adj.
face leftFace(adjEntry adj) const
Returns the face to the left of adj, i.e., the face containing the twin of adj.
Dijkstra's single source shortest path algorithm.
void call(const Graph &G, const EdgeArray< T > &weight, const List< node > &sources, NodeArray< edge > &predecessor, NodeArray< T > &distance, bool directed=false, bool arcsReversed=false, node target=nullptr, T maxLength=std::numeric_limits< T >::max())
Calculates, based on the graph G with corresponding edge costs and source nodes, the shortest paths a...
A dual graph including its combinatorial embedding of an embedded graph.
const edge & primalEdge(edge e) const
Returns the edge in the primal graph corresponding to e.
const node & dualNode(face f) const
Returns the node in the dual graph corresponding to f.
const edge & dualEdge(edge e) const
Returns the edge in the dual graph corresponding to e.
Class for the representation of edges.
adjEntry adjSource() const
Returns the corresponding adjacancy entry at source node.
node target() const
Returns the target node of the edge.
node source() const
Returns the source node of the edge.
Copies of graphs supporting edge splitting.
Data type for general directed graphs (adjacency list representation).
Doubly linked lists (maintaining the length of the list).
void clear()
Removes all elements from the list.
iterator pushBack(const E &x)
Adds element x at the end of the list.
iterator pushFront(const E &x)
Adds element x at the beginning of the list.
Min-st-cut algorithm, that calculates the cut by calculating the shortest path between the faces adja...
virtual bool call(const Graph &graph, const EdgeArray< TCost > &weight, node s, node t, List< edge > &edgeList, edge e_st=nullptr) override
The actual algorithm call.
virtual bool call(const Graph &graph, node s, node t, List< edge > &edgeList, edge e_st=nullptr) override
The actual algorithm call.
bool preprocessingDual(const Graph &graph, GraphCopy &gc, CombinatorialEmbedding &CE, node source, node target, edge e_st)
This method preprocesses gc for minstcut calculations, by adding an st-edge if needed and embedding g...
Class for the representation of nodes.
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
RegisteredArray for nodes, edges and adjEntries of a graph.
Implementation of Dijkstra's single source shortest path algorithm.
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
The namespace for all OGDF objects.