Add --all option
This commit is contained in:
parent
08823b2770
commit
19119a5adf
10
src/SOCgen.c
10
src/SOCgen.c
@ -461,6 +461,7 @@ int main(int argc, char *argv[]) {
|
|||||||
int RANDOM = 0;
|
int RANDOM = 0;
|
||||||
int GRAPHVIZ = 0;
|
int GRAPHVIZ = 0;
|
||||||
int UNKOPTION = 0;
|
int UNKOPTION = 0;
|
||||||
|
int ALL = 0;
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "-n") == 0 && i+1 < argc) {
|
if (strcmp(argv[i], "-n") == 0 && i+1 < argc) {
|
||||||
n = atoi(argv[i+1]);
|
n = atoi(argv[i+1]);
|
||||||
@ -476,6 +477,8 @@ int main(int argc, char *argv[]) {
|
|||||||
NOSOURCE = 1;
|
NOSOURCE = 1;
|
||||||
} else if (strcmp(argv[i], "--graphviz") == 0) {
|
} else if (strcmp(argv[i], "--graphviz") == 0) {
|
||||||
GRAPHVIZ = 1;
|
GRAPHVIZ = 1;
|
||||||
|
} else if (strcmp(argv[i], "--all") == 0) {
|
||||||
|
ALL = 1;
|
||||||
} else {
|
} else {
|
||||||
UNKOPTION = 1;
|
UNKOPTION = 1;
|
||||||
break;
|
break;
|
||||||
@ -486,6 +489,7 @@ int main(int argc, char *argv[]) {
|
|||||||
fprintf(stderr, " -n <order> Generate SOCs with `order' connected nodes\n");
|
fprintf(stderr, " -n <order> Generate SOCs with `order' connected nodes\n");
|
||||||
fprintf(stderr, " -r <num> Pick directed graphs at random, and exit after having found `num' SOCs\n");
|
fprintf(stderr, " -r <num> Pick directed graphs at random, and exit after having found `num' SOCs\n");
|
||||||
fprintf(stderr, " --graphviz Output SOCs in Graphviz format, arcs of common parents are highlighted\n");
|
fprintf(stderr, " --graphviz Output SOCs in Graphviz format, arcs of common parents are highlighted\n");
|
||||||
|
fprintf(stderr, " --all Allow for disconnected SOCs and disable the degree-order filter (see below)\n");
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
fprintf(stderr, "[FILTER] Consider only simple directed graphs ...\n");
|
fprintf(stderr, "[FILTER] Consider only simple directed graphs ...\n");
|
||||||
fprintf(stderr, " -c ... that are cyclic (i.e., not DAGs)\n");
|
fprintf(stderr, " -c ... that are cyclic (i.e., not DAGs)\n");
|
||||||
@ -493,7 +497,7 @@ int main(int argc, char *argv[]) {
|
|||||||
fprintf(stderr, " --no-source ... without source nodes (also this logically implies -c)\n");
|
fprintf(stderr, " --no-source ... without source nodes (also this logically implies -c)\n");
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
fprintf(stderr, "This program prints the found SOCs as adjacency matrices to stdout, unless --graphviz has been specified.\n");
|
fprintf(stderr, "This program prints the found SOCs as adjacency matrices to stdout, unless --graphviz has been specified.\n");
|
||||||
fprintf(stderr, "To exclude (some) of the isomorphic SOCs, it uses a degree-order filter.\n");
|
fprintf(stderr, "To exclude (some) of the isomorphic SOCs, it uses a degree-order filter, unless --all is specified.\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
// EO Parse command-line arguments
|
// EO Parse command-line arguments
|
||||||
@ -583,10 +587,10 @@ int main(int argc, char *argv[]) {
|
|||||||
// Check whether this graph is canonical or not; continue if graph has not
|
// Check whether this graph is canonical or not; continue if graph has not
|
||||||
// proper ordering of degress (there is an isomorphic graphs to this one
|
// proper ordering of degress (there is an isomorphic graphs to this one
|
||||||
// that has been or will be checked)
|
// that has been or will be checked)
|
||||||
if (!isdegreeordered(n, parents, parentslen, children, childrenlen))
|
if (!ALL && !isdegreeordered(n, parents, parentslen, children, childrenlen))
|
||||||
continue;
|
continue;
|
||||||
// Ignore graphs that are not connected
|
// Ignore graphs that are not connected
|
||||||
if (!isconnected(n, parents, parentslen, children, childrenlen))
|
if (!ALL && !isconnected(n, parents, parentslen, children, childrenlen))
|
||||||
continue;
|
continue;
|
||||||
// Find cycles
|
// Find cycles
|
||||||
const int num_cycles = find_cycles(cycles, cyclescnt, n, children, \
|
const int num_cycles = find_cycles(cycles, cyclescnt, n, children, \
|
||||||
|
Loading…
Reference in New Issue
Block a user