Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

VarEdgeInserterDynCore.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>
39 
40 namespace ogdf {
41 
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 
50 
51  Module::ReturnType call(const Array<edge>& origEdges, RemoveReinsertType rrPost,
52  double percentMostCrossed);
53 
54  int runsPostprocessing() const { return m_runsPostprocessing; }
55 
56 protected:
57  class BCandSPQRtrees;
58  class ExpandedGraph;
59 
60  int costCrossed(edge eOrig) const;
61 
62  void insert(edge eOrig, SList<adjEntry>& eip);
63  void blockInsert(node s, node t, List<adjEntry>& L);
64 
65  virtual void storeTypeOfCurrentEdge(edge eOrig) { }
66 
67  virtual BCandSPQRtrees* createBCandSPQRtrees();
68  virtual ExpandedGraph* createExpandedGraph(BCandSPQRtrees& BC);
69 
70  virtual void buildSubpath(node v, node vPred, node vSucc, List<adjEntry>& L, ExpandedGraph& Exp,
71  node s, node t);
72 
73  static const int c_bigM = 10000;
75 
79 
80  BCandSPQRtrees* m_pBC;
81 
83 };
84 
86 public:
88  const EdgeArray<uint32_t>* pEdgeSubgraph)
89  : VarEdgeInserterDynCore(pr, pCostOrig, nullptr, pEdgeSubgraph) { }
90 
91 protected:
92  class BCandSPQRtreesUML;
93  class ExpandedGraphUML;
94 
95  void storeTypeOfCurrentEdge(edge eOrig) override { m_typeOfCurrentEdge = m_pr.typeOrig(eOrig); }
96 
97  virtual BCandSPQRtrees* createBCandSPQRtrees() override;
98  virtual ExpandedGraph* createExpandedGraph(BCandSPQRtrees& BC) override;
99  virtual void buildSubpath(node v, node vPred, node vSucc, List<adjEntry>& L, ExpandedGraph& Exp,
100  node s, node t) override;
101 
103 };
104 
105 
106 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::VarEdgeInserterDynCore::m_pSubgraph
const EdgeArray< uint32_t > * m_pSubgraph
Definition: VarEdgeInserterDynCore.h:78
ogdf::VarEdgeInserterDynUMLCore::storeTypeOfCurrentEdge
void storeTypeOfCurrentEdge(edge eOrig) override
Definition: VarEdgeInserterDynCore.h:95
ogdf::VarEdgeInserterDynCore::m_pCost
const EdgeArray< int > * m_pCost
Definition: VarEdgeInserterDynCore.h:76
ogdf::Graph::EdgeType
EdgeType
The type of edges (only used in derived classes).
Definition: Graph_d.h:901
ogdf::VarEdgeInserterDynUMLCore::createExpandedGraph
virtual ExpandedGraph * createExpandedGraph(BCandSPQRtrees &BC) override
ogdf::SList
Singly linked lists (maintaining the length of the list).
Definition: SList.h:833
ogdf::VarEdgeInserterDynUMLCore::m_typeOfCurrentEdge
Graph::EdgeType m_typeOfCurrentEdge
Definition: VarEdgeInserterDynCore.h:102
RemoveReinsertType.h
Definition of RemoveReinsertType (used for postprocessing in edge insertion algorithms).
ogdf::VarEdgeInserterDynUMLCore::buildSubpath
virtual void buildSubpath(node v, node vPred, node vSucc, List< adjEntry > &L, ExpandedGraph &Exp, node s, node t) override
ogdf::PlanRepLight
Light-weight version of a planarized representation, associated with a PlanRep.
Definition: PlanRepLight.h:43
ogdf::VarEdgeInserterDynCore::VarEdgeInserterDynCore
VarEdgeInserterDynCore(PlanRepLight &pr, const EdgeArray< int > *pCostOrig, const EdgeArray< bool > *pForbiddenOrig, const EdgeArray< uint32_t > *pEdgeSubgraphs)
Definition: VarEdgeInserterDynCore.h:45
ogdf::VarEdgeInserterDynCore::m_pr
PlanRepLight & m_pr
Definition: VarEdgeInserterDynCore.h:74
ogdf::VarEdgeInserterDynUMLCore::createBCandSPQRtrees
virtual BCandSPQRtrees * createBCandSPQRtrees() override
Timeouter.h
Declares base class for modules with timeout functionality.
ogdf::VarEdgeInserterDynUMLCore::VarEdgeInserterDynUMLCore
VarEdgeInserterDynUMLCore(PlanRepLight &pr, const EdgeArray< int > *pCostOrig, const EdgeArray< uint32_t > *pEdgeSubgraph)
Definition: VarEdgeInserterDynCore.h:87
ogdf::VarEdgeInserterDynCore::m_runsPostprocessing
int m_runsPostprocessing
Runs of remove-reinsert method.
Definition: VarEdgeInserterDynCore.h:82
ogdf::Array
The parameterized class Array implements dynamic arrays of type E.
Definition: Array.h:214
ogdf::VarEdgeInserterDynCore::storeTypeOfCurrentEdge
virtual void storeTypeOfCurrentEdge(edge eOrig)
Definition: VarEdgeInserterDynCore.h:65
ogdf::VarEdgeInserterDynUMLCore
Definition: VarEdgeInserterDynCore.h:85
ogdf::List
Doubly linked lists (maintaining the length of the list).
Definition: List.h:42
ogdf::PlanRepLight::typeOrig
EdgeType typeOrig(edge eOrig) const
Definition: PlanRepLight.h:80
PlanRepLight.h
Declaration of class PlanRepLight.
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::VarEdgeInserterDynCore
Definition: VarEdgeInserterDynCore.h:43
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::VarEdgeInserterDynCore::m_pBC
BCandSPQRtrees * m_pBC
Definition: VarEdgeInserterDynCore.h:80
ogdf::Timeouter
class for timeout funtionality.
Definition: Timeouter.h:46
Module.h
Declares base class for all module types.
ogdf::VarEdgeInserterDynCore::~VarEdgeInserterDynCore
virtual ~VarEdgeInserterDynCore()
Definition: VarEdgeInserterDynCore.h:49
ogdf::VarEdgeInserterDynCore::m_pForbidden
const EdgeArray< bool > * m_pForbidden
Definition: VarEdgeInserterDynCore.h:77
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::VarEdgeInserterDynCore::runsPostprocessing
int runsPostprocessing() const
Definition: VarEdgeInserterDynCore.h:54
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709