42namespace steiner_tree {
167 const node v =
q.pop();
170 const edge e = adj->theEdge();
172 const node w = adj->twinNode();
Declaration and implementation of HashArray class.
Interface for various LCA methods.
Definition of a Triple used in contraction-based approximation algorithm for the minimum Steiner tree...
Declaration and implementation of list-based queues (classes QueuePure<E> and Queue<E>).
Class for adjacency list elements.
The parameterized class Array2D implements dynamic two-dimensional arrays.
Dynamic arrays indexed with edges.
Class for the representation of edges.
Doubly linked lists (maintaining the length of the list).
Dynamic arrays indexed with nodes.
Class for the representation of nodes.
internal::GraphObjectContainer< AdjElement > adjEntries
The container containing all entries in the adjacency list of this node.
The parameterized class Queue<E> implements list-based queues.
iterator append(const E &x)
Adds x at the end of queue.
This class computes save edges recursively and stores for every node pair their save edge in a HashAr...
SaveEnum(EdgeWeightedGraphCopy< T > &steinerTree)
Initializes the data structures and calculates a MST of the given complete terminal graph.
void build()
Build the lookup table.
void buildRecursively(EdgeArray< bool > &hidden, node u, List< node > &processedNodes)
Builds the lookup table for the save edges recursively.
Array2D< edge > m_save
Data structure for the lookup table.
EdgeWeightedGraphCopy< T > * m_steinerTree
The current terminal spanning tree.
virtual T gain(node u, node v, node w) const
Returns the gain (sum of the save edges) of a node triple by an table lookup.
void rebuild()
Rebuild the lookup table (necessary if the tree has changed)
virtual edge saveEdge(node u, node v) const
Determines the save edge between two nodes by a table lookup.
virtual void update(const Triple< T > &t)
Updates the weighted tree data structure given a contracted triple.
virtual T saveWeight(node u, node v) const
Determines the weight of the save edge between two nodes by a table lookup.
This class serves as an interface for different approaches concerning the calculation of save edges.
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()
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.