17namespace layer5_applications {
18namespace apps_combinatorics {
70 int f_v = (verbose_level >= 1);
73 cout <<
"large_set_was::init" << endl;
85 cout <<
"design_activity::do_load_table before H_gens->init_from_data_with_go" << endl;
92 cout <<
"design_activity::do_load_table after H_gens->init_from_data_with_go" << endl;
97 cout <<
"large_set_was::init "
98 "computing orbits on reduced set of designs:" << endl;
102 cout <<
"please use -prefix" << endl;
106 cout <<
"please use -selected_orbit_length" << endl;
125 cout <<
"large_set_was::init "
126 "orbits of H on the set of designs are:" << endl;
133 cout <<
"large_set_was::init after OoS->test_orbits_of_a_certain_length "
134 "the number of orbits before filtering is " << endl;
143 cout <<
"large_set_was::init before OoS->test_all_orbits_by_length" << endl;
150 cout <<
"large_set_was::init after OoS->test_all_orbits_by_length" << endl;
155 cout <<
"large_set_was::init after OoS->test_orbits_of_a_certain_length "
156 "the number of orbits after filtering is " << endl;
173 cout <<
"large_set_was::init done" << endl;
182 int nb_of_orbits_to_choose,
186 int f_v = (verbose_level >= 1);
189 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length, "
193 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length control=" << endl;
205 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length computing orbits "
215 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length before H_gens->init_from_data_with_go" << endl;
222 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length after H_gens->init_from_data_with_go" << endl;
227 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length normalizer has order ";
282 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length "
283 "computing orbits of normalizer done" << endl;
288 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length done" << endl;
297 int f_v = (verbose_level >= 1);
300 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length_single_orbit, "
307 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length before "
308 "compute_orbits_on_points for the restricted action "
309 "on the good orbits" << endl;
316 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length "
317 "the number of orbits of the normalizer on the "
318 "good orbits is " << Sch->
nb_orbits << endl;
322 cout <<
"printing orbits through Design_table_reduced_idx:" << endl;
324 cout, Design_table_reduced_idx);
329 long int *Orbits_under_N;
338 fname_out.append(
"_N_orbit_reps.csv");
343 Orbits_under_N[2 * i + 0] = a;
344 Orbits_under_N[2 * i + 1] = l;
354 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length_single_orbit done" << endl;
361 int nb_of_orbits_to_choose,
365 int f_v = (verbose_level >= 1);
368 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits, "
374 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits before "
375 "compute_orbits_on_points for the restricted action "
376 "on the good orbits" << endl;
389 if (
Descr->f_poset_classification_control) {
393 cout <<
"please use option -poset_classification_control" << endl;
398 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits control=" << endl;
410 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits before "
411 "Poset->add_testing_without_group" << endl;
421 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits "
429 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits "
430 "after Poset->orbits_on_k_sets_compute" << endl;
436 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits done" << endl;
441 cout <<
"large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits done" << endl;
449 std::string &fname,
int orbit_length,
452 int f_v = (verbose_level >= 1);
455 cout <<
"large_set_was::create_graph_on_orbits_of_length" << endl;
472 cout <<
"large_set_classify::process_starter_case "
473 "after OoS->create_graph_on_orbits_of_a_certain_length" << endl;
476 cout <<
"large_set_classify::process_starter_case "
477 "before CG->save" << endl;
480 CG->
save(fname, verbose_level);
485 cout <<
"large_set_was::create_graph_on_orbits_of_length done" << endl;
490 std::string &fname_mask,
int orbit_length2,
493 int f_v = (verbose_level >= 1);
496 cout <<
"large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits, "
506 long int *Orbit1_idx;
507 long int *extracted_set;
508 int extracted_set_size;
513 extracted_set =
NEW_lint(extracted_set_size);
518 cout <<
"large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits, "
519 "nb_N_orbits = " << nb_N_orbits << endl;
522 for (idx_N = nb_N_orbits - 1; idx_N >= 0; idx_N--) {
530 cout <<
"large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits, "
531 "idx_N = " << idx_N <<
" / " << nb_N_orbits << endl;
547 sprintf(str, fname_mask.c_str(), idx_N);
552 cout <<
"large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits, "
553 "fname = " << fname << endl;
554 cout <<
"large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits, "
570 TRUE , extracted_set , extracted_set_size ,
578 cout <<
"large_set_classify::create_graph_on_orbits_of_length_based_on_N_orbits "
579 "after OoS->create_graph_on_orbits_of_a_certain_length" << endl;
582 cout <<
"large_set_classify::create_graph_on_orbits_of_length_based_on_N_orbits "
583 "before CG->save" << endl;
586 CG->
save(fname, verbose_level);
592 cout <<
"large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits done" << endl;
597 std::string &solution_file_name,
598 long int *starter_set,
603 int f_v = (verbose_level >= 1);
606 cout <<
"large_set_was::read_solution_file" << endl;
609 long int *Large_sets;
611 long int *Packings_explicit;
616 cout <<
"large_set_was::read_solution_file "
617 "trying to read solution file " << solution_file_name << endl;
619 int i, j, a, b, l, h;
627 nb_solutions, Solutions, solution_size,
629 cout <<
"Read the following solutions from file:" << endl;
630 if (nb_solutions < 100) {
634 cout <<
"too large to print" << endl;
636 cout <<
"Number of solutions = " << nb_solutions << endl;
637 cout <<
"solution_size = " << solution_size << endl;
642 cout <<
"large_set_was::read_solution_file sz != LS->size_of_large_set" << endl;
648 nb_large_sets = nb_solutions;
649 Large_sets =
NEW_lint(nb_solutions * sz);
650 for (i = 0; i < nb_solutions; i++) {
651 Lint_vec_copy(starter_set, Large_sets + i * sz, starter_set_sz);
652 for (j = 0; j < solution_size; j++) {
654 a = Solutions[i * solution_size + j];
657 b = Solutions[i * solution_size + j];
663 Large_sets + i * sz + starter_set_sz + j *
orbit_length,
666 cout <<
"large_set_was::read_solution_file l != orbit_length" << endl;
671 a = Large_sets[i * sz + starter_set_sz + j];
674 Large_sets[i * sz + starter_set_sz + j] = b;
682 fname_out.assign(solution_file_name);
692 Packings_explicit =
NEW_lint(nb_solutions * Sz);
693 for (i = 0; i < nb_solutions; i++) {
694 for (j = 0; j < sz; j++) {
695 a = Large_sets[i * sz + j];
702 cout <<
"error: the packing does not pass the permutation test" << endl;
708 cout <<
"all packings pass the permutation test" << endl;
716 fname_out.assign(solution_file_name);
726 cout <<
"large_set_was::read_solution_file done" << endl;
732 long int *candidates,
int nb_candidates,
733 long int *good_candidates,
int &nb_good_candidates,
736 int f_v = (verbose_level >= 1);
737 int f_vv = (verbose_level >= 2);
742 cout <<
"large_set_was::normalizer_orbits_early_test_func checking set ";
745 cout <<
"candidate set of size "
746 << nb_candidates <<
":" << endl;
754 nb_good_candidates = nb_candidates;
757 nb_good_candidates = 0;
760 cout <<
"large_set_was::normalizer_orbits_early_test_func before testing" << endl;
762 for (j = 0; j < nb_candidates; j++) {
764 S[len] = candidates[j];
768 cout <<
"large_set_was::normalizer_orbits_early_test_func "
769 "testing " << j <<
" / "
770 << nb_candidates << endl;
774 good_candidates[nb_good_candidates++] = candidates[j];
782 int f_v = (verbose_level >= 1);
788 cout <<
"large_set_was::normalizer_orbits_check_conditions "
798 cout <<
"large_set_was::normalizer_orbits_check_conditions "
800 "repeat entry" << endl;
805 for (i = 0; i < len - 1; i++) {
831 long int *candidates,
int nb_candidates,
832 long int *good_candidates,
int &nb_good_candidates,
833 void *data,
int verbose_level)
836 int f_v = (verbose_level >= 1);
839 cout <<
"large_set_was_normalizer_orbits_early_test_func_callback for set ";
844 candidates, nb_candidates,
845 good_candidates, nb_good_candidates,
848 cout <<
"large_set_was_normalizer_orbits_early_test_func_callback done" << endl;
870 long int *orbit2,
int orbit_length2,
void *extra_data)
876 orbit2, orbit_length2);
a collection of combinatorial functions
int is_permutation_lint(long int *perm, long int n)
a collection of functions related to sorted vectors
int lint_vec_search_linear(long int *v, int len, long int a, int &idx)
a graph with a vertex coloring
void save(std::string &fname, int verbose_level)
a collection of functions related to file io
void read_solutions_from_file_and_get_solution_size(std::string &fname, int &nb_solutions, int *&Solutions, int &solution_size, int verbose_level)
void lint_matrix_write_csv(std::string &fname, long int *M, int m, int n)
a permutation group in a fixed action.
action * restricted_action(long int *points, int nb_points, int verbose_level)
void induced_action_on_orbits(action *old_action, groups::schreier *Sch, int f_play_it_safe, int verbose_level)
void compute_orbits_on_points(groups::schreier *&Sch, data_structures_groups::vector_ge *gens, int verbose_level)
compute orbits of a group in a given action; allows file io
void extract_orbits_using_classification(int orbit_length, int nb_orbits, long int *orbits_idx, long int *extracted_set, int verbose_level)
void create_graph_on_orbits_of_a_certain_length(graph_theory::colored_graph *&CG, std::string &fname, int orbit_length, int &type_idx, int f_has_user_data, long int *user_data, int user_data_size, int f_has_colors, int number_colors, int *color_table, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, int verbose_level)
void init(actions::action *A, strong_generators *SG, int f_load_save, std::string &prefix, int verbose_level)
int get_orbit_type_index(int orbit_length)
data_structures::tally * Classify_orbits_by_length
void print_orbits_of_a_certain_length(int orbit_length)
void test_all_orbits_by_length(int(*test_function)(long int *orbit, int orbit_length, void *data), void *test_function_data, int verbose_level)
void create_graph_on_orbits_of_a_certain_length_after_filtering(graph_theory::colored_graph *&CG, std::string &fname, long int *filter_by_set, int filter_by_set_size, int orbit_length, int &type_idx, int f_has_user_data, long int *user_data, int user_data_size, int f_has_colors, int number_colors, int *color_table, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, int verbose_level)
int test_pair_of_orbits_of_a_equal_length(int orbit_length, int type_idx, int idx1, int idx2, long int *Orbit1, long int *Orbit2, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, int verbose_level)
int * Orbits_classified_length
void report_classified_orbit_lengths(std::ostream &ost)
data_structures::set_of_sets * Orbits_classified
Schreier trees for orbits of groups on points.
void get_orbit(int orbit_idx, long int *set, int &len, int verbose_level)
void print_and_list_orbits_using_labels(std::ostream &ost, long int *labels)
void print_and_list_orbits_tex(std::ostream &ost)
a strong generating set for a permutation group with respect to a fixed action
void print_group_order(std::ostream &ost)
void init_from_data_with_go(actions::action *A, std::string &generators_data, std::string &go_text, int verbose_level)
data_structures_groups::vector_ge * gens
to control the behavior of the poset classification algorithm
int nb_orbits_at_level(int level)
void get_set_by_level(int level, int node, long int *set)
a poset with a group action on it
void init_subset_lattice(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, int verbose_level)
void add_testing_without_group(void(*func)(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, void *data, int verbose_level), void *data, int verbose_level)
poset_classification * orbits_on_k_sets_compute(poset_classification_control *Control, int k, int verbose_level)
int test_between_two_sets(long int *set_of_designs_by_index1, int set_size1, long int *set_of_designs_by_index2, int set_size2)
int test_set_within_itself(long int *set_of_designs_by_index, int set_size)
classification of large sets of designs
actions::action * A_on_designs
design_tables * Design_table
command line description of tasks for large sets with assumed symmetry
int f_selected_orbit_length
std::string H_generators_text
std::string N_generators_text
classification of large sets of designs with assumed symmetry
actions::action * A_on_orbits
poset_classification::poset_with_group_action * Poset
void do_normalizer_on_orbits_of_a_given_length_single_orbit(int orbit_length, int verbose_level)
groups::strong_generators * H_gens
void init(large_set_was_description *Descr, large_set_classify *LS, int verbose_level)
void create_graph_on_orbits_of_length(std::string &fname, int orbit_length, int verbose_level)
poset_classification::poset_classification_control * Control
actions::action * A_on_orbits_restricted
int normalizer_orbits_check_conditions(long int *S, int len, int verbose_level)
poset_classification::poset_classification * PC
int nb_of_orbits_to_choose
void read_solution_file(std::string &solution_file_name, long int *starter_set, int starter_set_sz, int orbit_length, int verbose_level)
groups::orbits_on_something * H_orbits
large_set_was_description * Descr
void create_graph_on_orbits_of_length_based_on_N_orbits(std::string &fname_mask, int orbit_length2, int verbose_level)
groups::strong_generators * N_gens
void do_normalizer_on_orbits_of_a_given_length_multiple_orbits(int orbit_length, int nb_of_orbits_to_choose, poset_classification::poset_classification_control *Control, int verbose_level)
groups::orbits_on_something * N_orbits
void do_normalizer_on_orbits_of_a_given_length(int orbit_length, int nb_of_orbits_to_choose, poset_classification::poset_classification_control *Control, int verbose_level)
void normalizer_orbits_early_test_func(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
#define Lint_vec_copy(A, B, C)
#define Lint_vec_print(A, B, C)
#define Int_matrix_print(A, B, C)
void large_set_was_normalizer_orbits_early_test_func_callback(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, void *data, int verbose_level)
int large_set_was_design_test_orbit(long int *orbit, int orbit_length, void *extra_data)
int large_set_was_classify_test_pair_of_orbits(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *extra_data)
the orbiter library for the classification of combinatorial objects