Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

FixEdgeInserterCore.h
Go to the documentation of this file.
1 
33 #pragma once
34 
35 #include <ogdf/basic/FaceArray.h>
36 #include <ogdf/basic/FaceSet.h>
37 #include <ogdf/basic/Module.h>
38 #include <ogdf/basic/Queue.h>
39 #include <ogdf/basic/Timeouter.h>
42 
43 namespace ogdf {
44 
46 public:
48  const EdgeArray<bool>* pForbiddenOrig, const EdgeArray<uint32_t>* pEdgeSubgraphs)
49  : m_pr(pr), m_pCost(pCostOrig), m_pForbidden(pForbiddenOrig), m_pSubgraph(pEdgeSubgraphs) { }
50 
51  virtual ~FixEdgeInserterCore() { }
52 
53  Module::ReturnType call(const Array<edge>& origEdges, bool keepEmbedding,
54  RemoveReinsertType rrPost, double percentMostCrossed);
55 
56  int runsPostprocessing() const { return m_runsPostprocessing; }
57 
58 protected:
59  int getCost(edge e, int stSubGraph) const;
60  void findShortestPath(const CombinatorialEmbedding& E, edge eOrig, SList<adjEntry>& crossed);
61  void findWeightedShortestPath(const CombinatorialEmbedding& E, edge eOrig,
62  SList<adjEntry>& crossed);
63 
64  int costCrossed(edge eOrig) const;
65  void insertEdge(CombinatorialEmbedding& E, edge eOrig, const SList<adjEntry>& crossed);
66  void removeEdge(CombinatorialEmbedding& E, edge eOrig);
67 
68  virtual void storeTypeOfCurrentEdge(edge eOrig) { }
69 
70  virtual void init(CombinatorialEmbedding& E);
71  virtual void cleanup();
72  virtual void constructDual(const CombinatorialEmbedding& E);
73 
74  virtual void appendCandidates(QueuePure<edge>& queue, node v);
75  virtual void appendCandidates(Array<SListPure<edge>>& nodesAtDist, EdgeArray<int>& costDual,
76  int maxCost, node v, int currentDist);
77 
78  virtual void insertEdgesIntoDual(const CombinatorialEmbedding& E, adjEntry adjSrc);
79  virtual void insertEdgesIntoDualAfterRemove(const CombinatorialEmbedding& E, face f);
80 
82 
86 
88 
91 
94 
97 
99 };
100 
102 public:
104  const EdgeArray<uint32_t>* pEdgeSubgraph)
105  : FixEdgeInserterCore(pr, pCostOrig, nullptr, pEdgeSubgraph) { }
106 
107 protected:
108  void storeTypeOfCurrentEdge(edge eOrig) override { m_typeOfCurrentEdge = m_pr.typeOrig(eOrig); }
109 
110  void init(CombinatorialEmbedding& E) override;
111  void cleanup() override;
112  void constructDual(const CombinatorialEmbedding& E) override;
113 
114  void appendCandidates(QueuePure<edge>& queue, node v) override;
115  void appendCandidates(Array<SListPure<edge>>& nodesAtDist, EdgeArray<int>& costDual,
116  int maxCost, node v, int currentDist) override;
117 
118  void insertEdgesIntoDual(const CombinatorialEmbedding& E, adjEntry adjSrc) override;
120 
123 };
124 
125 }
ogdf::FixEdgeInserterCore::m_pForbidden
const EdgeArray< bool > * m_pForbidden
Definition: FixEdgeInserterCore.h:84
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::FixEdgeInserterCore::m_nodeOf
FaceArray< node > m_nodeOf
The node in dual corresponding to face in primal.
Definition: FixEdgeInserterCore.h:90
ogdf::FixEdgeInserterCore::m_runsPostprocessing
int m_runsPostprocessing
Runs of remove-reinsert method.
Definition: FixEdgeInserterCore.h:98
FaceSet.h
Declaration and implementation of ogdf::FaceSet.
ogdf::FixEdgeInserterCore::m_delFaces
FaceSet< false > * m_delFaces
Definition: FixEdgeInserterCore.h:92
ogdf::FixEdgeInserterCore::m_vT
node m_vT
The node in extended dual representing t.
Definition: FixEdgeInserterCore.h:96
ogdf::Graph::EdgeType
EdgeType
The type of edges (only used in derived classes).
Definition: Graph_d.h:901
ogdf::FixEdgeInserterUMLCore::m_primalIsGen
EdgeArray< bool > m_primalIsGen
true iff corresponding primal edge is a generalization.
Definition: FixEdgeInserterCore.h:121
ogdf::SList
Singly linked lists (maintaining the length of the list).
Definition: SList.h:833
ogdf::FixEdgeInserterUMLCore::storeTypeOfCurrentEdge
void storeTypeOfCurrentEdge(edge eOrig) override
Definition: FixEdgeInserterCore.h:108
RemoveReinsertType.h
Definition of RemoveReinsertType (used for postprocessing in edge insertion algorithms).
ogdf::FixEdgeInserterCore::m_newFaces
FaceSet< false > * m_newFaces
Definition: FixEdgeInserterCore.h:93
ogdf::FixEdgeInserterCore::~FixEdgeInserterCore
virtual ~FixEdgeInserterCore()
Definition: FixEdgeInserterCore.h:51
ogdf::PlanRepLight
Light-weight version of a planarized representation, associated with a PlanRep.
Definition: PlanRepLight.h:43
Queue.h
Declaration and implementation of list-based queues (classes QueuePure<E> and Queue<E>).
ogdf::FixEdgeInserterUMLCore::appendCandidates
void appendCandidates(QueuePure< edge > &queue, node v) override
FaceArray.h
declaration and implementation of FaceArray class
ogdf::FixEdgeInserterUMLCore::FixEdgeInserterUMLCore
FixEdgeInserterUMLCore(PlanRepLight &pr, const EdgeArray< int > *pCostOrig, const EdgeArray< uint32_t > *pEdgeSubgraph)
Definition: FixEdgeInserterCore.h:103
Timeouter.h
Declares base class for modules with timeout functionality.
ogdf::FixEdgeInserterCore::runsPostprocessing
int runsPostprocessing() const
Definition: FixEdgeInserterCore.h:56
ogdf::AdjElement
Class for adjacency list elements.
Definition: Graph_d.h:135
ogdf::FixEdgeInserterCore
Definition: FixEdgeInserterCore.h:45
ogdf::FixEdgeInserterCore::m_dual
Graph m_dual
(Extended) dual graph, constructed/destructed during call.
Definition: FixEdgeInserterCore.h:87
ogdf::FixEdgeInserterCore::m_pSubgraph
const EdgeArray< uint32_t > * m_pSubgraph
Definition: FixEdgeInserterCore.h:85
ogdf::FixEdgeInserterCore::FixEdgeInserterCore
FixEdgeInserterCore(PlanRepLight &pr, const EdgeArray< int > *pCostOrig, const EdgeArray< bool > *pForbiddenOrig, const EdgeArray< uint32_t > *pEdgeSubgraphs)
Definition: FixEdgeInserterCore.h:47
ogdf::Array
The parameterized class Array implements dynamic arrays of type E.
Definition: Array.h:214
ogdf::FixEdgeInserterUMLCore::init
void init(CombinatorialEmbedding &E) override
ogdf::FixEdgeInserterCore::m_pr
PlanRepLight & m_pr
Definition: FixEdgeInserterCore.h:81
ogdf::FixEdgeInserterUMLCore::cleanup
void cleanup() override
ogdf::FaceSet< false >
ogdf::FixEdgeInserterUMLCore::m_typeOfCurrentEdge
Graph::EdgeType m_typeOfCurrentEdge
Definition: FixEdgeInserterCore.h:122
ogdf::SListPure
Singly linked lists.
Definition: SList.h:39
ogdf::FixEdgeInserterUMLCore::constructDual
void constructDual(const CombinatorialEmbedding &E) override
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
ogdf::FaceArrayBase
RegisteredArray for labeling the faces of a CombinatorialEmbedding.
Definition: CombinatorialEmbedding.h:172
ogdf::PlanRepLight::typeOrig
EdgeType typeOrig(edge eOrig) const
Definition: PlanRepLight.h:80
PlanRepLight.h
Declaration of class PlanRepLight.
ogdf::FixEdgeInserterUMLCore::insertEdgesIntoDualAfterRemove
void insertEdgesIntoDualAfterRemove(const CombinatorialEmbedding &E, face f) override
ogdf::FixEdgeInserterCore::m_primalAdj
EdgeArray< adjEntry > m_primalAdj
Adjacency entry in primal graph corresponding to edge in dual.
Definition: FixEdgeInserterCore.h:89
ogdf::graphics::init
void init()
Definition: graphics.h:446
ogdf::QueuePure
Implementation of list-based queues.
Definition: Queue.h:50
ogdf::FixEdgeInserterCore::storeTypeOfCurrentEdge
virtual void storeTypeOfCurrentEdge(edge eOrig)
Definition: FixEdgeInserterCore.h:68
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::CombinatorialEmbedding
Combinatorial embeddings of planar graphs with modification functionality.
Definition: CombinatorialEmbedding.h:397
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::Timeouter
class for timeout funtionality.
Definition: Timeouter.h:46
Module.h
Declares base class for all module types.
ogdf::Module::ReturnType
ReturnType
The return type of a module.
Definition: Module.h:50
ogdf::FixEdgeInserterCore::m_vS
node m_vS
The node in extended dual representing s.
Definition: FixEdgeInserterCore.h:95
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
ogdf::FixEdgeInserterCore::m_pCost
const EdgeArray< int > * m_pCost
Definition: FixEdgeInserterCore.h:83
ogdf::FixEdgeInserterUMLCore::insertEdgesIntoDual
void insertEdgesIntoDual(const CombinatorialEmbedding &E, adjEntry adjSrc) override
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709
ogdf::FaceElement
Faces in a combinatorial embedding.
Definition: CombinatorialEmbedding.h:109
ogdf::FixEdgeInserterUMLCore
Definition: FixEdgeInserterCore.h:101