Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

EmbedderBCTreeBase.h
Go to the documentation of this file.
1 
32 #pragma once
33 
38 
39 namespace ogdf {
40 namespace embedder {
41 
43 template<bool EnableLayers, bool IsEmbedderMinDepth = false>
45  using BicompEmbedder = typename std::conditional<EnableLayers,
47 
48 protected:
50  BCTree* pBCTree = nullptr;
51 
53  adjEntry* pAdjExternal = nullptr;
54 
57  virtual adjEntry trivialInit(Graph& G) {
58  NodeArray<int> m_nodeLength(G, 0);
59  EdgeArray<int> m_edgeLength(G, IsEmbedderMinDepth ? 0 : 1);
60  adjEntry m_adjExternal;
61  BicompEmbedder::embed(G, m_adjExternal, m_nodeLength, m_edgeLength);
62 
63  return m_adjExternal->twin();
64  }
65 
69  node result = nullptr;
70 
71  // HINT: Edges are directed from child to parent in BC-trees
72  pBCTree = new BCTree(G);
73 
74  // base case of biconnected graph
75  if (pBCTree->bcTree().numberOfNodes() == 1) {
76  *pAdjExternal = trivialInit(G);
77  delete pBCTree;
78  } else {
79  // Find root Block (only node with out-degree of 0):
80  for (node v : pBCTree->bcTree().nodes) {
81  if (v->outdeg() == 0) {
82  result = v;
83  break;
84  }
85  }
86 
87  OGDF_ASSERT(result != nullptr);
88  }
89 
90  return result;
91  }
92 };
93 
94 }
95 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::BCTree::bcTree
const Graph & bcTree() const
Returns the BC-tree graph.
Definition: BCTree.h:420
ogdf::BCTree
Static BC-trees.
Definition: BCTree.h:55
OGDF_ASSERT
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
Definition: basic.h:54
ogdf::EmbedderMaxFaceBiconnectedGraphs
Embedder that maximizing the external face.
Definition: EmbedderMaxFaceBiconnectedGraphs.h:48
ogdf::embedder::EmbedderBCTreeBase
Common base for embedder algorithms based on BC trees.
Definition: EmbedderBCTreeBase.h:44
ogdf::EmbedderMaxFaceBiconnectedGraphsLayers
Embedder that maximizes the external face (plus layers approach).
Definition: EmbedderMaxFaceBiconnectedGraphsLayers.h:53
ogdf::AdjElement::twin
adjEntry twin() const
Returns the corresponding adjacency element associated with the same edge.
Definition: Graph_d.h:165
ogdf::AdjElement
Class for adjacency list elements.
Definition: Graph_d.h:135
ogdf::embedder::EmbedderBCTreeBase::initBCTree
node initBCTree(Graph &G)
Initializes pBCTree and returns the root node of this tree or nullptr if G is biconnected.
Definition: EmbedderBCTreeBase.h:68
BCTree.h
Declaration of class BCTree.
ogdf::Graph::nodes
internal::GraphObjectContainer< NodeElement > nodes
The container containing all node objects.
Definition: Graph_d.h:924
ogdf::Graph::numberOfNodes
int numberOfNodes() const
Returns the number of nodes in the graph.
Definition: Graph_d.h:974
backward::Color::type
type
Definition: backward.hpp:1716
ogdf::embedder::EmbedderBCTreeBase::BicompEmbedder
typename std::conditional< EnableLayers, EmbedderMaxFaceBiconnectedGraphsLayers< int >, EmbedderMaxFaceBiconnectedGraphs< int > >::type BicompEmbedder
Definition: EmbedderBCTreeBase.h:46
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
EmbedderMaxFaceBiconnectedGraphsLayers.h
Computes an embedding of a biconnected graph with maximum external face.
ogdf::EmbedderModule
Base class for embedder algorithms.
Definition: EmbedderModule.h:49
EmbedderMaxFaceBiconnectedGraphs.h
Declares ogdf::EmbedderMaxFaceBiconnectedGraphs.
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
EmbedderModule.h
Defines ogdf::EmbedderModule.
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709
ogdf::embedder::EmbedderBCTreeBase::trivialInit
virtual adjEntry trivialInit(Graph &G)
Initialization code for biconnected input. Returns an adjacency entry that lies on the external face.
Definition: EmbedderBCTreeBase.h:57