Computes lower bounds for minimum Steiner tree instances. More...
#include <ogdf/graphalg/SteinerTreeLowerBoundDualAscent.h>
Classes | |
| struct | TerminalData |
| struct | TerminalDataReference |
Public Member Functions | |
| LowerBoundDualAscent (const EdgeWeightedGraph< T > &graph, const List< node > &terminals, double eps=1e-6) | |
| Initializes the algorithm (and takes the first terminal as root) | |
| LowerBoundDualAscent (const EdgeWeightedGraph< T > &graph, const List< node > &terminals, node root, double eps=1e-6) | |
| Initializes the algorithm. | |
| void | compute () |
| Computes the lower bound. | |
| T | get () const |
| Returns the lower bound. | |
| T | reducedCost (adjEntry adj) const |
Returns the reduced cost of the arc given by adj. | |
Private Member Functions | |
| bool | addNode (ListIterator< TerminalData > &it, node t) |
| Adds a node to the cut and add neighbors recursively. | |
| bool | addNodeChecked (ListIterator< TerminalData > &it, node w) |
| ListIterator< TerminalData > | chooseTerminal () |
| Finds the terminal with the smallest cut arc set (of the last iteration) | |
| void | extendCut (adjEntry adj) |
Assumes that the reduced cost of arc adj is zeroed and hence updates (in relevant cuts) the set of arcs coming into W (where W is the smallest node set containing a given terminal but not m_root such that all these arcs have reduced cost greater than zero; this is done for all terminals affected by adj). | |
| T | findCheapestCutArcCost (const TerminalData &td) const |
Finds the cheapest arc in cut and returns its cost. | |
| void | removeTerminalData (ListIterator< TerminalData > it) |
| void | update (TerminalData &td, T delta) |
| Updates reduced costs and cut data. | |
Private Attributes | |
| EpsilonTest | m_eps |
| const EdgeWeightedGraph< T > & | m_graph |
| NodeArray< List< ListIterator< TerminalData > > > | m_inTerminalCut |
| Mapping of nodes to the cuts they are in. | |
| T | m_lower |
| AdjEntryArray< T > | m_reducedCost |
| node | m_root |
| List< TerminalData > | m_terminals |
Computes lower bounds for minimum Steiner tree instances.
Definition at line 53 of file SteinerTreeLowerBoundDualAscent.h.
|
inline |
Initializes the algorithm.
Definition at line 202 of file SteinerTreeLowerBoundDualAscent.h.
|
inline |
Initializes the algorithm (and takes the first terminal as root)
Definition at line 228 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Adds a node to the cut and add neighbors recursively.
Definition at line 95 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Definition at line 131 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Finds the terminal with the smallest cut arc set (of the last iteration)
Definition at line 81 of file SteinerTreeLowerBoundDualAscent.h.
|
inline |
Computes the lower bound.
Definition at line 233 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Assumes that the reduced cost of arc adj is zeroed and hence updates (in relevant cuts) the set of arcs coming into W (where W is the smallest node set containing a given terminal but not m_root such that all these arcs have reduced cost greater than zero; this is done for all terminals affected by adj).
Definition at line 154 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Finds the cheapest arc in cut and returns its cost.
Definition at line 171 of file SteinerTreeLowerBoundDualAscent.h.
|
inline |
Returns the lower bound.
Definition at line 246 of file SteinerTreeLowerBoundDualAscent.h.
|
inline |
Returns the reduced cost of the arc given by adj.
| adj | is the adjacency entry of an edge at a node, represents the arc coming into that node |
Definition at line 243 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Definition at line 140 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Updates reduced costs and cut data.
Definition at line 182 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 72 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 74 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Mapping of nodes to the cuts they are in.
Definition at line 78 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 73 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 77 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 76 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 75 of file SteinerTreeLowerBoundDualAscent.h.