18 #include "CoinTime.hpp"
29 m_ = (
n_ + WORDSIZE - 1)/WORDSIZE;
34 nauty_check (WORDSIZE,
m_,
n_, NAUTYVERSIONID);
55 memset(
G_, 0,
m_*
n_*
sizeof(
int));
56 memset(
lab_, 0,
n_*
sizeof(
int));
57 memset(
ptn_, 0,
n_*
sizeof(
int));
80 options_->dispatch = &dispatch_graph;
82 for (
int j = 0;
j <
n_;
j++) {
83 set *gv = GRAPHROW(
G_,
j,
m_);
112 assert(ix <
n_ && jx <
n_);
114 set *gv = GRAPHROW(
G_, ix,
m_);
116 set *gv2 = GRAPHROW(
G_, jx,
m_);
125 for (
int j = 0;
j <
n_;
j++) {
139 double startCPU = CoinCpuTime ();
147 for(
int color = 1; color <=
n_; color++){
148 for (
int j = 0;
j <
n_;
j++) {
155 if (ix > 0)
ptn_[ix-1] = 0;
173 double endCPU = CoinCpuTime ();
185 assert(ix <
n_ && jx <
n_);
186 set *gv = GRAPHROW(
G_, ix,
m_);
187 if (ISELEMENT(gv, jx)) {
197 return(
stats_->grpsize1 * pow(10.0, (
double)
stats_->grpsize2) );
204 return(
stats_->numgenerators);
211 return(
stats_->numorbits);
214 std::vector<std::vector<int> >
217 std::vector<std::vector<int> > *orb =
new std::vector<std::vector<int> >;
220 std::multimap<int, int> orbmap;
221 std::set<int> orbkeys;
222 for (
int j = 0;
j <
n_;
j++) {
224 orbmap.insert(std::make_pair(
orbits_[j], j));
228 for (std::set<int>::iterator
it = orbkeys.begin();
229 it != orbkeys.end(); ++
it) {
230 std::multimap<int, int>::iterator
pos;
231 for (pos = orbmap.lower_bound(*
it);
232 pos != orbmap.upper_bound(*
it); ++
pos) {
233 (*orb)[orbix].push_back(pos->second);
304 afp_ = fopen(fname.c_str(),
"w");
pos
position where the operator should be printed when printing the expression
std::multimap< int, int >::iterator it
void addElement(int ix, int jx)
void getVstat(double *v, int nv)
void deleteElement(int ix, int jx)
int getNumGenerators() const
void setWriteAutoms(const std::string &afilename)
Methods to classify orbits.
double getGroupSize() const
std::vector< std::vector< int > > * getOrbits() const
Returns the orbits in a "convenient" form.