41namespace steiner_tree {
The Sparse Table Algorithm for the Least Common Ancestor problem as proposed by Bender and Farach-Col...
Interface for various LCA methods.
Definition of a Triple used in contraction-based approximation algorithm for the minimum Steiner tree...
Class for the representation of edges.
Data type for general directed graphs (adjacency list representation).
virtual void clear()
Removes all nodes and all edges from the graph.
Implements the <O(n log n), O(1)>-time "sparse table" algorithm by Bender and Farach-Colton to comput...
node call(node u, node v) const
Returns the LCA of two nodes u and v.
Dynamic arrays indexed with nodes.
Class for the representation of nodes.
This class serves as an interface for different approaches concerning the calculation of save edges.
This class behaves basically the same as SaveDynamic except that the update of the weighted graph is ...
EdgeWeightedGraphCopy< T > * m_steinerTree
A pointer to the tree we represent the save for.
node m_root
The root of m_tree.
SaveStatic(EdgeWeightedGraphCopy< T > &steinerTree)
void rebuild()
Rebuild the data structure (necessary if the tree has changed)
LCA * m_lca
The LCA data structure for m_tree.
NodeArray< edge > m_treeEdge
Maps each inner node of m_tree to an edge in m_steinerTree.
virtual void update(const Triple< T > &t)
Updates the weighted tree data structure given a contracted triple.
NodeArray< node > m_cTerminals
node lca(node u, node v) const
Returns the node corresponding to the LCA between two given nodes.
virtual T gain(node u, node v, node w) const
Returns the gain (sum of the save edges) of a node triple by an LCA query.
Graph m_tree
The weighted binary tree to represent the edge weight hierarchy.
virtual T saveWeight(node u, node v) const
Determines the weight of the save edge between two nodes by a LCA query.
virtual edge saveEdge(node u, node v) const
Determines the save edge between two nodes by a LCA query.
This class represents a triple used by various contraction-based minimum Steiner tree approximations.
Algorithms used by at least two functions of Steiner tree code or its internal helpers.
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
node buildHeaviestEdgeInComponentTree(const EdgeWeightedGraphCopy< T > &inputTree, NodeArray< node > &externalNodes, NodeArray< edge > &treeEdge, Graph &outputTree)
Given an edge-weighted tree, builds an auxiliary arborescence where each arc of the input tree is a n...
void contractTripleInSteinerTree(const Triple< T > &t, EdgeWeightedGraphCopy< T > &st, edge save0, edge save1, edge save2, edge &ne0, edge &ne1)
Updates the Steiner tree by deleting save edges, removing all direct connections between the terminal...
The namespace for all OGDF objects.