17namespace layer5_applications {
18namespace apps_graph_theory {
45 int f_v = (verbose_level >= 1);
48 cout <<
"create_graph::init" << endl;
56 cout <<
"create_graph::init f_load" << endl;
62 cout <<
"create_graph::init before CG->load, fname=" <<
description->
fname << endl;
66 cout <<
"create_graph::init after CG->load, fname=" <<
description->
fname << endl;
71 cout <<
"create_graph::init number of vertices = " <<
N << endl;
75 cout <<
"create_graph::init label = " <<
label << endl;
88 cout <<
"create_graph::init f_Cayley_graph" << endl;
120 v, sz, verbose_level);
124 cout <<
"number of generators = " << nb_gens << endl;
126 cout <<
"generators: ";
136 cout <<
"generators:" << endl;
156 for (i = 0; i < go.
as_lint(); i++) {
162 cout <<
"Element " << setw(5) << i <<
" / "
163 << go.
as_int() <<
":" << endl;
169 for (h = 0; h < nb_gens; h++) {
188 cout <<
"create_graph::init number of vertices = " <<
N << endl;
190 label.assign(
"Cayley_graph_");
193 cout <<
"create_graph::init label = " <<
label << endl;
206 cout <<
"create_graph::init f_load_from_file_csv_no_border" << endl;
228 cout <<
"create_graph::init f_load_from_file_dimacs" << endl;
234 std::vector<std::vector<int>> Edges;
237 cout <<
"create_graph::init before Fio.read_dimacs_graph_format" << endl;
240 nb_V, Edges, verbose_level);
242 cout <<
"create_graph::init after Fio.read_dimacs_graph_format" << endl;
247 cout <<
"create_graph::init N=" <<
N << endl;
250 cout <<
"create_graph::init nb_E=" << Edges.size() << endl;
255 for (h = 0; h < Edges.size(); h++) {
259 cout <<
"create_graph::init edge " << h <<
" is " << i <<
" to " << j << endl;
261 Adj[i * nb_V + j] = 1;
262 Adj[j * nb_V + i] = 1;
289 for (h = 0; h < sz; h++) {
291 Combi.
k2ij(a, i, j,
N);
315 for (h = 0; h < sz2; h++) {
331 cout <<
"create_graph::init before create_cycle" << endl;
338 cout <<
"create_graph::init after create_cycle" << endl;
344 cout <<
"create_graph::init before create_Hamming" << endl;
353 cout <<
"create_graph::init after create_Hamming" << endl;
359 cout <<
"create_graph::init before create_Johnson" << endl;
368 cout <<
"create_graph::init after create_Johnson" << endl;
374 cout <<
"create_graph::init before create_Paley" << endl;
382 cout <<
"create_graph::init after create_Paley" << endl;
388 cout <<
"create_graph::init before create_Sarnak" << endl;
397 cout <<
"create_graph::init after create_Sarnak" << endl;
403 cout <<
"create_graph::init before create_Schlaefli" << endl;
409 cout <<
"create_graph::init after create_Schlaefli" << endl;
415 cout <<
"create_graph::init before create_Shrikhande" << endl;
420 cout <<
"create_graph::init after create_Shrikhande" << endl;
426 cout <<
"create_graph::init before create_Winnie_Li" << endl;
434 cout <<
"create_graph::init after create_Winnie_Li" << endl;
440 cout <<
"create_graph::init before create_Grassmann" << endl;
450 cout <<
"create_graph::init after create_Grassmann" << endl;
456 cout <<
"create_graph::init before create_coll_orthogonal" << endl;
464 cout <<
"create_graph::init after create_coll_orthogonal" << endl;
476 Surf->
init(F, verbose_level);
480 label.assign(
"trihedral_pair_disjointness");
481 label_tex.assign(
"trihedral\\_pair\\_disjointness");
498 cout <<
"create_graph::init before GT.make_non_attacking_queens_graph" << endl;
500 GT.make_non_attacking_queens_graph(
Adj,
N, n, verbose_level);
502 cout <<
"create_graph::init after GT.make_non_attacking_queens_graph" << endl;
507 sprintf(str,
"non_attacking_queens_graph_%d", n);
509 sprintf(str,
"non\\_attacking\\_queens\\_graph\\_%d", n);
519 cout <<
"create_graph::init before GT.make_disjoint_sets_graph" << endl;
521 GT.make_disjoint_sets_graph(
Adj,
N,
525 cout <<
"create_graph::init after GT.make_disjoint_sets_graph" << endl;
533 L.append(
"_disjoint_sets");
539 L.append(
"\\_disjoint\\_sets");
557 cout <<
"object must be of type group, but is ";
567 cout <<
"create_graph::init before GT.make_orbital_graph" << endl;
573 cout <<
"create_graph::init after GT.make_orbital_graph" << endl;
576 cout <<
"create_graph::init label = " <<
label << endl;
577 cout <<
"create_graph::init label_tex = " <<
label_tex << endl;
578 cout <<
"create_graph::init done" << endl;
596 cout <<
"object must be of type vector, but is ";
604 VB->
v, VB->
k, VB->
len / VB->
k,
627 cout <<
"first partition must be of type vector, but is ";
635 cout <<
"second partition must be of type vector, but is ";
656 cout <<
"create_graph::init the graph has a subset" << endl;
682 cout <<
"create_graph::init created colored graph with two colors" << endl;
692 cout <<
"create_graph::init before CG->init_adjacency_no_colors" << endl;
697 cout <<
"create_graph::init after CG->init_adjacency_no_colors" << endl;
703 cout <<
"create_graph::init created colored graph with one color" << endl;
720 cout <<
"create_graph::init label = " <<
label << endl;
721 cout <<
"create_graph::init done" << endl;
727 int n,
int verbose_level)
729 int f_v = (verbose_level >= 1);
732 cout <<
"create_graph::create_cycle" << endl;
739 cout <<
"create_graph::create_cycle before GT.make_cycle_graph" << endl;
741 GT.make_cycle_graph(
Adj,
N, n, verbose_level);
743 cout <<
"create_graph::create_cycle after GT.make_cycle_graph" << endl;
747 sprintf(str,
"Cycle_%d", n);
749 sprintf(str,
"Cycle\\_%d", n);
754 cout <<
"create_graph::create_cycle done" << endl;
760 int n,
int q,
int verbose_level)
762 int f_v = (verbose_level >= 1);
765 cout <<
"create_graph::create_Hamming" << endl;
772 cout <<
"create_graph::create_Hamming before GT.make_Hamming_graph" << endl;
774 GT.make_Hamming_graph(
Adj,
N, n, q, verbose_level);
776 cout <<
"create_graph::create_Hamming after GT.make_Hamming_graph" << endl;
780 sprintf(str,
"Hamming_%d_%d", n, q);
782 sprintf(str,
"Hamming\\_%d\\_%d", n, q);
787 cout <<
"create_graph::create_Hamming done" << endl;
793 int n,
int k,
int s,
int verbose_level)
795 int f_v = (verbose_level >= 1);
798 cout <<
"create_graph::create_Johnson" << endl;
805 cout <<
"create_graph::create_Johnson before GT.make_Johnson_graph" << endl;
807 GT.make_Johnson_graph(
Adj,
N, n, k, s, verbose_level);
809 cout <<
"create_graph::create_Johnson after GT.make_Johnson_graph" << endl;
813 sprintf(str,
"Johnson_%d_%d_%d", n, k, s);
815 sprintf(str,
"Johnson\\_%d\\_%d\\_%d", n, k, s);
820 cout <<
"create_graph::create_Johnson done" << endl;
825 int q,
int verbose_level)
827 int f_v = (verbose_level >= 1);
830 cout <<
"create_graph::create_Paley" << endl;
838 cout <<
"create_graph::create_Paley before GT.make_Paley_graph" << endl;
840 GT.make_Paley_graph(
Adj,
N, q, verbose_level);
842 cout <<
"create_graph::create_Paley after GT.make_Paley_graph" << endl;
846 sprintf(str,
"Paley_%d", q);
848 sprintf(str,
"Paley\\_%d", q);
853 cout <<
"create_graph::create_Paley done" << endl;
858 int p,
int q,
int verbose_level)
860 int f_v = (verbose_level >= 1);
863 cout <<
"create_graph::create_Sarnak" << endl;
867 int f_vv = (verbose_level >= 2);
868 int i, l, f_special =
FALSE;
875 cout <<
"create_graph::create_Sarnak Legendre(" << p <<
", " << q <<
")=" << l << endl;
881 int f_semilinear =
FALSE;
894 cout <<
"create_graph::create_Sarnak "
895 "Creating projective special linear group:" << endl;
906 cout <<
"create_graph::create_Sarnak "
907 "Creating projective linear group:" << endl;
930 cout <<
"create_graph::create_Sarnak "
931 "found a group of order " << goi << endl;
948 for (i = 0; i < q; i++) {
951 for (i = 0; i < q; i++) {
956 cout <<
"create_graph::create_Sarnak sqrt_mod_q:" << endl;
962 for (i = 1; i < p; i++) {
969 cout <<
"create_graph::create_Sarnak p=" << p << endl;
970 cout <<
"create_graph::create_Sarnak sqrt_p = " << sqrt_p << endl;
974 for (I = 0; I < q; I++) {
975 if (F->
add(F->
mult(I, I), 1) == 0) {
980 cout <<
"create_graph::create_Sarnak did not find I" << endl;
984 cout <<
"create_graph::create_Sarnak I=" << I << endl;
987 for (a0 = 1; a0 <= sqrt_p; a0++) {
991 for (a1 = -sqrt_p; a1 <= sqrt_p; a1++) {
995 for (a2 = -sqrt_p; a2 <= sqrt_p; a2++) {
999 for (a3 = -sqrt_p; a3 <= sqrt_p; a3++) {
1003 if (a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3 == p) {
1005 cout <<
"create_graph::create_Sarnak solution " << nb_A4 <<
" : " << a0
1006 <<
", " << a1 <<
", " << a2 <<
", "
1007 << a3 <<
", " << endl;
1009 if (nb_A4 == p + 1) {
1010 cout <<
"create_graph::create_Sarnak too many solutions" << endl;
1013 A4[nb_A4 * 4 + 0] = a0;
1014 A4[nb_A4 * 4 + 1] = a1;
1015 A4[nb_A4 * 4 + 2] = a2;
1016 A4[nb_A4 * 4 + 3] = a3;
1025 cout <<
"create_graph::create_Sarnak nb_A4=" << nb_A4 << endl;
1027 if (nb_A4 != p + 1) {
1028 cout <<
"create_graph::create_Sarnak nb_A4 != p + 1" << endl;
1048 gens->
init(A, verbose_level - 2);
1049 gens->
allocate(nb_A4, verbose_level - 2);
1052 cout <<
"create_graph::create_Sarnak making connection set:" << endl;
1054 for (i = 0; i < nb_A4; i++) {
1057 cout <<
"create_graph::create_Sarnak making generator " << i <<
":" << endl;
1080 cout <<
"create_graph::create_Sarnak making generator " << i <<
": a0=" << a0
1081 <<
" a1=" << a1 <<
" a2=" << a2
1082 <<
" a3=" << a3 << endl;
1084 M4[0] = F->
add(a0, F->
mult(I, a1));
1085 M4[1] = F->
add(a2, F->
mult(I, a3));
1096 det = F->
add(F->
mult(M4[0], M4[3]),
1100 cout <<
"det=" << det << endl;
1104 s = sqrt_mod_q[det];
1106 cout <<
"create_graph::create_Sarnak determinant is not a square" << endl;
1111 cout <<
"create_graph::create_Sarnak det=" << det <<
" sqrt=" << s
1112 <<
" mutiplying by " << sv << endl;
1114 for (j = 0; j < 4; j++) {
1115 M4[j] = F->
mult(sv, M4[j]);
1118 cout <<
"create_graph::create_Sarnak M4=";
1119 int_vec_print(cout, M4, 4);
1128 cout <<
"create_graph::create_Sarnak s_" << i <<
"=" << endl;
1136 cout <<
"create_graph::create_Sarnak before Sims->Cayley_graph" << endl;
1140 cout <<
"create_graph::create_Sarnak after Sims->Cayley_graph" << endl;
1145 cout <<
"create_graph::create_Sarnak "
1146 "The adjacency matrix of a graph with " << goi
1147 <<
" vertices has been computed" << endl;
1153 for (i = 0; i <
N; i++) {
1154 if (
Adj[0 *
N + i]) {
1159 cout <<
"create_graph::create_Sarnak the graph is regular of degree " << k << endl;
1166 sprintf(str,
"Sarnak_%d_%d", p, q);
1168 sprintf(str,
"Sarnak\\_%d\\_%d", p, q);
1180 cout <<
"create_graph::create_Sarnak done" << endl;
1186 int q,
int verbose_level)
1188 int f_v = (verbose_level >= 1);
1191 cout <<
"create_graph::create_Schlaefli" << endl;
1198 cout <<
"create_graph::create_Schlaefli before GT.make_Schlaefli_graph" << endl;
1200 GT.make_Schlaefli_graph(
Adj,
N, q, verbose_level);
1202 cout <<
"create_graph::create_Schlaefli after GT.make_Schlaefli_graph" << endl;
1207 sprintf(str,
"Schlaefli_%d", q);
1209 sprintf(str,
"Schlaefli\\_%d", q);
1214 cout <<
"create_graph::create_Schlaefli done" << endl;
1220 int f_v = (verbose_level >= 1);
1223 cout <<
"create_graph::create_Shrikhande" << endl;
1234 int f_no_base =
FALSE;
1241 cout <<
"create_graph::create_Shrikhande "
1242 "Created group Sym(" << n <<
") of size " << goi << endl;
1249 gens_G->
init(A, verbose_level - 2);
1250 gens_G->
allocate(nb_G, verbose_level - 2);
1254 gens_S->
init(A, verbose_level - 2);
1255 gens_S->
allocate(nb_S, verbose_level - 2);
1260 for (i = 0; i < nb_G; i++) {
1262 for (j = 0; j < 4; j++) {
1265 for (j = 0; j < 4; j++) {
1270 for (j = 0; j < 4; j++) {
1273 for (j = 0; j < 4; j++) {
1274 v[4 + j] = 4 + ((j + 1) % 4);
1281 cout <<
"create_graph::create_Shrikhande "
1282 "generators for G:" << endl;
1283 for (i = 0; i < nb_G; i++) {
1284 cout <<
"generator " << i <<
":" << endl;
1289 for (i = 0; i < nb_S; i++) {
1291 for (j = 0; j < 4; j++) {
1294 for (j = 0; j < 4; j++) {
1299 for (j = 0; j < 4; j++) {
1300 v[j] = (4 + j - 1) % 4;
1302 for (j = 0; j < 4; j++) {
1307 for (j = 0; j < 4; j++) {
1310 for (j = 0; j < 4; j++) {
1311 v[4 + j] = 4 + ((j + 1) % 4);
1315 for (j = 0; j < 4; j++) {
1318 for (j = 0; j < 4; j++) {
1319 v[4 + j] = 4 + ((4 + j - 1) % 4);
1323 for (j = 0; j < 4; j++) {
1326 for (j = 0; j < 4; j++) {
1327 v[4 + j] = 4 + ((j + 1) % 4);
1331 for (j = 0; j < 4; j++) {
1332 v[j] = (4 + j - 1) % 4;
1334 for (j = 0; j < 4; j++) {
1335 v[4 + j] = 4 + ((4 + j - 1) % 4);
1342 cout <<
"create_graph::create_Shrikhande "
1343 "generators for S:" << endl;
1344 for (i = 0; i < nb_S; i++) {
1345 cout <<
"generator " << i <<
":" << endl;
1354 gens_G, 16, verbose_level);
1359 cout <<
"create_graph::create_Shrikhande "
1360 "before G->Cayley_graph" << endl;
1364 cout <<
"create_graph::create_Shrikhande "
1365 "after G->Cayley_graph" << endl;
1371 cout <<
"create_graph::create_Shrikhande "
1372 "The adjacency matrix of a graph with " <<
1373 goi <<
" vertices has been computed" << endl;
1380 sprintf(str,
"Shrikhande");
1382 sprintf(str,
"Shrikhande");
1391 cout <<
"create_graph::create_Shrikhande done" << endl;
1396 int q,
int index,
int verbose_level)
1398 int f_v = (verbose_level >= 1);
1401 cout <<
"create_graph::create_Winnie_Li" << endl;
1408 cout <<
"create_graph::create_Winnie_Li "
1409 "before Combi.make_Winnie_Li_graph" << endl;
1411 GT.make_Winnie_Li_graph(
Adj,
N, q, index, verbose_level);
1413 cout <<
"create_graph::create_Winnie_Li "
1414 "after Combi.make_Winnie_Li_graph" << endl;
1419 sprintf(str,
"Winnie_Li_%d_%d", q, index);
1421 sprintf(str,
"Winnie_Li\\_%d\\_%d", q, index);
1427 cout <<
"create_graph::create_Winnie_Li done" << endl;
1432 int n,
int k,
int q,
int r,
int verbose_level)
1434 int f_v = (verbose_level >= 1);
1437 cout <<
"create_graph::create_Grassmann" << endl;
1445 cout <<
"create_graph::create_Grassmann "
1446 "before GT.make_Grassmann_graph" << endl;
1448 GT.make_Grassmann_graph(
Adj,
N, n, k, q, r, verbose_level);
1450 cout <<
"create_graph::create_Grassmann "
1451 "after GT.make_Grassmann_graph" << endl;
1456 sprintf(str,
"Grassmann_%d_%d_%d_%d", n, k, q, r);
1458 sprintf(str,
"Grassmann\\_%d\\_%d\\_%d\\_%d", n, k, q, r);
1463 cout <<
"create_graph::create_Grassmann done" << endl;
1468 int epsilon,
int d,
int q,
int verbose_level)
1470 int f_v = (verbose_level >= 1);
1473 cout <<
"create_graph::create_coll_orthogonal" << endl;
1480 cout <<
"create_graph::create_coll_orthogonal before "
1481 "GT.make_orthogonal_collinearity_graph" << endl;
1483 GT.make_orthogonal_collinearity_graph(
Adj,
N,
1484 epsilon, d, q, verbose_level);
1486 cout <<
"create_graph::create_coll_orthogonal after "
1487 "GT.make_orthogonal_collinearity_graph" << endl;
1492 sprintf(str,
"Coll_orthogonal_%d_%d_%d", epsilon, d, q);
1494 sprintf(str,
"Coll_orthogonal\\_%d\\_%d\\_%d", epsilon, d, q);
1498 cout <<
"create_graph::create_coll_orthogonal done" << endl;
1505 int f_v = (verbose_level >= 1);
1508 cout <<
"create_graph::make_orbital_graph" << endl;
1518 cout <<
"create_graph::make_orbital_graph "
1519 "before AG->orbits_on_subsets" << endl;
1523 cout <<
"create_graph::make_orbital_graph "
1524 "after AG->orbits_on_subsets" << endl;
1533 cout <<
"create_graph::make_orbital_graph set: ";
1543 cout <<
"create_graph::make_orbital_graph before Orb->init" << endl;
1548 cout <<
"create_graph::make_orbital_graph after Orb->init" << endl;
1557 M =
NEW_int(nb_points * nb_points);
1560 i = Orb->
Sets[h][0];
1561 j = Orb->
Sets[h][1];
1562 M[i * nb_points + j] = 1;
1563 M[j * nb_points + i] = 1;
1573 cout <<
"create_graph::make_orbital_graph AG->A->label = " << AG->
A->
label << endl;
1574 cout <<
"create_graph::make_orbital_graph AG->A->label_tex = " << AG->
A->
label_tex << endl;
1577 sprintf(str,
"_Orbital_%d", orbit_idx);
1578 label.assign(
"Group_");
1581 sprintf(str,
"Orbital\\_%d", orbit_idx);
1587 cout <<
"create_graph::make_orbital_graph done" << endl;
1592 int *Inc,
int nb_rows,
int nb_cols,
int verbose_level)
1594 int f_v = (verbose_level >= 1);
1597 cout <<
"create_graph::make_collinearity_graph" << endl;
1606 for (j = 0; j < nb_cols; j++) {
1607 for (i1 = 0; i1 < nb_rows; i1++) {
1608 if (Inc[i1 * nb_cols + j] == 0) {
1611 for (i2 = i1 + 1; i2 < nb_rows; i2++) {
1612 if (Inc[i2 * nb_cols + j] == 0) {
1615 Adj[i1 *
N + i2] = 1;
1616 Adj[i2 *
N + i1] = 1;
1621 label.assign(
"collinearity_graph");
1622 label_tex.assign(
"collinearity\\_graph");
1625 cout <<
"create_graph::make_collinearity_graph done" << endl;
1630 int *part1,
int sz1,
1631 int *part2,
int sz2,
1634 int f_v = (verbose_level >= 1);
1637 cout <<
"create_graph::make_chain_graph" << endl;
1640 cout <<
"create_graph::make_chain_graph sz1 != sz2" << endl;
1653 for (i = 0; i < sz1; i++) {
1655 first1[i + 1] = first1[i] + part1[i];
1659 for (i = 0; i < sz2; i++) {
1661 first2[i + 1] = first2[i] + part2[i];
1670 for (I = 0; I < sz1; I++) {
1671 for (i = 0; i < part1[I]; i++) {
1673 for (J = 0; J < sz2 - I; J++) {
1674 for (j = 0; j < part2[J]; j++) {
1676 Adj[ii *
N + jj] = 1;
1677 Adj[jj *
N + ii] = 1;
1683 label.assign(
"chain_graph");
1687 cout <<
"create_graph::make_chain_graph done" << endl;
void make_trihedral_pair_disjointness_graph(int *&Adj, int verbose_level)
cubic surfaces in PG(3,q) with 27 lines
void init(field_theory::finite_field *F, int verbose_level)
a collection of combinatorial functions
void k2ij(int k, int &i, int &j, int n)
to create a vector of field elements from class vector_builder_description
void finite_field_init(int q, int f_without_tables, int verbose_level)
a graph with a vertex coloring
void init_adjacency_no_colors(int nb_points, int *Adj, std::string &label, std::string &label_tex, int verbose_level)
void load(std::string &fname, int verbose_level)
void init_adjacency_two_colors(int nb_points, int *Adj, int *subset, int sz, std::string &label, std::string &label_tex, int verbose_level)
various functions related to graph theory
basic number theoretic functions
int Legendre(long int a, long int p, int verbose_level)
a collection of functions related to file io
void int_matrix_read_csv_no_border(std::string &fname, int *&M, int &m, int &n, int verbose_level)
void read_dimacs_graph_format(std::string &fname, int &nb_V, std::vector< std::vector< int > > &Edges, int verbose_level)
symbol_table_object_type get_object_type(int idx)
void get_int_vector_from_label(std::string &label, int *&v, int &sz, int verbose_level)
int find_symbol(std::string &label)
void print_type(symbol_table_object_type t)
a class to represent arbitrary precision integers
a permutation group in a fixed action.
void element_print_quick(void *elt, std::ostream &ost)
void element_print(void *elt, std::ostream &ost)
void init_symmetric_group(int degree, int f_no_base, int verbose_level)
void element_mult(void *a, void *b, void *ab, int verbose_level)
void init_projective_group(int n, field_theory::finite_field *F, int f_semilinear, int f_basis, int f_init_sims, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void init_projective_special_group(int n, field_theory::finite_field *F, int f_semilinear, int f_basis, int verbose_level)
void make_element(int *Elt, int *data, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
groups::sims * create_sims_from_generators_with_target_group_order_lint(data_structures_groups::vector_ge *gens, long int target_go, int verbose_level)
long int group_order_lint()
void element_print_as_permutation(void *elt, std::ostream &ost)
to hold a vector of group elements
void allocate(int length, int verbose_level)
void print(std::ostream &ost)
void init_from_data(actions::action *A, int *data, int nb_elements, int elt_size, int verbose_level)
void init(actions::action *A, int verbose_level)
a permutation group represented via a stabilizer chain
void group_order(ring_theory::longinteger_object &go)
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
long int element_rank_lint(int *Elt)
void Cayley_graph(int *&Adj, int &sz, data_structures_groups::vector_ge *gens_S, int verbose_level)
long int group_order_lint()
a strong generating set for a permutation group with respect to a fixed action
sims * create_sims(int verbose_level)
data_structures_groups::vector_ge * gens
orbit of sets using a Schreier tree, used in packing::make_spread_table
void init(actions::action *A, actions::action *A2, long int *set, int sz, data_structures_groups::vector_ge *gens, int verbose_level)
to control the behavior of the poset classification algorithm
the poset classification algorithm
poset_of_orbits * get_Poo()
void get_set(int node, long int *set, int &size)
a wrapper for linear_group and permutation_group_create
groups::strong_generators * Subgroup_gens
groups::strong_generators * get_strong_generators()
void orbits_on_subsets(poset_classification::poset_classification_control *Control, poset_classification::poset_classification *&PC, int subset_size, int verbose_level)
a description of a graph using command line arguments
int f_disjoint_sets_graph
std::string edge_list_text
std::string orbital_graph_group
std::string edges_as_pairs_text
int f_non_attacking_queens_graph
std::string disjoint_sets_graph_fname
std::string chain_graph_partition_2
int orbital_graph_orbit_idx
std::string chain_graph_partition_1
int coll_orthogonal_epsilon
int non_attacking_queens_graph_n
std::string subset_label_tex
std::string Cayley_graph_group
std::string Cayley_graph_gens
int f_trihedral_pair_disjointness_graph
std::vector< graph_modification_description > Modifications
std::string collinearity_graph_matrix
void create_Paley(int &N, int *&Adj, int q, int verbose_level)
void create_Hamming(int &N, int *&Adj, int n, int q, int verbose_level)
void create_coll_orthogonal(int &N, int *&Adj, int epsilon, int d, int q, int verbose_level)
graph_theory::colored_graph * CG
create_graph_description * description
void create_Shrikhande(int &N, int *&Adj, int verbose_level)
void create_Grassmann(int &N, int *&Adj, int n, int k, int q, int r, int verbose_level)
void create_cycle(int &N, int *&Adj, int n, int verbose_level)
void create_Schlaefli(int &N, int *&Adj, int q, int verbose_level)
void init(create_graph_description *description, int verbose_level)
void make_collinearity_graph(int &N, int *&Adj, int *Inc, int nb_rows, int nb_cols, int verbose_level)
void make_chain_graph(int &N, int *&Adj, int *part1, int sz1, int *part2, int sz2, int verbose_level)
void create_Sarnak(int &N, int *&Adj, int p, int q, int verbose_level)
void make_orbital_graph(int &N, int *&Adj, apps_algebra::any_group *AG, int orbit_idx, int verbose_level)
void create_Johnson(int &N, int *&Adj, int n, int k, int s, int verbose_level)
void create_Winnie_Li(int &N, int *&Adj, int q, int index, int verbose_level)
apps_algebra::any_group * get_object_of_type_any_group(std::string &label)
#define Int_vec_scan(A, B, C)
#define Int_vec_zero(A, B)
#define Lint_vec_print(A, B, C)
#define Int_matrix_print(A, B, C)
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
user_interface::orbiter_top_level_session * The_Orbiter_top_level_session
the orbiter library for the classification of combinatorial objects