#ifndef _SCHREIER_H_ /* only process this file once */ #define _SCHREIER_H_
#include"nauty.h" #include"naurng.h"
typedefstruct permnodestruct
{ struct permnodestruct *prev,*next; /* prev&next in circular list */ unsignedlong refcount; /* number of references */ int nalloc; /* size of p[] in ints,
<= 0 for a perm marker */ int mark; /* a mark, 0 unless changed */ #if FLEX_ARRAY_OK int p[]; #else int p[2]; /* actual vector, extended to
nalloc enties */ #endif
} permnode;
typedefstruct schreierlevel
{ struct schreierlevel *next; /* down one level, if any */ int fixed; /* fixed at next level, -1 if none */ /* Invariant: next=NULL => fixed = -1 */ int nalloc; /* size of vec[] and orbits[] */
permnode **vec; /* vec[i]^pwr[i] is edge label, */ int *pwr; /* transitive closure maps i->fixed */ int *orbits; /* vector of orbits */
permnode *marker; /* points to marker for this level */
} schreier;
#define SCHREIERFAILS 10 /* Default number of Schreier failures before giving up. */
#ifdef __cplusplus extern"C" { #endif
/* See separate file schreier.txt for a description of usage. */
externvoid freeschreier(schreier **gp, permnode **gens); externvoid addpermutation(permnode **ring, int *p, int n); extern permnode *findpermutation(permnode *gens, int *p, int n); extern boolean addgenerator(schreier **gp, permnode **gens, int *p, int n); extern boolean
condaddgenerator(schreier **gp, permnode **gens, int *p, int n); extern boolean expandschreier(schreier *gp, permnode **gens, int n); externint *getorbits(int *fix, int nfix,
schreier *gp, permnode **gens, int n); externint getorbitsmin(int *fix, int nfix, schreier *gp, permnode **gens, int **orbits, int *cell, int ncell, int n, boolean changed); externvoid pruneset(set *fixset, schreier *gp, permnode **gens,
set *x, int m, int n); externvoid newgroup(schreier **gp, permnode **gens, int n); externvoid schreier_freedyn(void); externint schreier_fails(int nfails); externvoid dumpschreier(FILE *f, schreier *gp, permnode *gens, int n); externint schreier_gens(permnode *gens); externvoid deleteunmarked(permnode **gens); externvoid grouporder(int *fix, int nfix, schreier *gp, permnode **gens, double *grpsize1, int *grpsize2, int n); externvoid schreier_check(int wordsize, int m, int n, int version);
#ifdef __cplusplus
} #endif
#endif/* _SCHREIER_H_ */
Messung V0.5
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.