Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
FixedEmbeddingUpwardEdgeInserter.h
Go to the documentation of this file.
1
32#pragma once
33
35#include <ogdf/basic/Graph.h>
36#include <ogdf/basic/basic.h>
39
40namespace ogdf {
41class UpwardPlanRep;
42template<class E>
43class List;
44template<class E>
45class SList;
46
49public:
52
54
55
56private:
57 bool isUpwardPlanar(Graph& G) const { return UpwardPlanarity::isUpwardPlanar_singleSource(G); }
58
68 virtual ReturnType doCall(UpwardPlanRep& UPR, const List<edge>& origEdges,
69 const EdgeArray<int>* costOrig = nullptr,
70 const EdgeArray<bool>* forbiddenEdgeOrig = nullptr) override;
71
72
74
75
77 void staticLock(UpwardPlanRep& UPR, EdgeArray<bool>& locked, const List<edge>& origEdges,
78 edge e_orig);
79
81 void dynamicLock(UpwardPlanRep& UPR, EdgeArray<bool>& locked, face f, adjEntry e_cur);
82
84 EdgeArray<bool>& locked, bool heuristic);
85
87 void minFIP(UpwardPlanRep& UPR, List<edge>& origEdges, EdgeArray<int>& cost, edge e_orig,
88 SList<adjEntry>& path) {
89 getPath(UPR, origEdges, cost, e_orig, path, false);
90 }
91
93 void constraintFIP(UpwardPlanRep& UPR, List<edge>& origEdges, EdgeArray<int>& cost, edge e_orig,
94 SList<adjEntry>& path) {
95 getPath(UPR, origEdges, cost, e_orig, path, true);
96 }
97
99 void getPath(UpwardPlanRep& UPR, List<edge>& origEdges, EdgeArray<int>& cost, edge e_orig,
100 SList<adjEntry>& path, bool heuristic);
101
102
104 void markUp(const Graph& G, node v, EdgeArray<bool>& markedEdges);
105
106
108 void markDown(const Graph& G, node v, EdgeArray<bool>& markedEdges);
109
112 face f, // current face
113 adjEntry adj, // current adjEntry, right face muss be f
114 EdgeArray<bool>& locked, // we compute the dyn. locked edges on the fly with respect to e
115 List<adjEntry>& feasible, // the list of feasible edges in f with respect to e
116 bool heuristic);
117
119 bool isConstraintFeasible(UpwardPlanRep& UPR, const List<edge>& orig_edges, edge e_orig,
120 adjEntry adjCurrent,
121 adjEntry adjNext, // the next adjEntry of the current insertion path
122 EdgeArray<adjEntry>& predAdj //Array to reconstruction the insertion path
123 );
124
125
127 bool isConstraintFeasible(UpwardPlanRep& UPR, List<edge>& origEdges, edge e_orig,
128 SList<adjEntry>& path);
129};
130
131}
Declaration of CombinatorialEmbedding and face.
Includes declaration of graph class.
Declaration of interface for edge insertion algorithms.
Declaration of class UpwardPlanarity, which implements different types of algorithms testing upward p...
Basic declarations, included by all source files.
Class for adjacency list elements.
Definition Graph_d.h:143
Class for the representation of edges.
Definition Graph_d.h:364
Faces in a combinatorial embedding.
Edge insertion module that inserts each edge optimally into a fixed embedding.
void constraintFIP(UpwardPlanRep &UPR, List< edge > &origEdges, EdgeArray< int > &cost, edge e_orig, SList< adjEntry > &path)
compute a constraint feasible insertion path usig heuristic.
bool isConstraintFeasible(UpwardPlanRep &UPR, List< edge > &origEdges, edge e_orig, SList< adjEntry > &path)
return true if current insertion path is contraint feasible
void dynamicLock(UpwardPlanRep &UPR, EdgeArray< bool > &locked, face f, adjEntry e_cur)
compute a list of dynamic locked edges
void feasibleEdges(UpwardPlanRep &UPR, face f, adjEntry adj, EdgeArray< bool > &locked, List< adjEntry > &feasible, bool heuristic)
compute the feasible edges of the face f with respect to e
void markDown(const Graph &G, node v, EdgeArray< bool > &markedEdges)
mark the edges which dominate node v
bool isConstraintFeasible(UpwardPlanRep &UPR, const List< edge > &orig_edges, edge e_orig, adjEntry adjCurrent, adjEntry adjNext, EdgeArray< adjEntry > &predAdj)
return true if current insertion path is contraint feasible
void markUp(const Graph &G, node v, EdgeArray< bool > &markedEdges)
mark the edges which are dominates by node v
void nextFeasibleEdges(UpwardPlanRep &UPR, List< adjEntry > &nextEdges, face f, adjEntry e_cur, EdgeArray< bool > &locked, bool heuristic)
void getPath(UpwardPlanRep &UPR, List< edge > &origEdges, EdgeArray< int > &cost, edge e_orig, SList< adjEntry > &path, bool heuristic)
compute an insertion path
void minFIP(UpwardPlanRep &UPR, List< edge > &origEdges, EdgeArray< int > &cost, edge e_orig, SList< adjEntry > &path)
compute the minimal feasible insertion path
void staticLock(UpwardPlanRep &UPR, EdgeArray< bool > &locked, const List< edge > &origEdges, edge e_orig)
compute a list of static locked edges, i.e. eges which a priory cannot included in a feasible inserti...
FixedEmbeddingUpwardEdgeInserter()
Creates an instance of fixed-embedding edge inserter.
ReturnType insertAll(UpwardPlanRep &UPR, List< edge > &toInsert, EdgeArray< int > &cost)
virtual ReturnType doCall(UpwardPlanRep &UPR, const List< edge > &origEdges, const EdgeArray< int > *costOrig=nullptr, const EdgeArray< bool > *forbiddenEdgeOrig=nullptr) override
Data type for general directed graphs (adjacency list representation).
Definition Graph_d.h:866
Doubly linked lists (maintaining the length of the list).
Definition List.h:1451
ReturnType
The return type of a module.
Definition Module.h:52
Class for the representation of nodes.
Definition Graph_d.h:241
Singly linked lists (maintaining the length of the list).
Definition SList.h:845
Upward planarized representations (of a connected component) of a graph.
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
The namespace for all OGDF objects.