Given an undirected graph
and a non-negative length function on the edges
, a minimum cycle basis is a set of cycles which can generate the cycle space and at the same time has minimum total length.
Each cycle of the graph is assumed to be a 0-1 vector indexed on the edge set, and operations between cycles is performed in GF(2). The length of a cycle basis is the sum of the length of its cycles and the length of a cycle is the sum of the length of its edges.
The solution of a minimum cycle basis problem can be in the following three forms.
Most functions of this section are templates functions. The template parameter W can be instantiated with any number type. Attention must be paid in order to avoid overflow of values.
The whole package is protected using a namespace called "mcb", and therefore using anything requires mcb::xx or the using namespace mcb directive.
#include <LEDA/graph.h>
#include <LEDA/d_int_set.h>
#include <LEDA/edge_array.h>
#include <LEDA/node_array.h>
#include <LEDA/array.h>
#include <LEDA/list.h>
#include <LEDA/sortseq.h>
#include <LEDA/shortest_path.h>
#include <LEDA/templates/shortest_path.t>
#include <LEDA/tuple.h>
#include <LEP/mcb/SIGNED_GRAPH.h>
Include dependency graph for min_cycle_basis.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Namespaces | |
| namespace | mcb |
Functions | |
| int | mcb::MIN_CYCLE_BASIS_DEPINA (const leda::graph &g, leda::array< leda::d_int_set > &mcb, leda::array< leda::d_int_set > &proof, const mcb::edge_num &enumb) |
| Compute a MCB of an undirected unweighted graph using de Pina's algorithm. | |
| int | mcb::MIN_CYCLE_BASIS_DEPINA (const leda::graph &g, leda::array< leda::d_int_set > &mcb, const edge_num &enumb) |
| Compute a MCB of an undirected unweighted graph using de Pina's algorithm. | |
| int | mcb::MIN_CYCLE_BASIS_DEPINA (const leda::graph &g, leda::array< mcb::spvecgf2 > &mcb, leda::array< mcb::spvecgf2 > &proof, const edge_num &enumb) |
| Compute a MCB of an undirected unweighted graph using de Pina's algorithm. | |
| int | mcb::MIN_CYCLE_BASIS_DEPINA (const leda::graph &g, leda::array< mcb::spvecgf2 > &mcb, const edge_num &enumb) |
| Compute a MCB of an undirected unweighted graph using de Pina's algorithm. | |
| int | mcb::MIN_CYCLE_BASIS_DEPINA (const leda::graph &g, leda::array< leda::list< leda::edge > > &mcb, leda::array< leda::list< leda::edge > > &proof) |
| Compute a MCB of an undirected unweighted graph using de Pina's algorithm. | |
| int | mcb::MIN_CYCLE_BASIS_DEPINA (const leda::graph &g, leda::array< leda::list< leda::edge > > &mcb) |
| Compute a MCB of an undirected unweighted graph using de Pina's algorithm. | |
| int | mcb::MIN_CYCLE_BASIS_HYBRID (const leda::graph &g, leda::array< leda::d_int_set > &mcb, leda::array< leda::d_int_set > &proof, const edge_num &enumb) |
| int | mcb::MIN_CYCLE_BASIS_HYBRID (const leda::graph &g, leda::array< leda::d_int_set > &mcb, const edge_num &enumb) |
| int | mcb::MIN_CYCLE_BASIS_HYBRID (const leda::graph &g, leda::array< leda::list< leda::edge > > &mcb, leda::array< leda::list< leda::edge > > &proof) |
| int | mcb::MIN_CYCLE_BASIS_HYBRID (const leda::graph &g, leda::array< leda::list< leda::edge > > &mcb) |
| template<class W> | |
| W | mcb::MIN_CYCLE_BASIS_DEPINA (const graph &g, const edge_array< W > &len, array< spvecgf2 > &mcb, array< spvecgf2 > &proof, const edge_num &enumb) |
| Compute a MCB of an undirected weighted graph using de Pina's algorithm. | |
| template<class W> | |
| W | mcb::MIN_CYCLE_BASIS_DEPINA (const graph &g, const edge_array< W > &len, array< d_int_set > &mcb, array< d_int_set > &proof, const edge_num &enumb) |
| Compute a MCB of an undirected weighted graph using de Pina's algorithm. | |
| template<class W> | |
| W | mcb::MIN_CYCLE_BASIS_DEPINA (const graph &g, const edge_array< W > &len, array< d_int_set > &mcb, const edge_num &enumb) |
| Compute a MCB of an undirected weighted graph using de Pina's algorithm. | |
| template<class W> | |
| W | mcb::MIN_CYCLE_BASIS_DEPINA (const graph &g, const edge_array< W > &len, array< spvecgf2 > &mcb, const edge_num &enumb) |
| Compute a MCB of an undirected weighted graph using de Pina's algorithm. | |
| template<class W> | |
| W | mcb::MIN_CYCLE_BASIS_DEPINA (const graph &g, const edge_array< W > &len, array< list< edge > > &mcb) |
| Compute a MCB of an undirected weighted graph using de Pina's algorithm. | |
| template<class W> | |
| W | mcb::MIN_CYCLE_BASIS_DEPINA (const graph &g, const edge_array< W > &len, array< list< edge > > &mcb, array< list< edge > > &proof) |
| Compute a MCB of an undirected weighted graph using de Pina's algorithm. | |
| template<class W> | |
| W | mcb::MIN_CYCLE_BASIS_HYBRID (const graph &g, const edge_array< W > &len, array< d_int_set > &mcb, array< d_int_set > &proof, const edge_num &enumb) |
| template<class W> | |
| W | mcb::MIN_CYCLE_BASIS_HYBRID (const graph &g, const edge_array< W > &len, array< d_int_set > &mcb, const edge_num &enumb) |
| template<class W> | |
| W | mcb::MIN_CYCLE_BASIS_HYBRID (const graph &g, const edge_array< W > &len, array< list< edge > > &mcb, array< list< edge > > &proof) |
| template<class W> | |
| W | mcb::MIN_CYCLE_BASIS_HYBRID (const graph &g, const edge_array< W > &len, array< list< edge > > &mcb) |
1.4.6