41 #include <LEP/mcb/util.h>    44 #include <LEDA/graph/graph.h>    45 #include <LEDA/numbers/integer.h>    46 #include <LEDA/numbers/integer_matrix.h>    48 #include <LEDA/graph.h>    49 #include <LEDA/integer.h>    50 #include <LEDA/integer_matrix.h>    57 #if defined(LEDA_NAMESPACE)    62     using leda::integer_matrix;
    91     template<
class Container>
    93                                 const array<Container>& cb,
    99             leda::error_handler(999,
"determinant: cycle space dimension is zero!");
   101         if ( B.dim1() != N || B.dim2() != N )
   102             leda::error_handler(999,
"determinant: matrix has wrong dimensions!");
   104         array< mcb::spvecfp > oriented_cb ( N );
   105         CycleOrienter<Container> orienter( g, enumb );
   106         for( 
int i = 0; i < N; ++i ) 
   107             oriented_cb[i] = orienter( cb[i] );
   109         cycle_matrix<mcb::spvecfp>( g, oriented_cb, enumb, B );
   113     void cycle_matrix<mcb::spvecfp> ( 
const graph& g,
   114                                 const array<mcb::spvecfp>& cb,
   118         int N = enumb.dim_cycle_space();
   120             leda::error_handler(999,
"cycle_matrix: cycle space dimension is zero!");
   122         if ( B.dim1() != N || B.dim2() != N )
   123             leda::error_handler(999,
"cycle_matrix: matrix must have dimension NxN!");
   125         for( 
int i = 0; i < N; ++i ) {
   126             leda::list_item it = cb[i].first();
   129                 int index = cb[i].index(it);
   130                 if( ! enumb.tree( enumb( index ) ) )
   132                     B[i][index] = cb[i].inf(it);
   161     template<
class Container>
   163                                 const array< Container >& cb,
   169             leda::error_handler(999,
"determinant: cycle space dimension is zero!");
   171         integer_matrix B( N, N ); 
   172         cycle_matrix<Container>( g, cb, enumb, B );
   176             leda::error_handler(999,
"determinant: not a directed cycle basis!");
   185 #endif  // DETERMINANT_H 
Definition of edge numbering. 
 
An edge numbering class. 
Definition: edge_num.h:75
 
The main package namespace. 
 
std::ostream & output_maple_format(std::ostream &out, const integer_matrix &B)
Output a LEDA integer_matrix in a format compatible with maple. 
 
leda::integer determinant(const graph &g, const array< Container > &cb, const mcb::edge_num &enumb)
Compute the determinant of a cycle basis. 
Definition: determinant.h:162
 
void cycle_matrix(const graph &g, const array< Container > &cb, const mcb::edge_num &enumb, integer_matrix &B)
Compute the cycle matrix of a cycle basis. 
Definition: determinant.h:92
 
int dim_cycle_space() const 
Definition: edge_num.h:140