Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

PlanarSubgraphBoyerMyrvold.h
Go to the documentation of this file.
1 
33 #pragma once
34 
39 
40 #include <random>
41 
42 namespace ogdf {
43 
45 
52 private:
53  int m_runs;
54  double m_randomness;
56  std::minstd_rand m_rand;
57 
58 public:
68  explicit PlanarSubgraphBoyerMyrvold(int runs = 1, double randomness = 0)
69  : m_runs(runs), m_randomness(randomness), m_rand(rand()) {};
70 
72 
73  virtual PlanarSubgraphBoyerMyrvold* clone() const override {
74  return new PlanarSubgraphBoyerMyrvold(m_runs);
75  };
76 
80  void seed(std::minstd_rand rand) { m_rand = rand; }
81 
82 protected:
92  virtual ReturnType doCall(const Graph& graph, const List<edge>& preferedEdges,
93  List<edge>& delEdges, const EdgeArray<int>* pCost, bool preferedImplyPlanar) override;
94 
98  bool isRemoved(const GraphCopy& copy, const edge e) {
99  return copy.copy(e) == nullptr || copy.copy(e)->source() != copy.copy(e->source())
100  || copy.copy(e)->target() != copy.copy(e->target());
101  }
102 };
103 
104 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
BoyerMyrvold.h
Declaration of the wrapper class of the Boyer-Myrvold planarity test.
ogdf::PlanarSubgraphBoyerMyrvold::~PlanarSubgraphBoyerMyrvold
~PlanarSubgraphBoyerMyrvold()
Definition: PlanarSubgraphBoyerMyrvold.h:71
ogdf::PlanarSubgraphModule
Interface for planar subgraph algorithms.
Definition: PlanarSubgraphModule.h:48
BoyerMyrvoldPlanar.h
Declaration of the class BoyerMyrvoldPlanar.
ogdf::BoothLueker
Booth-Lueker planarity test.
Definition: BoothLueker.h:51
ogdf::PlanarSubgraphBoyerMyrvold::seed
void seed(std::minstd_rand rand)
Seeds the random generator for performing a random DFS. If this method is never called the random gen...
Definition: PlanarSubgraphBoyerMyrvold.h:80
ogdf::GraphCopy
Copies of graphs supporting edge splitting.
Definition: GraphCopy.h:384
ogdf::PlanarSubgraphBoyerMyrvold::m_planModule
BoothLueker m_planModule
Definition: PlanarSubgraphBoyerMyrvold.h:55
ogdf::PlanarSubgraphBoyerMyrvold::isRemoved
bool isRemoved(const GraphCopy &copy, const edge e)
Returns true iff this edge could not be embedded.
Definition: PlanarSubgraphBoyerMyrvold.h:98
Minisat::Internal::copy
static void copy(const T &from, T &to)
Definition: Alg.h:61
PlanarSubgraphModule.h
Declaration of interface for planar subgraph algorithms.
ogdf::EdgeElement::source
node source() const
Returns the source node of the edge.
Definition: Graph_d.h:391
ogdf::List< edge >
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
ogdf::PlanarSubgraphBoyerMyrvold::m_rand
std::minstd_rand m_rand
Definition: PlanarSubgraphBoyerMyrvold.h:56
ogdf::PlanarSubgraphBoyerMyrvold::m_runs
int m_runs
Definition: PlanarSubgraphBoyerMyrvold.h:53
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::EdgeElement
Class for the representation of edges.
Definition: Graph_d.h:356
BoothLueker.h
Declaration of BoothLueker which implements a planarity test and planar embedding algorithm.
ogdf::PlanarSubgraphBoyerMyrvold
Maximum planar subgraph heuristic based on the Boyer-Myrvold planarity test.
Definition: PlanarSubgraphBoyerMyrvold.h:51
ogdf::PlanarSubgraphBoyerMyrvold::PlanarSubgraphBoyerMyrvold
PlanarSubgraphBoyerMyrvold(int runs=1, double randomness=0)
Creates a new Boyer-Myrvold subgraph module.
Definition: PlanarSubgraphBoyerMyrvold.h:68
ogdf::EdgeElement::target
node target() const
Returns the target node of the edge.
Definition: Graph_d.h:394
ogdf::PlanarSubgraphBoyerMyrvold::m_randomness
double m_randomness
Definition: PlanarSubgraphBoyerMyrvold.h:54
ogdf::PlanarSubgraphBoyerMyrvold::clone
virtual PlanarSubgraphBoyerMyrvold * clone() const override
Definition: PlanarSubgraphBoyerMyrvold.h:73
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709