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_FUPS_SIMPLE_H
00048 #define OGDF_FUPS_SIMPLE_H
00049
00050
00051 #include <ogdf/module/FUPSModule.h>
00052
00053
00054 namespace ogdf {
00055
00056
00057 class OGDF_EXPORT FUPSSimple : public FUPSModule{
00058
00059 public:
00061 FUPSSimple() : m_nRuns(0) {};
00062
00063
00064 ~FUPSSimple() {};
00065
00066
00067
00068
00070 void runs (int nRuns) {
00071 m_nRuns = nRuns;
00072 }
00073
00075 int runs() const {
00076 return m_nRuns;
00077 }
00078
00079
00081 adjEntry getAdjEntry(const CombinatorialEmbedding &Gamma, node v, face f)
00082 {
00083 adjEntry adj = 0;
00084 forall_adj(adj, v) {
00085 if (Gamma.rightFace(adj) == f)
00086 break;
00087 }
00088
00089 OGDF_ASSERT(Gamma.rightFace(adj) == f);
00090
00091 return adj;
00092 }
00093
00094 protected:
00095
00105 virtual Module::ReturnType doCall(UpwardPlanRep &UPR,
00106 List<edge> &delEdges);
00107
00108
00109 private:
00110
00111 int m_nRuns;
00112
00113 void computeFUPS(UpwardPlanRep &UPR,
00114 List<edge> &delEdges);
00115
00117
00118
00119
00120
00121
00122
00123
00124 void getSpanTree(GraphCopy &GC, List<edge> &delEdges, bool random);
00125
00126
00127
00128
00129 void dfs_visit(const Graph &G, edge e, NodeArray<bool> &visited, EdgeArray<bool> &treeEdges, bool random);
00130
00131
00132 bool constructMergeGraph(GraphCopy &M,
00133 adjEntry adj_orig,
00134 const List<edge> &del_orig);
00135 };
00136
00137 }
00138 #endif