Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

VarEdgeInserterCore.h
Go to the documentation of this file.
1 
33 #pragma once
34 
35 #include <ogdf/basic/Module.h>
36 #include <ogdf/basic/Timeouter.h>
40 
41 namespace ogdf {
42 
44 public:
46  const EdgeArray<bool>* pForbiddenOrig, const EdgeArray<uint32_t>* pEdgeSubgraphs)
47  : m_pr(pr), m_pCost(pCostOrig), m_pForbidden(pForbiddenOrig), m_pSubgraph(pEdgeSubgraphs) { }
48 
49  virtual ~VarEdgeInserterCore() { }
50 
51  Module::ReturnType call(const Array<edge>& origEdges, RemoveReinsertType rrPost,
52  double percentMostCrossed);
53 
54  Module::ReturnType callPostprocessing(const Array<edge>& origEdges, RemoveReinsertType rrPost,
55  double percentMostCrossed);
56 
57  int runsPostprocessing() const { return m_runsPostprocessing; }
58 
59 protected:
60  class BiconnectedComponent;
61  class ExpandedGraph;
62 
63  void insert(node s, node t, SList<adjEntry>& eip);
64  int costCrossed(edge eOrig) const;
65 
66  bool dfsVertex(node v, int parent);
67  node dfsComp(int i, node parent);
68 
69  void blockInsert(const BiconnectedComponent& G, node s, node t, List<adjEntry>& L);
70  bool pathSearch(node v, edge parent, List<edge>& path);
71  virtual void buildSubpath(node v, edge eIn, edge eOut, List<adjEntry>& L, ExpandedGraph& Exp,
72  node s, node t);
73 
74  virtual void storeTypeOfCurrentEdge(edge eOrig) { }
75 
76  virtual BiconnectedComponent* createBlock();
77  virtual ExpandedGraph* createExpandedGraph(const BiconnectedComponent& BC,
78  const StaticSPQRTree& T);
79 
80  static const int c_bigM = 10000;
82 
86 
87  node m_s, m_t;
90 
91  // representation of BC tree
96 
97  node m_v1, m_v2;
98 
100 };
101 
103 public:
105  const EdgeArray<uint32_t>* pEdgeSubgraph)
106  : VarEdgeInserterCore(pr, pCostOrig, nullptr, pEdgeSubgraph) { }
107 
108 protected:
109  class BiconnectedComponentUML;
110  class ExpandedGraphUML;
111 
112  void storeTypeOfCurrentEdge(edge eOrig) override { m_typeOfCurrentEdge = m_pr.typeOrig(eOrig); }
113 
114  BiconnectedComponent* createBlock() override;
115  ExpandedGraph* createExpandedGraph(const BiconnectedComponent& BC,
116  const StaticSPQRTree& T) override;
117  virtual void buildSubpath(node v, edge eIn, edge eOut, List<adjEntry>& L, ExpandedGraph& Exp,
118  node s, node t) override;
119 
121 };
122 
123 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::VarEdgeInserterCore::m_pCost
const EdgeArray< int > * m_pCost
Definition: VarEdgeInserterCore.h:83
ogdf::StaticSPQRTree
Linear-time implementation of static SPQR-trees.
Definition: StaticSPQRTree.h:73
ogdf::VarEdgeInserterUMLCore::VarEdgeInserterUMLCore
VarEdgeInserterUMLCore(PlanRepLight &pr, const EdgeArray< int > *pCostOrig, const EdgeArray< uint32_t > *pEdgeSubgraph)
Definition: VarEdgeInserterCore.h:104
ogdf::VarEdgeInserterUMLCore::createExpandedGraph
ExpandedGraph * createExpandedGraph(const BiconnectedComponent &BC, const StaticSPQRTree &T) override
ogdf::VarEdgeInserterCore::m_edgeB
Array< SList< edge > > m_edgeB
Definition: VarEdgeInserterCore.h:94
ogdf::VarEdgeInserterUMLCore::createBlock
BiconnectedComponent * createBlock() override
ogdf::Graph::EdgeType
EdgeType
The type of edges (only used in derived classes).
Definition: Graph_d.h:901
ogdf::VarEdgeInserterCore::VarEdgeInserterCore
VarEdgeInserterCore(PlanRepLight &pr, const EdgeArray< int > *pCostOrig, const EdgeArray< bool > *pForbiddenOrig, const EdgeArray< uint32_t > *pEdgeSubgraphs)
Definition: VarEdgeInserterCore.h:45
ogdf::VarEdgeInserterUMLCore
Definition: VarEdgeInserterCore.h:102
StaticSPQRTree.h
Declaration of class StaticSPQRTree.
ogdf::SList
Singly linked lists (maintaining the length of the list).
Definition: SList.h:833
RemoveReinsertType.h
Definition of RemoveReinsertType (used for postprocessing in edge insertion algorithms).
ogdf::PlanRepLight
Light-weight version of a planarized representation, associated with a PlanRep.
Definition: PlanRepLight.h:43
ogdf::VarEdgeInserterCore::m_runsPostprocessing
int m_runsPostprocessing
Runs of remove-reinsert method.
Definition: VarEdgeInserterCore.h:99
ogdf::VarEdgeInserterCore::m_v2
node m_v2
Definition: VarEdgeInserterCore.h:97
ogdf::VarEdgeInserterCore::m_pForbidden
const EdgeArray< bool > * m_pForbidden
Definition: VarEdgeInserterCore.h:84
Timeouter.h
Declares base class for modules with timeout functionality.
ogdf::VarEdgeInserterCore::~VarEdgeInserterCore
virtual ~VarEdgeInserterCore()
Definition: VarEdgeInserterCore.h:49
ogdf::VarEdgeInserterCore
Definition: VarEdgeInserterCore.h:43
ogdf::VarEdgeInserterCore::m_pEip
SList< adjEntry > * m_pEip
Definition: VarEdgeInserterCore.h:89
ogdf::VarEdgeInserterCore::storeTypeOfCurrentEdge
virtual void storeTypeOfCurrentEdge(edge eOrig)
Definition: VarEdgeInserterCore.h:74
ogdf::VarEdgeInserterUMLCore::storeTypeOfCurrentEdge
void storeTypeOfCurrentEdge(edge eOrig) override
Definition: VarEdgeInserterCore.h:112
ogdf::VarEdgeInserterCore::runsPostprocessing
int runsPostprocessing() const
Definition: VarEdgeInserterCore.h:57
ogdf::Array
The parameterized class Array implements dynamic arrays of type E.
Definition: Array.h:214
ogdf::VarEdgeInserterCore::m_pr
PlanRepLight & m_pr
Definition: VarEdgeInserterCore.h:81
ogdf::List
Doubly linked lists (maintaining the length of the list).
Definition: List.h:42
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::PlanRepLight::typeOrig
EdgeType typeOrig(edge eOrig) const
Definition: PlanRepLight.h:80
PlanRepLight.h
Declaration of class PlanRepLight.
ogdf::VarEdgeInserterCore::m_GtoBC
NodeArray< node > m_GtoBC
Definition: VarEdgeInserterCore.h:95
ogdf::VarEdgeInserterCore::m_compV
NodeArray< SList< int > > m_compV
Definition: VarEdgeInserterCore.h:92
ogdf::VarEdgeInserterCore::m_t
node m_t
Definition: VarEdgeInserterCore.h:87
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::VarEdgeInserterCore::m_pSubgraph
const EdgeArray< uint32_t > * m_pSubgraph
Definition: VarEdgeInserterCore.h:85
ogdf::RemoveReinsertType
RemoveReinsertType
The postprocessing method for edge insertion algorithms.
Definition: RemoveReinsertType.h:41
ogdf::EdgeElement
Class for the representation of edges.
Definition: Graph_d.h:356
ogdf::VarEdgeInserterUMLCore::m_typeOfCurrentEdge
Graph::EdgeType m_typeOfCurrentEdge
Definition: VarEdgeInserterCore.h:120
ogdf::Timeouter
class for timeout funtionality.
Definition: Timeouter.h:46
ogdf::VarEdgeInserterUMLCore::buildSubpath
virtual void buildSubpath(node v, edge eIn, edge eOut, List< adjEntry > &L, ExpandedGraph &Exp, node s, node t) override
Module.h
Declares base class for all module types.
ogdf::VarEdgeInserterCore::m_nodeB
Array< SList< node > > m_nodeB
Definition: VarEdgeInserterCore.h:93
ogdf::VarEdgeInserterCore::m_st
edge m_st
Definition: VarEdgeInserterCore.h:88
ogdf::Module::ReturnType
ReturnType
The return type of a module.
Definition: Module.h:50
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