Computes planar separators using Fundamental Cycles. More...
#include <ogdf/graphalg/SeparatorLiptonTarjanFC.h>
Public Member Functions | |
SeparatorLiptonTarjanFC (bool useTriBFS=false) | |
Constructor. | |
virtual double | getMaxSeparatorSize (int n) const override |
Provides the maximal separator size that this algorithm guarantees as a function of the number of nodes of the graph, or a negative value if the guarantee cannot be expressed through such a function. | |
Public Member Functions inherited from ogdf::PlanarSeparatorModule | |
PlanarSeparatorModule () | |
virtual | ~PlanarSeparatorModule () |
void | addPostProcessor (Postprocessor &post) |
Adds a postprocessor to this separator, which will always be applied. | |
void | clearPostProcessors () |
Deletes all appended postprocessors from this separator. | |
std::string | getExitPoint () const |
Returns the exitPoint, i.e. | |
virtual std::string | getName () const |
Returns the full name of this algorithm. | |
virtual bool | separate (const Graph &G, List< node > &separator, List< node > &first, List< node > &second, bool checkPreconditions=true) final |
Separates a planar graph. | |
virtual bool | separate (const Graph &G, NodeArray< short > &assignments, bool checkPreconditions=true) final |
Separates a planar graph. | |
void | setStartIndex (int index) |
Protected Member Functions | |
edge | chooseEdge () const |
Randomly selects the initial edge for the first cycle. | |
virtual bool | doSeparate (const Graph &G, List< node > &separator, List< node > &first, List< node > &second) override |
Core of the specific separation algorithm - override this in inheriting classes. | |
virtual bool | findCycle (List< node > &separator, List< node > &first, List< node > &second) |
Finds a cycle that works as a separator. | |
virtual std::string | getSpecificName () const override |
Returns the unique name of the core algorithm, to be combined with postprocessors later. | |
Protected Member Functions inherited from ogdf::PlanarSeparatorModule | |
bool | cleanup (const Graph &G, List< node > &separator, List< node > &first, List< node > &second) |
Performs built-in post-processing: For small instances, it can happen that all nodes are assigned to the separator, while both components are empty, which can be fixed by moving half of the nodes to the first list. | |
node | getStartNode (const Graph &G) const |
Selects the starting node for the BFS. | |
bool | postProcess (const Graph &G, List< node > &separator, List< node > &first, List< node > &second) |
Apply all postprocessors. | |
virtual void | reset () |
Reset everything to enable reuse of the module. | |
bool | separateComponents (GraphCopy &G, List< node > &separator, List< node > &first, List< node > &second, bool skip=false) const |
Checks if the graph consists of multiple connected components, takes necessary steps for fixing that, returns true if this already solved the graph, false if the core algorithm still needs to run. | |
bool | setup (const Graph &G, List< node > &separator, List< node > &first, List< node > &second, bool checkPreconditions=true) |
Performs some initial setup to ensure that all preconditions hold and takes trivial steps to separate the graph. | |
Protected Attributes | |
std::shared_ptr< ArrayBFSTree > | tree |
bool | useTriangulatingBFS |
Protected Attributes inherited from ogdf::PlanarSeparatorModule | |
std::string | exitPoint |
std::shared_ptr< GraphCopy > | graph |
std::vector< Postprocessor * > | postProcessors |
int | startNodeIndex = -1 |
Computes planar separators using Fundamental Cycles.
Computes planar separators using only the Fundamental Cycle Lemma (ie. the second half of Lipton Tarjan).
Definition at line 86 of file SeparatorLiptonTarjanFC.h.
Constructor.
useTriBFS | whether to use triangulating BFS or not |
Definition at line 93 of file SeparatorLiptonTarjanFC.h.
|
protected |
Randomly selects the initial edge for the first cycle.
|
overrideprotectedvirtual |
Core of the specific separation algorithm - override this in inheriting classes.
G | the graph to be separated |
separator | the separator nodes |
first | the first component |
second | the second component |
Implements ogdf::PlanarSeparatorModule.
Reimplemented in ogdf::SeparatorDualFC.
|
protectedvirtual |
Finds a cycle that works as a separator.
separator | the separator nodes |
first | the first component |
second | the second component |
Reimplemented in ogdf::SeparatorDualFC.
|
inlineoverridevirtual |
Provides the maximal separator size that this algorithm guarantees as a function of the number of nodes of the graph, or a negative value if the guarantee cannot be expressed through such a function.
See e.g. SeparatorHarPeled or SeparatorDualFC for examples.
n | the number of nodes of the graph |
Implements ogdf::PlanarSeparatorModule.
Reimplemented in ogdf::SeparatorDualFC.
Definition at line 95 of file SeparatorLiptonTarjanFC.h.
|
inlineoverrideprotectedvirtual |
Returns the unique name of the core algorithm, to be combined with postprocessors later.
Override this in inheriting methods.
Implements ogdf::PlanarSeparatorModule.
Reimplemented in ogdf::SeparatorDualFC.
Definition at line 104 of file SeparatorLiptonTarjanFC.h.
|
protected |
Definition at line 102 of file SeparatorLiptonTarjanFC.h.
|
protected |
Definition at line 101 of file SeparatorLiptonTarjanFC.h.