14namespace layer5_applications {
59 long int *starter,
int starter_size,
60 int starter_case_number,
int starter_number_of_cases,
61 long int *candidates,
int nb_candidates,
66 int f_v = (verbose_level >= 1);
72 cout <<
"spread_lifting::init" << endl;
86 cout <<
"spread_lifting::init "
87 "before compute_points_covered_by_starter" << endl;
91 cout <<
"spread_lifting::init "
92 "after compute_points_covered_by_starter" << endl;
96 cout <<
"spread_lifting::init "
97 "before prepare_free_points" << endl;
101 cout <<
"spread_lifting::init "
102 "after prepare_free_points" << endl;
107 cout <<
"spread_lifting::init "
109 cout <<
"spread_lifting::init "
126 cout <<
"spread_lifting::init after lexorder test "
127 "nb_candidates before: " << nb_cols_before
128 <<
" reduced to " <<
nb_cols <<
" (deleted "
129 << nb_cols_before -
nb_cols <<
")" << endl;
134 cout <<
"spread_lifting::init after lexorder test" << endl;
135 cout <<
"spread_lifting::init nb_cols=" <<
nb_cols << endl;
139 cout <<
"spread_lifting::init done" << endl;
146 int f_v = (verbose_level >= 1);
147 int f_vv = (verbose_level >= 2);
148 int f_v3 = (verbose_level >= 3);
153 cout <<
"spread_lifting::compute_points_"
154 "covered_by_starter" << endl;
160 long int *point_list;
170 cout <<
"spread_lifting::compute_points_"
171 "covered_by_starter nb_points != S->block_size" << endl;
180 cout <<
"starter element " << i <<
" / "
184 cout <<
"points_covered_by_starter: " << endl;
196 cout <<
"spread_lifting::compute_points_"
197 "covered_by_starter covered points computed:" << endl;
198 cout <<
"spread_lifting::compute_points_"
199 "covered_by_starter nb_points_covered_by_starter="
207 cout <<
"spread_lifting::compute_points_"
208 "covered_by_starter done" << endl;
215 int f_v = (verbose_level >= 1);
216 int f_vv = (verbose_level >= 2);
217 int f_v3 = (verbose_level >= 3);
222 cout <<
"spread_lifting::prepare_free_points" << endl;
227 cout <<
"spread_lifting::prepare_free_points "
245 cout <<
"spread_lifting::prepare_free_points "
246 "j != nb_free_points" << endl;
250 cout <<
"spread_lifting::prepare_free_points "
251 "computed free points" << endl;
255 cout <<
"spread_lifting::prepare_free_points "
263 cout <<
"spread_lifting::prepare_free_points done" << endl;
269 int f_v = (verbose_level >= 1);
270 int f_vv = (verbose_level >= 2);
271 int f_v5 = (verbose_level >= 5);
277 cout <<
"spread_lifting::create_system" << endl;
285 for (i = 0; i < nb_rows; i++) {
292 cout <<
"spread_lifting::create_system "
293 "nb_rows = " << nb_rows << endl;
294 cout <<
"spread_lifting::create_system "
295 "nb_cols = " <<
nb_cols << endl;
297 for (j = 0; j <
nb_cols; j++) {
299 long int *point_list;
305 cout <<
"candidate " << j <<
" / "
306 <<
nb_cols <<
" is " << a << endl;
310 cout <<
"Which is " << endl;
317 cout <<
"spread_lifting::create_system "
318 "nb_points != S->block_size" << endl;
322 cout <<
"List of points: ";
334 cout <<
"spread_lifting::create_system "
335 "candidate block contains point that "
336 "is already covered" << endl;
340 cout <<
"spread_lifting::create_system "
341 "i < 0 || i >= nb_free_points" << endl;
350 cout <<
"spread_lifting::create_system "
351 "coefficient matrix" << endl;
352 for (i = 0; i < nb_rows; i++) {
353 for (j = 0; j <
nb_cols; j++) {
354 cout << Dio->
Aij(i, j);
360 cout <<
"spread_lifting::create_system done" << endl;
366 int *&col_color,
int &nb_colors,
369 int f_v = (verbose_level >= 1);
375 cout <<
"spread_lifting::find_coloring" << endl;
388 for (j = 1; j <
S->
k; j++) {
397 cout <<
"found color " << nb_colors
398 <<
" : " << i <<
" = " << a <<
" = ";
402 colors[nb_colors++] = i;
405 cout <<
"spread_lifting::find_coloring "
406 "we found " << nb_colors <<
" colors" << endl;
409 cout <<
"spread_lifting::find_coloring "
410 "nb_colors != nb_needed" << endl;
415 for (j = 0; j <
nb_cols; j++) {
416 for (c = 0; c < nb_colors; c++) {
418 if (Dio->
Aij(i, j)) {
423 if (c == nb_colors) {
424 cout <<
"spread_lifting::find_coloring "
425 "c == nb_colors" << endl;
432 cout <<
"spread_lifting::find_coloring done" << endl;
a collection of functions related to sorted vectors
int lint_vec_search(long int *v, int len, long int a, int &idx, int verbose_level)
void lint_vec_heapsort(long int *v, int len)
void PG_element_normalize_from_front(int *v, int stride, int len)
void all_PG_elements_in_subspace(int *genma, int k, int n, long int *&point_list, int &nb_points, int verbose_level)
void unrank_lint(long int rk, int verbose_level)
a class to represent arbitrary precision integers
diophantine systems of equations (i.e., linear systems over the integers)
void fill_coefficient_matrix_with(int a)
diophant_equation_type * type
field_theory::finite_field * GFq
a strong generating set for a permutation group with respect to a fixed action
data_structures_groups::vector_ge * gens
exact cover problems arising with the lifting of combinatorial objects
void lexorder_test(long int *live_blocks2, int &nb_live_blocks2, data_structures_groups::vector_ge *stab_gens, int verbose_level)
to classify spreads of PG(k-1,q) in PG(n-1,q) where k divides n
groups::matrix_group * Mtx
geometry::grassmann * Grass
void unrank_point(int *v, long int a)
int nb_points_covered_by_starter
void prepare_free_points(int verbose_level)
groups::strong_generators * Strong_gens
long int * points_covered_by_starter
long int * free_point_list
int starter_number_of_cases
solvers::diophant * create_system(int verbose_level)
void compute_points_covered_by_starter(int verbose_level)
void find_coloring(solvers::diophant *Dio, int *&col_color, int &nb_colors, int verbose_level)
void init(spread_classify *S, exact_cover *E, long int *starter, int starter_size, int starter_case_number, int starter_number_of_cases, long int *candidates, int nb_candidates, groups::strong_generators *Strong_gens, int f_lex, int verbose_level)
#define Lint_vec_copy(A, B, C)
#define Lint_vec_print(A, B, C)
#define Int_matrix_print(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects