Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
FixEdgeInserterCore.h
Go to the documentation of this file.
1
33#pragma once
34
35#include <ogdf/basic/Array.h>
37#include <ogdf/basic/Graph.h>
38#include <ogdf/basic/Module.h>
39#include <ogdf/basic/SList.h>
41#include <ogdf/basic/basic.h>
43
44#include <cstdint>
45
46namespace ogdf {
47class FaceSet;
48enum class RemoveReinsertType;
49template<class E>
50class QueuePure;
51
53public:
55 const EdgeArray<bool>* pForbiddenOrig, const EdgeArray<uint32_t>* pEdgeSubgraphs)
56 : m_pr(pr), m_pCost(pCostOrig), m_pForbidden(pForbiddenOrig), m_pSubgraph(pEdgeSubgraphs) { }
57
59
60 Module::ReturnType call(const Array<edge>& origEdges, bool keepEmbedding,
61 RemoveReinsertType rrPost, double percentMostCrossed);
62
63 int runsPostprocessing() const { return m_runsPostprocessing; }
64
65protected:
66 int getCost(edge e, int stSubGraph) const;
69 SList<adjEntry>& crossed);
70
71 int costCrossed(edge eOrig) const;
72 void insertEdge(CombinatorialEmbedding& E, edge eOrig, const SList<adjEntry>& crossed);
74
75 virtual void storeTypeOfCurrentEdge(edge eOrig) { }
76
77 virtual void init(CombinatorialEmbedding& E);
78 virtual void cleanup();
79 virtual void constructDual(const CombinatorialEmbedding& E);
80
81 virtual void appendCandidates(QueuePure<edge>& queue, node v);
82 virtual void appendCandidates(Array<SListPure<edge>>& nodesAtDist, EdgeArray<int>& costDual,
83 int maxCost, node v, int currentDist);
84
85 virtual void insertEdgesIntoDual(const CombinatorialEmbedding& E, adjEntry adjSrc);
87
89
93
95
98
101
104
106};
107
109public:
111 const EdgeArray<uint32_t>* pEdgeSubgraph)
112 : FixEdgeInserterCore(pr, pCostOrig, nullptr, pEdgeSubgraph) { }
113
114protected:
116
117 void init(CombinatorialEmbedding& E) override;
118 void cleanup() override;
119 void constructDual(const CombinatorialEmbedding& E) override;
120
121 void appendCandidates(QueuePure<edge>& queue, node v) override;
123 int maxCost, node v, int currentDist) override;
124
125 void insertEdgesIntoDual(const CombinatorialEmbedding& E, adjEntry adjSrc) override;
127
130};
131
132}
Declaration and implementation of Array class and Array algorithms.
Declaration of CombinatorialEmbedding and face.
Includes declaration of graph class.
Declares base class for all module types.
Declaration of class PlanRepLight.
Declaration of singly linked lists and iterators.
Declares base class for modules with timeout functionality.
Basic declarations, included by all source files.
Class for adjacency list elements.
Definition Graph_d.h:143
The parameterized class Array implements dynamic arrays of type E.
Definition Array.h:219
Combinatorial embeddings of planar graphs with modification functionality.
Class for the representation of edges.
Definition Graph_d.h:364
RegisteredArray for labeling the faces of a CombinatorialEmbedding.
Faces in a combinatorial embedding.
Face sets.
Definition FaceSet.h:51
const EdgeArray< int > * m_pCost
virtual void insertEdgesIntoDual(const CombinatorialEmbedding &E, adjEntry adjSrc)
const EdgeArray< bool > * m_pForbidden
FixEdgeInserterCore(PlanRepLight &pr, const EdgeArray< int > *pCostOrig, const EdgeArray< bool > *pForbiddenOrig, const EdgeArray< uint32_t > *pEdgeSubgraphs)
int costCrossed(edge eOrig) const
const EdgeArray< uint32_t > * m_pSubgraph
void removeEdge(CombinatorialEmbedding &E, edge eOrig)
void findShortestPath(const CombinatorialEmbedding &E, edge eOrig, SList< adjEntry > &crossed)
Graph m_dual
(Extended) dual graph, constructed/destructed during call.
void findWeightedShortestPath(const CombinatorialEmbedding &E, edge eOrig, SList< adjEntry > &crossed)
int m_runsPostprocessing
Runs of remove-reinsert method.
void insertEdge(CombinatorialEmbedding &E, edge eOrig, const SList< adjEntry > &crossed)
FaceArray< node > m_nodeOf
The node in dual corresponding to face in primal.
virtual void appendCandidates(QueuePure< edge > &queue, node v)
node m_vT
The node in extended dual representing t.
virtual void appendCandidates(Array< SListPure< edge > > &nodesAtDist, EdgeArray< int > &costDual, int maxCost, node v, int currentDist)
EdgeArray< adjEntry > m_primalAdj
Adjacency entry in primal graph corresponding to edge in dual.
Module::ReturnType call(const Array< edge > &origEdges, bool keepEmbedding, RemoveReinsertType rrPost, double percentMostCrossed)
virtual void init(CombinatorialEmbedding &E)
int getCost(edge e, int stSubGraph) const
virtual void insertEdgesIntoDualAfterRemove(const CombinatorialEmbedding &E, face f)
virtual void constructDual(const CombinatorialEmbedding &E)
node m_vS
The node in extended dual representing s.
virtual void storeTypeOfCurrentEdge(edge eOrig)
void insertEdgesIntoDualAfterRemove(const CombinatorialEmbedding &E, face f) override
void appendCandidates(Array< SListPure< edge > > &nodesAtDist, EdgeArray< int > &costDual, int maxCost, node v, int currentDist) override
EdgeArray< bool > m_primalIsGen
true iff corresponding primal edge is a generalization.
void init(CombinatorialEmbedding &E) override
void storeTypeOfCurrentEdge(edge eOrig) override
void constructDual(const CombinatorialEmbedding &E) override
void appendCandidates(QueuePure< edge > &queue, node v) override
FixEdgeInserterUMLCore(PlanRepLight &pr, const EdgeArray< int > *pCostOrig, const EdgeArray< uint32_t > *pEdgeSubgraph)
void insertEdgesIntoDual(const CombinatorialEmbedding &E, adjEntry adjSrc) override
Data type for general directed graphs (adjacency list representation).
Definition Graph_d.h:866
EdgeType
The type of edges (only used in derived classes).
Definition Graph_d.h:906
ReturnType
The return type of a module.
Definition Module.h:52
Class for the representation of nodes.
Definition Graph_d.h:241
Light-weight version of a planarized representation, associated with a PlanRep.
EdgeType typeOrig(edge eOrig) const
Implementation of list-based queues.
Definition Queue.h:55
Singly linked lists (maintaining the length of the list).
Definition SList.h:845
Singly linked lists.
Definition SList.h:191
class for timeout funtionality.
Definition Timeouter.h:46
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition Graph_d.h:717
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
Definition config.h:117
RemoveReinsertType
The postprocessing method for edge insertion algorithms.
The namespace for all OGDF objects.