22 #include "abstractgraph.hh" 72 void add_edge_to(
const unsigned int dest_vertex);
73 void add_edge_from(
const unsigned int source_vertex);
74 void remove_duplicate_edges(std::vector<bool>& tmp);
77 std::vector<unsigned int> edges_out;
78 std::vector<unsigned int> edges_in;
79 unsigned int nof_edges_in()
const {
return edges_in.size(); }
80 unsigned int nof_edges_out()
const {
return edges_out.size(); }
82 std::vector<Vertex> vertices;
83 void remove_duplicate_edges();
90 static unsigned int vertex_color_invariant(
const Digraph*
const g,
91 const unsigned int v);
98 static unsigned int indegree_invariant(
const Digraph*
const g,
99 const unsigned int v);
106 static unsigned int outdegree_invariant(
const Digraph*
const g,
107 const unsigned int v);
113 static unsigned int selfloop_invariant(
const Digraph*
const g,
114 const unsigned int v);
120 bool refine_according_to_invariant(
unsigned int (*inv)(
const Digraph*
const g,
121 const unsigned int v));
133 bool is_equitable()
const;
136 SplittingHeuristic sh;
149 std::vector<Partition::Cell*> _neighbour_cells;
151 void make_initial_equitable_partition();
153 void initialize_certificate();
157 bool nucr_find_first_component(
const unsigned int level);
158 bool nucr_find_first_component(
const unsigned int level,
159 std::vector<unsigned int>& component,
160 unsigned int& component_elements,
167 Digraph(
const unsigned int N = 0);
203 void write_dot(
const char *
const file_name);
220 unsigned int add_vertex(
const unsigned int color = 0);
228 void add_edge(
const unsigned int source,
const unsigned int target);
233 unsigned int get_color(
const unsigned int vertex)
const;
238 void change_color(
const unsigned int vertex,
const unsigned int color);
bool is_automorphism(unsigned int *const perm) const
Definition: digraph.cc:1694
unsigned int add_vertex(const unsigned int color=0)
Definition: digraph.cc:116
Definition: abstractgraph.cc:35
Definition: digraph.hh:64
unsigned int get_nof_vertices() const
Definition: digraph.hh:215
~Digraph()
Definition: digraph.cc:109
Digraph * permute(const unsigned int *const perm) const
Definition: digraph.cc:262
Definition: digraph.hh:49
Data structure for holding information about a cell in a Partition.
Definition: partition.hh:50
virtual unsigned int get_hash()
Definition: digraph.cc:356
Definition: digraph.hh:56
void add_edge(const unsigned int source, const unsigned int target)
Definition: digraph.cc:126
SplittingHeuristic
Definition: digraph.hh:42
unsigned int get_color(const unsigned int vertex) const
Definition: digraph.cc:136
The class for directed, vertex colored graphs.
Definition: digraph.hh:31
void write_dimacs(FILE *const fp)
Definition: digraph.cc:558
Definition: digraph.hh:60
An abstract base class for different types of graphs.
Definition: abstractgraph.hh:47
void write_dot(FILE *const fp)
Definition: digraph.cc:304
Digraph * copy() const
Definition: digraph.cc:151
static Digraph * read_dimacs(FILE *const fp, FILE *const errstr=stderr)
Definition: digraph.cc:397
int cmp(Digraph &other)
Definition: digraph.cc:176
Digraph(const unsigned int N=0)
Definition: digraph.cc:102
Definition: digraph.hh:52
void set_splitting_heuristic(SplittingHeuristic shs)
Definition: digraph.hh:262
Definition: digraph.hh:46
void change_color(const unsigned int vertex, const unsigned int color)
Definition: digraph.cc:143