[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