Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00042 #ifdef _MSC_VER
00043 #pragma once
00044 #endif
00045
00046
00047 #ifndef OGDF_FEASIBLE_UPWARD_PLANAR_SUBGRAPH_H
00048 #define OGDF_FEASIBLE_UPWARD_PLANAR_SUBGRAPH_H
00049
00050
00051
00052 #include <ogdf/basic/Module.h>
00053 #include <ogdf/basic/GraphCopy.h>
00054
00055
00056 namespace ogdf {
00057
00058
00059 class OGDF_EXPORT FeasibleUpwardPlanarSubgraph : public Module
00060 {
00061 public:
00062
00063 FeasibleUpwardPlanarSubgraph() { }
00064
00065 ~FeasibleUpwardPlanarSubgraph() { }
00066
00067
00068
00069 ReturnType call(Graph &G,
00070 GraphCopy &Fups,
00071 adjEntry &extFaceHandle,
00072 List<edge> &delEdges,
00073 bool multisources,
00074
00075 int runs);
00076
00077
00078
00079 ReturnType call(const Graph &G,
00080 GraphCopy &Fups,
00081 adjEntry &extFaceHandle,
00082 List<edge> &delEdges,
00083 bool multisources);
00084
00085
00086 bool constructMergeGraph(GraphCopy &M,
00087 adjEntry adj_orig,
00088 const List<edge> &del_orig);
00089
00090
00091
00093 adjEntry getAdjEntry(const CombinatorialEmbedding &Gamma, node v, face f)
00094 {
00095 adjEntry adj = 0;
00096 forall_adj(adj, v) {
00097 if (Gamma.rightFace(adj) == f)
00098 break;
00099 }
00100
00101 OGDF_ASSERT(Gamma.rightFace(adj) == f);
00102
00103 return adj;
00104 }
00105
00106 private:
00107
00109
00110
00111
00112
00113
00114
00115
00116 void getSpanTree(GraphCopy &GC, List<edge> &delEdges, bool random, bool multisources);
00117
00118
00119
00120
00121 void dfs_visit(const Graph &G, edge e, NodeArray<bool> &visited, EdgeArray<bool> &treeEdges, bool random);
00122
00123
00124
00125
00126 };
00127
00128
00129 }
00130
00131 #endif