16namespace layer5_applications {
21static int packing_long_orbit_test_function(
long int *orbit1,
int len1,
22 long int *orbit2,
int len2,
void *data);
75 int f_v = (verbose_level >= 1);
78 cout <<
"packing_long_orbits::init" << endl;
85 cout <<
"packing_long_orbits::init please specify orbit length" << endl;
93 cout <<
"packing_long_orbits::init Orbit_lengths=";
102 cout <<
"packing_long_orbits::init long_orbit_idx = " <<
long_orbit_idx << endl;
106 cout <<
"please use either -mixed_orbits or -orbit_length" << endl;
126 cout <<
"packing_long_orbits::init f_list_of_cases_from_file" << endl;
132 cout <<
"packing_long_orbits::init do_single_case" << endl;
135 cout <<
"packing_long_orbits::init do_single_case not yet implemented" << endl;
142 cout <<
"fixpoint_clique_size is zero" << endl;
149 cout <<
"packing_long_orbits::init Filtered_orbits=" << endl;
154 cout <<
"H_gens in action on reduced spreads:" << endl;
166 std::vector<std::vector<int> > Packings_classified;
167 std::vector<std::vector<int> > Packings;
169 std::vector<std::vector<std::vector<int> > > Packings_by_case;
172 cout <<
"packing_long_orbits::init before create_graph_on_remaining_long_orbits" << endl;
180 cout <<
"packing_long_orbits::init after create_graph_on_remaining_long_orbits" << endl;
181 cout <<
"Packings_classified.size()=" << Packings_classified.size() << endl;
182 cout <<
"Packings.size()=" << Packings.size() << endl;
185 Packings_by_case.push_back(Packings);
187 std::string fname_packings;
190 fname_packings.append(
"_packings.csv");
195 cout <<
"packing_long_orbits::init before save_packings_by_case" << endl;
199 cout <<
"packing_long_orbits::init after save_packings_by_case" << endl;
207 cout <<
"packing_long_orbits::init done" << endl;
213 int f_v = (verbose_level >= 1);
216 cout <<
"packing_long_orbits::list_of_cases_from_file" << endl;
222 cout <<
"packing_long_orbits::list_of_cases_from_file" << endl;
223 cout <<
"packing_long_orbits::list_of_cases_from_file fixpoints_idx = " <<
fixpoints_idx << endl;
230 List_of_cases, m, n, verbose_level);
234 cout <<
"packing_long_orbits::list_of_cases_from_file n != 1" << endl;
240 cout <<
"packing_long_orbits::list_of_cases_from_file m = " << m << endl;
250 std::vector<std::vector<std::vector<int> > > Packings_by_case;
254 cout <<
"packing_long_orbits::list_of_cases_from_file before loop" << endl;
255 cout <<
"idx : List_of_cases[idx]" << endl;
256 for (idx = 0; idx < m; idx++) {
257 cout << idx <<
" : " << List_of_cases[idx] << endl;
263 for (idx = 0; idx < m; idx++) {
266 cout <<
"packing_long_orbits::list_of_cases_from_file "
269 std::vector<std::vector<int> > Packings;
270 std::vector<std::vector<int> > Packings_classified;
281 cout <<
"packing_long_orbits::list_of_cases_from_file before process_single_case, "
282 "idx = " << idx <<
" / " << m << endl;
291 cout <<
"packing_long_orbits::list_of_cases_from_file after process_single_case, "
292 "idx = " << idx <<
" / " << m << endl;
299 cout <<
"packing_long_orbits::list_of_cases_from_file after process_single_case, "
300 "idx = " << idx <<
" / " << m << endl;
303 Nb[idx] = Packings.size();
304 Packings_by_case.push_back(Packings);
306 cout <<
"packing_long_orbits::list_of_cases_from_file after process_single_case, "
307 "idx = " << idx <<
" / " << m <<
", we found " << Nb[idx] <<
" solutions" << endl;
313 cout <<
"packing_long_orbits::list_of_cases_from_file after loop" << endl;
316 for (idx = 0; idx < Packings_by_case.size(); idx++) {
317 total += Packings_by_case[idx].size();
320 cout <<
"total number of packings = " << total << endl;
323 std::string fname_out;
333 cout <<
"written file " << fname_out <<
" of size " << Fio.
file_size(fname_out.c_str()) << endl;
338 std::string fname_packings;
342 fname_packings.append(
"_packings.csv");
347 cout <<
"packing_long_orbits::list_of_cases_from_file before save_packings_by_case" << endl;
351 cout <<
"packing_long_orbits::list_of_cases_from_file after save_packings_by_case" << endl;
359 cout <<
"packing_long_orbits::list_of_cases_from_file done" << endl;
364 std::vector<std::vector<std::vector<int> > > &Packings_by_case,
int verbose_level)
366 int f_v = (verbose_level >= 1);
373 cout <<
"packing_long_orbits::save_packings_by_case" << endl;
375 for (idx = 0; idx < Packings_by_case.size(); idx++) {
376 total += Packings_by_case[idx].size();
380 int i, j, l, h, a, b;
384 for (idx = 0; idx < Packings_by_case.size(); idx++) {
385 l = Packings_by_case[idx].size();
386 for (i = 0; i < l; i++) {
388 a = Packings_by_case[idx][i][j];
396 cout <<
"packing_long_orbits::list_of_cases_from_file warning: h != total" << endl;
401 cout <<
"written file " << fname_packings <<
" of size " << Fio.
file_size(fname_packings.c_str()) << endl;
407 cout <<
"packing_long_orbits::save_packings_by_case done" << endl;
412 std::vector<std::vector<int> > &Packings_classified,
413 std::vector<std::vector<int> > &Packings,
416 int f_v = (verbose_level >= 1);
419 cout <<
"packing_long_orbits::process_single_case "
430 cout <<
"packing_long_orbits::process_single_case before init_fixpoint_clique_from_orbit_numbers" << endl;
434 cout <<
"packing_long_orbits::process_single_case after init_fixpoint_clique_from_orbit_numbers" << endl;
441 cout <<
"packing_long_orbits::process_single_case before L->filter_orbits" << endl;
445 cout <<
"packing_long_orbits::process_single_case after L->filter_orbits" << endl;
452 cout <<
"packing_long_orbits::process_single_case "
453 "before L->create_graph_on_remaining_long_orbits" << endl;
460 cout <<
"packing_long_orbits::process_single_case "
461 "after L->create_graph_on_remaining_long_orbits" << endl;
474 int f_v = (verbose_level >= 1);
477 cout <<
"packing_long_orbits::init_fixpoint_clique_from_orbit_numbers" << endl;
499 int f_v = (verbose_level >= 1);
503 cout <<
"packing_long_orbits::filter_orbits" << endl;
506 cout <<
"packing_long_orbits::filter_orbits fixpoint_clique=";
530 for (t = 0; t < Input->
nb_sets; t++) {
542 cout <<
"packing_long_orbits::filter_orbits testing orbits of length " << orbit_length
543 <<
", there are " << Input->
Set_size[t] <<
" orbits before the test" << endl;
545 for (i = 0; i < Input->
Set_size[t]; i++) {
550 if (len1 != orbit_length) {
551 cout <<
"packing_long_orbits::filter_orbits len1 != orbit_length" << endl;
556 cout <<
"packing_long_orbits::filter_orbits t=" << t <<
" i=" << i <<
" b=" << b <<
" orbit=";
562 set, orbit_length, verbose_level)) {
573 cout <<
"rejected" << endl;
578 cout <<
"packing_long_orbits::filter_orbits testing orbits of length " << orbit_length <<
" done, "
579 "there are " << Input->
Set_size[t] <<
" orbits before the test, "
586 cout <<
"packing_long_orbits::filter_orbits "
587 "we found the following number of live orbits:" << endl;
588 cout <<
"t : nb" << endl;
589 for (t = 0; t < Input->
nb_sets; t++) {
595 cout <<
"packing_long_orbits::filter_orbits "
601 std::vector<std::vector<int> > &Packings_classified,
602 std::vector<std::vector<int> > &Packings,
605 int f_v = (verbose_level >= 1);
609 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits" << endl;
610 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
612 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
619 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits fname_graph = " <<
fname_graph << endl;
620 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits fname_solutions = " <<
fname_solutions << endl;
626 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
627 "creating the graph on long orbits with "
629 <<
" vertices" << endl;
646 b = PW->reduced_spread_orbits_under_H->Orbits_classified->Sets[
fixpoints_idx][a];
647 PW->reduced_spread_orbits_under_H->Sch->get_orbit(b ,
set, len,
656 cout <<
"solution file does not exist" << endl;
657 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
658 "before create_graph_and_save_to_file" << endl;
666 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
667 "the graph on long orbits has been created with "
669 <<
" vertices" << endl;
674 cout <<
"Descr->f_create_graphs is FALSE, we are not creating the graph" << endl;
680 cout <<
"calling solver is disabled for now" << endl;
685 cout <<
"calling solver" << endl;
690 if (!
Descr->f_clique_size) {
691 cout <<
"please specify the clique size using -clique_size <int : s>" << endl;
696 cmd.append(
"/orbiter.out -v 2 -create_graph -load_from_file ");
698 cmd.append(
" -end -graph_theoretic_activity -find_cliques -target_size ");
699 sprintf(str,
"%d",
Descr->clique_size);
701 cmd.append(
" -end -end");
705 cout <<
"executing command: " << cmd << endl;
716 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
729 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
730 "solution_size = " << solution_size << endl;
736 Solutions, solution_size,
743 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
744 "solution file contains " << nb_solutions <<
" solutions" << endl;
752 long int *Packings_table;
754 clique =
NEW_int(solution_size);
761 for (sol_idx = 0; sol_idx < nb_solutions; sol_idx++) {
764 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
765 "reading solution " << sol_idx <<
" / " << nb_solutions <<
":" << endl;
769 for (i = 0; i < solution_size; i++) {
770 clique[i] = Solutions[sol_idx * solution_size + i];
774 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
775 "reading solution " << sol_idx <<
" / " << nb_solutions <<
", clique = ";
802 for (i = 0; i < solution_size; i++) {
810 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
811 "reading solution " << sol_idx <<
" / " << nb_solutions <<
", clique after unfiltering = ";
835 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
836 "reading solution " << sol_idx <<
" / " << nb_solutions <<
" packing = ";
842 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits The packing is not line disjoint" << endl;
854 Packing.push_back(a);
857 Packings.push_back(Packing);
869 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
870 "before PWF->PW->A_on_reduced_spreads->create_induced_action_on_sets" << endl;
872 cout <<
"Packings_table:" << endl;
885 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
886 "before Ar_On_Packings->all_point_orbits_from_generators" << endl;
892 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
893 "after Ar_On_Packings->all_point_orbits_from_generators" << endl;
902 for (i = 0; i < Orbits->
nb_orbits; i++) {
908 Packing.push_back(a);
923 Packings_classified.push_back(Packing);
926 for (i = 0; i < Orbits->
nb_orbits; i++) {
931 for (h= 0; h < len; h++) {
937 Packing.push_back(a);
952 Packings.push_back(Packing);
963 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits We found the following type vectors:" << endl;
971 <<
" # of solutions = " << Solutions.size()
972 <<
", # of orbits is " << Orbits->
nb_orbits
973 <<
", # uniform = " << nb_uniform <<
" ";
982 cout << nb_points <<
" & ";
983 cout << nb_solutions <<
" & ";
994 cout <<
" \\\\TEX" << endl;
1014 cout <<
"packing_long_orbits::create_graph_on_remaining_long_orbits "
1039 int f_has_user_data,
long int *user_data,
int user_data_size,
1042 int f_v = (verbose_level >= 1);
1045 cout <<
"packing_long_orbits::create_graph_and_save_to_file" << endl;
1053 cout <<
"packing_long_orbits::create_graph_and_save_to_file before create_graph_on_orbits_of_a_certain_length_override_orbits_classified" << endl;
1062 f_has_user_data, user_data, user_data_size,
1063 packing_long_orbit_test_function,
1069 cout <<
"packing_long_orbits::create_graph_and_save_to_file after create_graph_on_orbits_of_a_certain_length_override_orbits_classified" << endl;
1075 cout <<
"packing_long_orbits::create_graph_and_save_to_file before create_weighted_graph_on_orbits" << endl;
1085 f_has_user_data, user_data, user_data_size,
1086 packing_long_orbit_test_function,
1094 cout <<
"i : Orbit_lengths[i] : Type_idx[i]" << endl;
1101 cout <<
"packing_long_orbits::create_graph_and_save_to_file after create_weighted_graph_on_orbits" << endl;
1107 cout <<
"neither -orbit_length nor -mixed_orbits has been given" << endl;
1112 cout <<
"packing_long_orbits::create_graph_and_save_to_file before CG->save, fname=" << fname << endl;
1114 CG->
save(fname, verbose_level);
1116 cout <<
"packing_long_orbits::create_graph_and_save_to_file after CG->save, fname=" << fname << endl;
1122 cout <<
"packing_long_orbits::create_graph_and_save_to_file done" << endl;
1128 long int *user_data,
int user_data_sz,
1131 int f_v = (verbose_level >= 1);
1134 cout <<
"packing_long_orbits::create_graph_on_long_orbits" << endl;
1141 TRUE , user_data, user_data_sz,
1145 cout <<
"packing_long_orbits::create_graph_on_long_orbits done" << endl;
1155 ost <<
"Type : orbit length : number of orbits of this length\\\\" << endl;
1167static int packing_long_orbit_test_function(
long int *orbit1,
int len1,
1168 long int *orbit2,
int len2,
void *data)
1173 orbit1, len1, orbit2, len2, 0 );
void print(std::ostream &ost, std::vector< int > &v)
void zero(long int *v, long int len)
long int & element(int i, int j)
void add_element(int i, long int a)
void init_basic(int underlying_set_size, int nb_sets, long int *Sz, int verbose_level)
a statistical analysis of data consisting of vectors of ints
void init(int *data, int data_length, int data_set_sz, int verbose_level)
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
void print_tex_no_lf(int f_backwards)
int test_if_set_of_spreads_is_line_disjoint_and_complain_if_not(long int *set, int len)
int nb_iso_types_of_spreads
a graph with a vertex coloring
void save(std::string &fname, int verbose_level)
a collection of functions related to file io
void int_matrix_write_csv(std::string &fname, int *M, int m, int n)
void int_vec_write_csv(int *v, int len, std::string &fname, const char *label)
void int_matrix_read_csv(std::string &fname, int *&M, int &m, int &n, int verbose_level)
long int file_size(std::string &fname)
void lint_matrix_read_csv(std::string &fname, long int *&M, int &m, int &n, int verbose_level)
int number_of_vertices_in_colored_graph(std::string &fname, int verbose_level)
void read_solutions_from_file_size_is_known(std::string &fname, std::vector< std::vector< int > > &Solutions, int solution_size, int verbose_level)
data_structures::lint_vec * Lint_vec
data_structures::int_vec * Int_vec
a permutation group in a fixed action.
action * create_induced_action_on_sets(int nb_sets, int set_size, long int *sets, int verbose_level)
void all_point_orbits_from_generators(groups::schreier &Schreier, groups::strong_generators *SG, int verbose_level)
void extract_orbits(int orbit_length, int nb_orbits, int *orbits, long int *extracted_set, int verbose_level)
void create_graph_on_orbits_of_a_certain_length_override_orbits_classified(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(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, data_structures::set_of_sets *my_orbits_classified, int verbose_level)
void create_weighted_graph_on_orbits(graph_theory::colored_graph *&CG, std::string &fname, int *Orbit_lengths, int nb_orbit_lengths, int *&Type_idx, int f_has_user_data, long int *user_data, int user_data_size, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, data_structures::set_of_sets *my_orbits_classified, int verbose_level)
void print_orbits_based_on_filtered_orbits(std::ostream &ost, data_structures::set_of_sets *Filtered_orbits)
int get_orbit_type_index(int orbit_length)
int * Orbits_classified_length
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)
long int group_order_as_lint()
void print_with_given_action(std::ostream &ost, actions::action *A2)
command line description of picking long orbits of packings with assumed symmetry
std::string mixed_orbits_length_text
std::string list_of_cases_from_file_fname
int f_list_of_cases_from_file
complete a partial packing from a clique on the fixpoint graph using long orbits, utilizing clique se...
void create_graph_and_save_to_file(graph_theory::colored_graph *&CG, std::string &fname, int f_has_user_data, long int *user_data, int user_data_size, int verbose_level)
void process_single_case(std::vector< std::vector< int > > &Packings_classified, std::vector< std::vector< int > > &Packings, int verbose_level)
void save_packings_by_case(std::string &fname_packings, std::vector< std::vector< std::vector< int > > > &Packings_by_case, int verbose_level)
long int * fixpoint_clique
void filter_orbits(int verbose_level)
void create_fname_graph_on_remaining_long_orbits()
std::string fname_solutions
packing_long_orbits_description * Descr
data_structures::set_of_sets * Filtered_orbits
void create_graph_on_remaining_long_orbits(std::vector< std::vector< int > > &Packings_classified, std::vector< std::vector< int > > &Packings, int verbose_level)
int fixpoints_clique_case_number
void init(packing_was_fixpoints *PWF, packing_long_orbits_description *Descr, int verbose_level)
packing_was_fixpoints * PWF
groups::strong_generators * fixpoint_clique_stabilizer_gens
void create_graph_on_long_orbits(graph_theory::colored_graph *&CG, long int *user_data, int user_data_sz, int verbose_level)
void list_of_cases_from_file(int verbose_level)
long int * fixpoint_clique_orbit_numbers
void report_filtered_orbits(std::ostream &ost)
void init_fixpoint_clique_from_orbit_numbers(int verbose_level)
picking fixed points in the construction of packings in PG(3,q) with assumed symmetry
groups::strong_generators * get_stabilizer(int idx)
long int fixpoint_to_reduced_spread(int a, int verbose_level)
long int * clique_by_index(int idx)
groups::strong_generators * N_gens
geometry::spread_tables * Spread_tables_reduced
groups::orbits_on_something * reduced_spread_orbits_under_H
groups::strong_generators * H_gens
actions::action * A_on_reduced_spreads
int test_if_pair_of_sets_of_reduced_spreads_are_adjacent(long int *orbit1, int len1, long int *orbit2, int len2, int verbose_level)
int find_orbits_of_length_in_reduced_spread_table(int orbit_length)
packing_was_description * Descr
#define Lint_vec_copy(A, B, C)
#define Lint_matrix_print(A, B, C)
#define Int_vec_scan(A, B, C)
#define Int_vec_zero(A, B)
#define Lint_vec_print(A, B, C)
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects