#include <graph.hh>
Inheritance diagram for bliss::Digraph:

Public Types | |
| enum | SplittingHeuristic { shs_f = 0, shs_fs, shs_fl, shs_fm, shs_fsm, shs_flm } |
Public Member Functions | |
| Digraph (const unsigned int N=0) | |
| ~Digraph () | |
| void | write_dimacs (FILE *const fp) |
| void | write_dot (FILE *const fp) |
| void | write_dot (const char *const file_name) |
| virtual unsigned int | get_hash () |
| unsigned int | get_nof_vertices () const |
| unsigned int | add_vertex (const unsigned int color=0) |
| void | add_edge (const unsigned int v1, const unsigned int v2) |
| void | change_color (const unsigned int vertex, const unsigned int color) |
| void | set_splitting_heuristic (SplittingHeuristic shs) |
| Digraph * | permute (const unsigned int *perm) const |
Static Public Member Functions | |
| static Digraph * | read_dimacs (FILE *const fp, FILE *const errstr=stderr) |
Multiple edges between vertices are not allowed (i.e., are ignored).
The possible splitting heuristics. The selected splitting heuristics affects the computed canonical labelings; therefore, if you want to compare whether two graphs are isomorphic by computing and comparing (for equality) their canonical versions, be sure to use the same splitting heuristics for both graphs.
| bliss::Digraph::Digraph | ( | const unsigned int | N = 0 |
) |
Create a new directed graph with N vertices and no edges.
| bliss::Digraph::~Digraph | ( | ) |
Destroy the graph.
| Digraph * bliss::Digraph::read_dimacs | ( | FILE *const | fp, | |
| FILE *const | errstr = stderr | |||
| ) | [static] |
Read the graph from the file fp in a variant of the DIMACS format. See the bliss website for the definition of the file format. Note that in the DIMACS file the vertices are numbered from 1 to N while in this C++ API they are from 0 to N-1. Thus the vertex n in the file corresponds to the vertex n-1 in the API.
| fp | the file stream for the graph file | |
| errstr | if non-null, the possible error messages are printed in this file stream |
| void bliss::Digraph::write_dimacs | ( | FILE *const | fp | ) | [virtual] |
Write the graph to a file in a variant of the DIMACS format. See the bliss website for the definition of the file format. Note that in the DIMACS file the vertices are numbered from 1 to N while in this C++ API they are from 0 to N-1. Thus the vertex n in the file corresponds to the vertex n-1 in the API.
| fp | the file stream where the graph is written |
Implements bliss::AbstractGraph.
| void bliss::Digraph::write_dot | ( | FILE *const | fp | ) | [virtual] |
Write the graph to a file in the graphviz dotty format.
| fp | the file stream where the graph is written |
Implements bliss::AbstractGraph.
| void bliss::Digraph::write_dot | ( | const char *const | file_name | ) | [virtual] |
Write the graph in a file in the graphviz dotty format.
| file_name | the name of the file to which the graph is written |
Implements bliss::AbstractGraph.
| unsigned int bliss::Digraph::get_hash | ( | ) | [virtual] |
| unsigned int bliss::Digraph::get_nof_vertices | ( | ) | const [inline, virtual] |
Return the number of vertices in the graph.
Implements bliss::AbstractGraph.
| unsigned int bliss::Digraph::add_vertex | ( | const unsigned int | color = 0 |
) |
Add a new vertex with color 'color' in the graph and return its index.
| void bliss::Digraph::add_edge | ( | const unsigned int | v1, | |
| const unsigned int | v2 | |||
| ) |
Add an edge from vertix v1 to vertex v2. Duplicate edges are ignored but try to avoid introducing them in the first place as they are not ignored immediately but will consume memory and computation resources for a while.
| void bliss::Digraph::change_color | ( | const unsigned int | vertex, | |
| const unsigned int | color | |||
| ) |
Change the color of the vertex 'vertex' to 'color'.
| void bliss::Digraph::set_splitting_heuristic | ( | SplittingHeuristic | shs | ) | [inline] |
Set the splitting heuristic used by the automorphism and canonical labeling algorithm. The selected splitting heuristics affects the computed canonical labelings; therefore, if you want to compare whether two graphs are isomorphic by computing and comparing (for equality) their canonical versions, be sure to use the same splitting heuristics for both graphs.
| Digraph * bliss::Digraph::permute | ( | const unsigned int * | perm | ) | const [virtual] |
Return a new graph that is the result of applying the permutation perm to this graph. This graph is not modified. perm must contain N=this.get_nof_vertices() elements and be a bijection on {0,1,...,N-1}, otherwise the result is undefined or a segfault.
Implements bliss::AbstractGraph.
1.5.1