[Nauty] Basic help with Nauty - Canonical graphs.
Justin Pearson
justin at DoCS.UU.SE
Thu Jul 17 23:25:01 EST 2003
I using Nauty and I'm having trouble with returning canonical
graphs. This means that I'm probally misunderstanding the
documentation.
The included C program illustrates what I'm doing. When compiled it
should I think give two identical canonical graphs. Instead it gives:-
(2 4)
0 : ;
1 : ;
2 : 0;
3 : 1;
4 : 1;
5 : 0 2 3;
(2 4)
0 : ;
1 : ;
2 : 1;
3 : 0;
4 : 1;
5 : 0 2 3;
Which according to dreadnaut are isomorphic.
What am I doing wrong? Do I have to do something with ther data
returned in *lab as well?
----included C program ------------------
#define MAXN 100
#include "nauty.h" /* which includes <stdio.h> */
main()
{
graph g[MAXN*MAXM];
graph cg[MAXN*MAXM];
int lab[MAXN],ptn[MAXN],orbits[MAXN];
static DEFAULTOPTIONS(options);
statsblk(stats);
setword workspace[50*MAXM];
int n,m,v;
set *gv;
options.writeautoms = TRUE;
options.getcanon = TRUE;
options.defaultptn = TRUE;
n = 6;
m = (n + WORDSIZE - 1) / WORDSIZE;
/* First Graph 1. */
gv = GRAPHROW(g,0,m);
EMPTYSET(gv,m);
ADDELEMENT(gv,2);ADDELEMENT(gv,3);ADDELEMENT(gv,4);
gv = GRAPHROW(g,1,m);
EMPTYSET(gv,m);
ADDELEMENT(gv,5);
gv = GRAPHROW(g,2,m);
EMPTYSET(gv,m);
ADDELEMENT(gv,3);
gv = GRAPHROW(g,3,m);
EMPTYSET(gv,m);
gv = GRAPHROW(g,4,m);
EMPTYSET(gv,m);
ADDELEMENT(gv,5);
gv = GRAPHROW(g,5,m);
EMPTYSET(gv,m);
nauty(g,lab,ptn,NULL,orbits,&options,&stats,workspace,50*MAXM,m,n,cg);
putgraph(stdout,cg,80,m,n);
/* Second graph. */
gv = GRAPHROW(g,0,m);
EMPTYSET(gv,m);
ADDELEMENT(gv,2);ADDELEMENT(gv,4);ADDELEMENT(gv,5);
gv = GRAPHROW(g,1,m);
EMPTYSET(gv,m);
ADDELEMENT(gv,3);
gv = GRAPHROW(g,2,m);
EMPTYSET(gv,m);
ADDELEMENT(gv,3);
gv = GRAPHROW(g,3,m);
EMPTYSET(gv,m);
gv = GRAPHROW(g,4,m);
EMPTYSET(gv,m);
ADDELEMENT(gv,5);
gv = GRAPHROW(g,5,m);
EMPTYSET(gv,m);
nauty(g,lab,ptn,NULL,orbits,&options,&stats,workspace,50*MAXM,m,n,cg);
putgraph(stdout,cg,80,m,n);
}
More information about the Nauty
mailing list