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) More... | |
LowerBoundDualAscent (const EdgeWeightedGraph< T > &graph, const List< node > &terminals, node root, double eps=1e-6) | |
Initializes the algorithm. More... | |
void | compute () |
Computes the lower bound. More... | |
T | get () const |
Returns the lower bound. More... | |
T | reducedCost (adjEntry adj) const |
Returns the reduced cost of the arc given by adj . More... | |
Private Member Functions | |
bool | addNode (ListIterator< TerminalData > &it, node t) |
Adds a node to the cut and add neighbors recursively. More... | |
bool | addNodeChecked (ListIterator< TerminalData > &it, node w) |
ListIterator< TerminalData > | chooseTerminal () |
Finds the terminal with the smallest cut arc set (of the last iteration) More... | |
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 ). More... | |
T | findCheapestCutArcCost (const TerminalData &td) const |
Finds the cheapest arc in cut and returns its cost. More... | |
void | removeTerminalData (ListIterator< TerminalData > it) |
void | update (TerminalData &td, T delta) |
Updates reduced costs and cut data. More... | |
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. More... | |
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.