Skip to content
Snippets Groups Projects
Commit aa5ccf59 authored by Radek Hušek's avatar Radek Hušek Committed by Radek Hušek
Browse files

Add twoCut paramter to Tester::init

Add aditional parameter to Tester::init method.
Unused now but will be utilized by future 2-cut
optimalization.

Also required a bit of refactoring.
parent 4fefab12
No related branches found
No related tags found
No related merge requests found
......@@ -24,6 +24,10 @@ MakeRing(Z2_2, 4, a^b, a, a&b, 3);
#include <vector>
typedef int EdgeId;
typedef int DirectedEdgeId;
typedef std::pair<DirectedEdgeId, DirectedEdgeId> TwoCut;
struct AbstractTester {
bool isConnected;
#if SAVE_MEMORY
......@@ -33,12 +37,10 @@ struct AbstractTester {
#endif
ClassesType classes;
typedef int EdgeId;
typedef int DirectedEdgeId;
virtual void init(
int edges,
std::vector<EdgeId> spanningTree,
std::vector<TwoCut> twoCuts,
std::vector< std::vector<DirectedEdgeId> > elementaryCycles
) =0;
virtual std::vector<size_t> getClasses() =0;
......@@ -47,6 +49,7 @@ struct AbstractTester {
virtual ~AbstractTester() {}
};
template < typename Ring_ >
struct Tester : public AbstractTester {
typedef Ring_ Ring;
......@@ -73,6 +76,7 @@ struct Tester : public AbstractTester {
virtual void init(
int edges_,
std::vector<EdgeId> spanningTree,
std::vector<TwoCut> twoCuts,
std::vector< std::vector<DirectedEdgeId> > elementaryCycles
) {
edges = edges_;
......
from libcpp.vector cimport vector
from libcpp cimport bool, pair
from libcpp cimport bool
from libcpp.utility cimport pair
from sage.graphs.graph import Graph
cdef extern from "group-connectivity.h" namespace "Ring":
......@@ -11,8 +12,12 @@ cdef extern from "group-connectivity.h" namespace "Ring":
pass
cdef extern from "group-connectivity.h":
ctypedef int EdgeId
ctypedef int DirectedEdgeId
ctypedef pair[DirectedEdgeId, DirectedEdgeId] TwoCut
cdef cppclass AbstractTester:
void init(int, vector[int], vector[vector[int]])
void init(int, vector[EdgeId], vector[TwoCut], vector[vector[DirectedEdgeId]])
vector[size_t] getClasses()
bool run()
......@@ -51,11 +56,13 @@ def testGroupConnectivity(G, group = "Z4", getClasses = False, debug = False):
for (u, v, l) in set(G.edge_iterator()) - set(spanningTree.edge_iterator())
]
spanningTreeEdges = [ l for (_, _, l) in spanningTree.edge_iterator() ]
if debug:
print "Spanning Tree: ", [ l for (_, _, l) in spanningTree.edge_iterator() ]
print "Spanning Tree: ", spanningTreeEdges
print "Elementary cycles: ", elemCycles
tester.init(G.num_edges(), [ l for (_, _, l) in spanningTree.edge_iterator() ], elemCycles)
tester.init(G.num_edges(), spanningTreeEdges, [], elemCycles)
ret = tester.run()
if getClasses:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment