00001 /* 00002 * $Revision: 1.6 $ 00003 * 00004 * last checkin: 00005 * $Author: gutwenger $ 00006 * $Date: 2007-11-08 16:10:37 +0100 (Do, 08 Nov 2007) $ 00007 ***************************************************************/ 00008 00050 #ifdef _MSC_VER 00051 #pragma once 00052 #endif 00053 00054 00055 #ifndef OGDF_FAST_PLANAR_SUBGRAPH_H 00056 #define OGDF_FAST_PLANAR_SUBGRAPH_H 00057 00058 00059 00060 #include <ogdf/module/PlanarSubgraphModule.h> 00061 00062 00063 namespace ogdf { 00064 00086 class FastPlanarSubgraph : public PlanarSubgraphModule{ 00087 00088 public: 00090 FastPlanarSubgraph() : PlanarSubgraphModule() { 00091 m_nRuns = 0; 00092 }; 00093 00094 // destructor 00095 ~FastPlanarSubgraph() {}; 00096 00097 00098 // options 00099 00101 void runs (int nRuns) { 00102 m_nRuns = nRuns; 00103 } 00104 00106 int runs() const { 00107 return m_nRuns; 00108 } 00109 00110 00111 protected: 00113 00116 ReturnType doCall(const Graph &G, 00117 const List<edge> &preferedEdges, 00118 List<edge> &delEdges, 00119 const EdgeArray<int> *pCost, 00120 bool preferedImplyPlanar); 00121 00122 00123 private: 00124 int m_nRuns; 00125 00126 00128 00130 void computeDelEdges(const Graph &G, 00131 const EdgeArray<int> *pCost, 00132 const EdgeArray<edge> *backTableEdges, 00133 List<edge> &delEdges); 00134 00136 00138 void planarize(const Graph &G, 00139 NodeArray<int> &numbering, 00140 List<edge> &delEdges); 00141 }; 00142 00143 } 00144 #endif