1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
/******************************************************************************
* *
* This is the header file for traces() version 2.2, which is included into *
* nauty() version 2.8.6. *
* *
* nauty is Copyright (1984-2018) Brendan McKay. All rights reserved. *
* Traces is Copyright Adolfo Piperno, 2008-2018. All rights reserved. *
* See the file COPYRIGHT for the details of the software license. *
* *
* CHANGE HISTORY *
* 28-Dec-12 : final changes for version 2.0 *
* 20-Jan-13 : add code for ^C catching in Traces *
* 29-Mar-13 : bug correction in automorphism mode *
* 02-Apr-13 : add preprocessing *
* 21-May-13 : bug correction (coloured lists) *
* 29-Jun-13 : bug correction (coloured lists and cycles) *
* 07-Dec-13 : bug correction in automorphism mode (wrong group size *
* due to randomness in Schreier-Sims orbit computation) *
* bug correction (discrete initial partition) *
* 15-Feb-14 : CPUDEFS removed (already declared in gtools.h) *
* 01-Sep-15 : add weighted edges (not active) *
* 28-Jan-16 : version ready for nauty and Traces v.2.6 distribution *
* 12-Jul-16 : bug correction (reaching degree 2 vertices) *
* 07-Jun-18 : bug correction (finalnumcells, thanks R.Kralovic) *
* 07-Jun-18 : bug correction (index computation when findperm) *
* 10-Nov-22 : bug correction (cycles in degree 2 subgraphs) *
******************************************************************************/
#include "gtools.h"
#include "schreier.h"
typedef struct TracesOptions {
boolean getcanon;
boolean writeautoms;
boolean cartesian;
boolean digraph;
boolean defaultptn;
int linelength;
FILE* outfile;
int strategy; /* Only the value 0 is supported in this version. */
int verbosity;
permnode **generators;
void (*userautomproc)(int,int*,int);
int (*usercanonproc)(graph*,int*,graph*,int,int,int,int);
boolean weighted;
} TracesOptions;
#define DEFAULTOPTIONS_TRACES(opts) TracesOptions opts \
= { FALSE, FALSE, FALSE, FALSE, TRUE, 0, NULL, 0, 0, NULL, NULL, NULL, FALSE }
typedef struct TracesStats {
double grpsize1;
int grpsize2;
int numgenerators;
int numorbits;
int treedepth;
int canupdates;
int errstatus;
unsigned long numnodes;
unsigned long interrupted;
unsigned long peaknodes;
} TracesStats;
#ifdef __cplusplus
extern "C" {
#endif
extern void Traces(sparsegraph*,int*,int*,int*,TracesOptions*,
TracesStats*,sparsegraph*);
extern void refine_tr(sparsegraph*,int*,int*,int*,int*,TracesOptions*);
extern void traces_freedyn(void);
#ifdef __cplusplus
}
#endif
|