19namespace layer4_classification {
20namespace poset_classification {
24static void poset_classification_control_early_test_function_cliques(
long int *S,
int len,
25 long int *candidates,
int nb_candidates,
26 long int *good_candidates,
int &nb_good_candidates,
27 void *data,
int verbose_level);
126 int argc, std::string *argv,
134 cout <<
"poset_classification_control::read_arguments" << endl;
136 for (i = 0; i < argc; i++) {
138 if (ST.
stringcmp(argv[i],
"-problem_label") == 0) {
145 else if (ST.
stringcmp(argv[i],
"-path") == 0) {
147 path.assign(argv[++i]);
149 cout <<
"-path " <<
path << endl;
152 else if (ST.
stringcmp(argv[i],
"-depth") == 0) {
156 cout <<
"-depth " <<
depth << endl;
159 else if (ST.
stringcmp(argv[i],
"-draw_options") == 0) {
164 cout <<
"-draw_options " << endl;
170 cout <<
"done reading -draw_options " << endl;
171 cout <<
"i = " << i << endl;
172 cout <<
"argc = " << argc << endl;
174 cout <<
"next argument is " << argv[i] << endl;
179 else if (ST.
stringcmp(argv[i],
"-v") == 0) {
186 else if (ST.
stringcmp(argv[i],
"-gv") == 0) {
193 else if (ST.
stringcmp(argv[i],
"-recover") == 0) {
200 else if (ST.
stringcmp(argv[i],
"-extend") == 0) {
215 else if (ST.
stringcmp(argv[i],
"-lex") == 0) {
218 cout <<
"-lex" << endl;
221 else if (ST.
stringcmp(argv[i],
"-w") == 0) {
224 cout <<
"-w" << endl;
227 else if (ST.
stringcmp(argv[i],
"-W") == 0) {
230 cout <<
"-W" << endl;
234 else if (ST.
stringcmp(argv[i],
"-write_data_files") == 0) {
237 cout <<
"-write_data_files" << endl;
240 else if (ST.
stringcmp(argv[i],
"-t") == 0) {
243 cout <<
"-t" << endl;
246 else if (ST.
stringcmp(argv[i],
"-T") == 0) {
249 cout <<
"-T" << endl;
252 else if (ST.
stringcmp(argv[i],
"-write_tree") == 0) {
255 cout <<
"-write_tree" << endl;
258 else if (ST.
stringcmp(argv[i],
"-find_node_by_stabilizer_order") == 0) {
265 else if (ST.
stringcmp(argv[i],
"-draw_poset") == 0) {
268 cout <<
"-draw_poset " << endl;
271 else if (ST.
stringcmp(argv[i],
"-draw_full_poset") == 0) {
274 cout <<
"-draw_full_poset " << endl;
277 else if (ST.
stringcmp(argv[i],
"-plesken") == 0) {
280 cout <<
"-plesken " << endl;
283 else if (ST.
stringcmp(argv[i],
"-print_data_structure") == 0) {
286 cout <<
"-print_data_structure " << endl;
289 else if (ST.
stringcmp(argv[i],
"-list") == 0) {
292 cout <<
"-list" << endl;
295 else if (ST.
stringcmp(argv[i],
"-list_all") == 0) {
298 cout <<
"-list_all" << endl;
301 else if (ST.
stringcmp(argv[i],
"-table_of_nodes") == 0) {
304 cout <<
"-table_of_nodes" << endl;
307 else if (ST.
stringcmp(argv[i],
"-make_relations_with_flag_orbits") == 0) {
310 cout <<
"-make_relation_with_flag_orbits" << endl;
313 else if (ST.
stringcmp(argv[i],
"-Kramer_Mesner_matrix") == 0) {
321 else if (ST.
stringcmp(argv[i],
"-level_summary_csv") == 0) {
324 cout <<
"-level_summary_csv" << endl;
327 else if (ST.
stringcmp(argv[i],
"-orbit_reps_csv") == 0) {
330 cout <<
"-orbit_reps_csv" << endl;
333 else if (ST.
stringcmp(argv[i],
"-report") == 0) {
338 cout <<
"-report " << endl;
344 cout <<
"done reading -report " << endl;
345 cout <<
"i = " << i << endl;
346 cout <<
"argc = " << argc << endl;
348 cout <<
"next argument is " << argv[i] << endl;
353 cout <<
"-report" << endl;
356 else if (ST.
stringcmp(argv[i],
"-node_label_is_group_order") == 0) {
359 cout <<
"-node_label_is_group_order" << endl;
362 else if (ST.
stringcmp(argv[i],
"-node_label_is_element") == 0) {
365 cout <<
"-node_label_is_element" << endl;
368 else if (ST.
stringcmp(argv[i],
"-show_orbit_decomposition") == 0) {
371 cout <<
"-show_orbit_decomposition" << endl;
374 else if (ST.
stringcmp(argv[i],
"-show_stab") == 0) {
377 cout <<
"-show_stab" << endl;
380 else if (ST.
stringcmp(argv[i],
"-save_stab") == 0) {
383 cout <<
"-save_stab" << endl;
386 else if (ST.
stringcmp(argv[i],
"-show_whole_orbits") == 0) {
389 cout <<
"-show_whole_orbit" << endl;
393 else if (ST.
stringcmp(argv[i],
"-recognize") == 0) {
403 else if (ST.
stringcmp(argv[i],
"-export_schreier_trees") == 0) {
406 cout <<
"-export_schreier_trees" << endl;
409 else if (ST.
stringcmp(argv[i],
"-draw_schreier_trees") == 0) {
416 else if (ST.
stringcmp(argv[i],
"-test_multi_edge_in_decomposition_matrix") == 0) {
419 cout <<
"-test_multi_edge_in_decomposition_matrix " << endl;
422 else if (ST.
stringcmp(argv[i],
"-preferred_choice") == 0) {
426 int node, pt, pt_pref;
429 node = ST.
strtoi(argv[++i]);
430 pt = ST.
strtoi(argv[++i]);
431 pt_pref = ST.
strtoi(argv[++i]);
434 v.push_back(pt_pref);
438 cout <<
"-preferred_choice " << node <<
" " << pt <<
" " << pt_pref << endl;
441 else if (ST.
stringcmp(argv[i],
"-clique_test") == 0) {
449 else if (ST.
stringcmp(argv[i],
"-end") == 0) {
451 cout <<
"-end" << endl;
456 cout <<
"poset_classification_control::read_arguments "
457 "unrecognized option '" << argv[i] <<
"'" << endl;
463 cout <<
"poset_classification_control::read_arguments done" << endl;
478 cout <<
"-depth " <<
depth << endl;
481 cout <<
"-path" <<
path << endl;
484 cout <<
"-draw_options" << endl;
499 cout <<
"-lex" << endl;
502 cout <<
"-w" << endl;
505 cout <<
"-W" << endl;
508 cout <<
"-write_data_files" << endl;
511 cout <<
"-T" << endl;
514 cout <<
"-t" << endl;
517 cout <<
"-write_tree" << endl;
523 cout <<
"-draw_poset" << endl;
526 cout <<
"-draw_full_poset" << endl;
529 cout <<
"-plesken" << endl;
532 cout <<
"-print_data_structure" << endl;
535 cout <<
"-list" << endl;
538 cout <<
"-list_all" << endl;
541 cout <<
"-table_of_nodes" << endl;
544 cout <<
"-make_relations_with_flag_orbits" << endl;
550 cout <<
"-level_summary_csv" << endl;
553 cout <<
"-orbit_reps_csv" << endl;
560 cout <<
"-node_label_is_group_order" << endl;
563 cout <<
"-node_label_is_element" << endl;
566 cout <<
"-show_orbit_decomposition" << endl;
569 cout <<
"-show_stab" << endl;
572 cout <<
"-save_stab" << endl;
575 cout <<
"-show_whole_orbits" << endl;
579 cout <<
"-recognize recognizing " <<
recognize.size() <<
" many sets" << endl;
583 cout <<
"-export_schreier_trees" << endl;
586 cout <<
"-node_label_is_group_order" << endl;
589 cout <<
"-test_multi_edge_in_decomposition_matrix" << endl;
593 cout <<
"-preferred_choice "
610 cout <<
"poset_classification_control::prepare" << endl;
614 cout <<
"poset_classification_control::prepare -clique_test " <<
clique_test_graph << endl;
622 cout <<
"poset_classification_control::prepare -clique_test cannot find symbol " <<
clique_test_graph << endl;
628 cout <<
"poset_classification_control::prepare -clique_test "
630 cout <<
"poset_classification_control::prepare -clique_test "
631 "PC->get_A2()->degree = " << PC->get_A2()->degree << endl;
635 cout <<
"poset_classification_control::prepare -clique_test "
637 cout <<
"poset_classification_control::prepare -clique_test "
638 "PC->get_A2()->degree = " << PC->get_A2()->degree << endl;
639 cout <<
"poset_classification_control::prepare -clique_test degree of group does not match size of graph" << endl;
643 PC->get_poset()->add_testing_without_group(
644 poset_classification_control_early_test_function_cliques,
651 cout <<
"poset_classification_control::prepare done" << endl;
657 long int *S,
int len,
658 long int *candidates,
int nb_candidates,
659 long int *good_candidates,
int &nb_good_candidates,
665 cout <<
"poset_classification_control::early_test_func_for_clique_search" << endl;
669 cout <<
"poset_classification_control::early_test_func_for_clique_search !f_clique_test" << endl;
673 cout <<
"poset_classification_control::early_test_func_for_clique_search clique_test_CG == NULL" << endl;
679 candidates, nb_candidates,
680 good_candidates, nb_good_candidates,
684 cout <<
"poset_classification_control::early_test_func_for_clique_search done" << endl;
697 int f_v = (verbose_level >= 1);
701 cout <<
"poset_classification_control_preferred_choice_function data2=" << data2 << endl;
704 int node1, pt1, pt_prev1;
709 for (i = 0; i < l; i++) {
710 node1 = PC->get_control()->preferred_choice[i][0];
711 pt1 = PC->get_control()->preferred_choice[i][1];
712 pt_prev1 = PC->get_control()->preferred_choice[i][2];
713 if (node1 == data2 && pt == pt1) {
715 cout <<
"poset_classification_control_preferred_choice_function "
716 "node=" << data2 <<
" pt=" << pt <<
" pt_pref=" << pt_pref << endl;
726static void poset_classification_control_early_test_function_cliques(
long int *S,
int len,
727 long int *candidates,
int nb_candidates,
728 long int *good_candidates,
int &nb_good_candidates,
729 void *data,
int verbose_level)
731 poset_classification_control *Control = (poset_classification_control *) data;
732 int f_v = (verbose_level >= 1);
735 cout <<
"poset_classification_control_early_test_function_cliques for set ";
740 Control->early_test_func_for_clique_search(S, len,
741 candidates, nb_candidates,
742 good_candidates, nb_good_candidates,
747 cout <<
"poset_classification_control_early_test_function_cliques done" << endl;
a graph with a vertex coloring
void early_test_func_for_clique_search(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
options for drawing an object of type layered_graph
int read_arguments(int argc, std::string *argv, int verbose_level)
int find_symbol(std::string &label)
Schreier trees for orbits of groups on points.
poset_classification_control()
int f_node_label_is_element
int f_print_data_structure
int f_show_orbit_decomposition
void prepare(poset_classification *PC, int verbose_level)
int f_Kramer_Mesner_matrix
std::vector< std::vector< int > > preferred_choice
int f_draw_schreier_trees
std::string recover_fname
int f_make_relations_with_flag_orbits
int read_arguments(int argc, std::string *argv, int verbose_level)
std::string schreier_tree_prefix
std::string problem_label
graphics::layered_graph_draw_options * draw_options
~poset_classification_control()
int verbose_level_group_theory
std::string clique_test_graph
int f_node_label_is_group_order
poset_classification_report_options * report_options
void early_test_func_for_clique_search(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
int f_test_multi_edge_in_decomposition_matrix
int f_export_schreier_trees
graph_theory::colored_graph * clique_test_CG
int f_find_node_by_stabilizer_order
int find_node_by_stabilizer_order
std::vector< std::string > recognize
to control the behavior of the poset classification report function
int read_arguments(int argc, std::string *argv, int verbose_level)
the poset classification algorithm
poset_classification_control * get_control()
#define Lint_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
void poset_classification_control_preferred_choice_function(int pt, int &pt_pref, groups::schreier *Sch, void *data, int data2, int verbose_level)
the orbiter library for the classification of combinatorial objects