Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00042 #include <ogdf/energybased/multilevelmixer/MultilevelBuilder.h>
00043 #include <ogdf/basic/HashArray.h>
00044
00045 #ifdef _MSC_VER
00046 #pragma once
00047 #endif
00048
00049 #ifndef OGDF_LOCAL_BICONNECTED_MERGER_H
00050 #define OGDF_LOCAL_BICONNECTED_MERGER_H
00051
00052 namespace ogdf {
00053
00054 class OGDF_EXPORT LocalBiconnectedMerger : public MultilevelBuilder
00055 {
00056 private:
00057 double m_levelSizeFactor;
00058 NodeArray<node> m_substituteNodes;
00059 NodeArray<bool> m_isCut;
00060 HashArray<int, int> m_realNodeMarks;
00061
00062 void initCuts(Graph &G);
00063 int realNodeMark(int index);
00064
00067 bool buildOneLevel(MultilevelGraph &MLG);
00068 bool doMerge(MultilevelGraph &MLG, node parent, node mergePartner, int level);
00069 bool doMergeIfPossible(Graph &G, MultilevelGraph &MLG, node parent, node mergePartner, int level);
00070 bool canMerge(Graph &G, node parent, node mergePartner);
00071 bool canMerge(Graph &G, node parent, node mergePartner, int testStrength);
00072
00073 public:
00075 LocalBiconnectedMerger();
00078 void setFactor(double factor);
00079 };
00080
00081 }
00082
00083 #endif