44class KuratowskiSubdivision;
194 return planarEmbedDestructive(G, list);
207 const bool onlyDifferent =
false);
215 const bool onlyDifferent =
false) {
216 transform(sourceList, targetList, h.
original(), onlyDifferent);
231 bool bundles =
false,
bool limitStructures =
false,
bool randomDFSTree =
false,
232 bool avoidE2Minors =
true);
237 BoyerMyrvoldPlanar::EmbeddingGrade::doNotFind,
238 bool bundles =
false,
bool limitStructures =
false,
bool randomDFSTree =
false,
239 bool avoidE2Minors =
true) {
240 return planarEmbedDestructive(g, output,
static_cast<int>(embeddingGrade), bundles,
241 limitStructures, randomDFSTree, avoidE2Minors);
257 bool bundles =
false,
bool limitStructures =
false,
bool randomDFSTree =
false,
258 bool avoidE2Minors =
true);
263 BoyerMyrvoldPlanar::EmbeddingGrade::doNotFind,
264 bool bundles =
false,
bool limitStructures =
false,
bool randomDFSTree =
false,
265 bool avoidE2Minors =
true) {
266 return planarEmbed(g, output,
static_cast<int>(embeddingGrade), bundles, limitStructures,
267 randomDFSTree, avoidE2Minors);
282 bool bundles =
false,
bool limitStructures =
false,
bool randomDFSTree =
false,
283 bool avoidE2Minors =
true);
288 BoyerMyrvoldPlanar::EmbeddingGrade::doNotFind,
289 bool bundles =
false,
bool limitStructures =
false,
bool randomDFSTree =
false,
290 bool avoidE2Minors =
true) {
291 return planarEmbed(h, output,
static_cast<int>(embeddingGrade), bundles, limitStructures,
292 randomDFSTree, avoidE2Minors);
Declaration of the class BoyerMyrvoldPlanar.
Includes declaration of graph class.
Declaration of graph copy classes.
Declaration of PlanarityModule.
Declaration of singly linked lists and iterators.
Basic declarations, included by all source files.
Wrapper class used for preprocessing and valid invocation of the planarity test.
bool planarEmbedDestructive(Graph &g, SList< KuratowskiWrapper > &output, BoyerMyrvoldPlanar::EmbeddingGrade embeddingGrade=BoyerMyrvoldPlanar::EmbeddingGrade::doNotFind, bool bundles=false, bool limitStructures=false, bool randomDFSTree=false, bool avoidE2Minors=true)
Returns an embedding, if g is planar and Kuratowski Subdivisions otherwise.
BoyerMyrvold()
Constructor.
bool planarEmbed(GraphCopySimple &h, SList< KuratowskiWrapper > &output, int embeddingGrade, bool bundles=false, bool limitStructures=false, bool randomDFSTree=false, bool avoidE2Minors=true)
Returns an embedding, if graph copy h is planar and Kuratowski Subdivisions otherwise.
void transform(const KuratowskiWrapper &source, KuratowskiSubdivision &target, NodeArray< int > &count, EdgeArray< int > &countEdge)
Transforms KuratowskiWrapper in KuratowskiSubdivision.
bool planarEmbedDestructive(Graph &g, SList< KuratowskiWrapper > &output, int embeddingGrade, bool bundles=false, bool limitStructures=false, bool randomDFSTree=false, bool avoidE2Minors=true)
Returns an embedding, if g is planar and Kuratowski Subdivisions otherwise.
void clear()
Deletes BoyerMyrvoldPlanar on heap.
virtual bool isPlanarDestructive(Graph &g) override
Returns true, iff g is planar.
~BoyerMyrvold()
Destructor.
int nOfStructures
The number of extracted Structures for statistical purposes.
bool planarEmbed(Graph &g, SList< KuratowskiWrapper > &output, BoyerMyrvoldPlanar::EmbeddingGrade embeddingGrade=BoyerMyrvoldPlanar::EmbeddingGrade::doNotFind, bool bundles=false, bool limitStructures=false, bool randomDFSTree=false, bool avoidE2Minors=true)
Returns an embedding, if g is planar and Kuratowski Subdivisions otherwise.
BoyerMyrvoldPlanar * pBMP
Class BoyerMyrvoldPlanar on heap.
virtual bool planarEmbed(Graph &G) override
Returns true, if G is planar, false otherwise. If true, G contains a planar embedding.
bool planarEmbed(Graph &g, SList< KuratowskiWrapper > &output, int embeddingGrade, bool bundles=false, bool limitStructures=false, bool randomDFSTree=false, bool avoidE2Minors=true)
Returns an embedding, if g is planar and Kuratowski Subdivisions otherwise.
int numberOfStructures()
The number of extracted Structures for statistical purposes.
bool planarEmbed(GraphCopySimple &h, SList< KuratowskiWrapper > &output, BoyerMyrvoldPlanar::EmbeddingGrade embeddingGrade=BoyerMyrvoldPlanar::EmbeddingGrade::doNotFind, bool bundles=false, bool limitStructures=false, bool randomDFSTree=false, bool avoidE2Minors=true)
Returns an embedding, if graph copy h is planar and Kuratowski Subdivisions otherwise.
void transform(const SList< KuratowskiWrapper > &sourceList, SList< KuratowskiSubdivision > &targetList, const GraphCopySimple &h, const bool onlyDifferent=false)
Transforms KuratowskiWrapper-List in KuratowskiSubdivision-List with respect to sieving constraints.
virtual bool isPlanar(const Graph &g) override
Returns true, iff a copy of the constant graph g is planar.
void transform(const SList< KuratowskiWrapper > &sourceList, SList< KuratowskiSubdivision > &targetList, const Graph &g, const bool onlyDifferent=false)
Transforms KuratowskiWrapper-List in KuratowskiSubdivision-List with respect to sieving constraints.
virtual bool planarEmbedPlanarGraph(Graph &G) override
Constructs a planar embedding of G. G has to be planar!
This class implements the extended BoyerMyrvold planarity embedding algorithm.
EmbeddingGrade
Denotes the different embedding options.
const Graph & original() const
Returns a reference to the original graph.
Copies of graphs with mapping between nodes and edges.
Data type for general directed graphs (adjacency list representation).
Wrapper-class for Kuratowski Subdivisions containing the minortype and edgelist.
Module for planarity testing and planar embeddings.
Singly linked lists (maintaining the length of the list).
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
RegisteredArray for nodes, edges and adjEntries of a graph.
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
bool planarEmbed(Graph &G)
Returns true, if G is planar, false otherwise. If true is returned, G will be planarly embedded.
The namespace for all OGDF objects.