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 44 of file SteinerTreeLowerBoundDualAscent.h.
|
inline |
Initializes the algorithm.
Definition at line 193 of file SteinerTreeLowerBoundDualAscent.h.
|
inline |
Initializes the algorithm (and takes the first terminal as root)
Definition at line 219 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Adds a node to the cut and add neighbors recursively.
Definition at line 86 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Definition at line 122 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Finds the terminal with the smallest cut arc set (of the last iteration)
Definition at line 72 of file SteinerTreeLowerBoundDualAscent.h.
|
inline |
Computes the lower bound.
Definition at line 224 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 145 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Finds the cheapest arc in cut
and returns its cost.
Definition at line 162 of file SteinerTreeLowerBoundDualAscent.h.
|
inline |
Returns the lower bound.
Definition at line 237 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 234 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Definition at line 131 of file SteinerTreeLowerBoundDualAscent.h.
|
inlineprivate |
Updates reduced costs and cut data.
Definition at line 173 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 63 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 65 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Mapping of nodes to the cuts they are in.
Definition at line 69 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 64 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 68 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 67 of file SteinerTreeLowerBoundDualAscent.h.
|
private |
Definition at line 66 of file SteinerTreeLowerBoundDualAscent.h.