16namespace layer5_applications {
17namespace apps_geometry {
119 int f_v = (verbose_level >= 1);
123 cout <<
"search_blocking_set::init" << endl;
143 int f_v = (verbose_level >= 1);
151 cout <<
"search_blocking_set::find_partial_blocking_sets" << endl;
161 cout <<
"find_blocking_sets calling gen->init" << endl;
165 cout <<
"find_partial_blocking_sets !A->f_has_strong_generators" << endl;
184 gen->init_check_func(
185 callback_check_partial_blocking_set,
197 gen->print_function = print_set;
198 gen->print_function_data =
this;
202 int f_use_invariant_subset_if_available =
TRUE;
207 cout <<
"find_partial_blocking_sets: calling generator_main" << endl;
211 f_use_invariant_subset_if_available,
216 cout <<
"find_partial_blocking_sets: done with generator_main" << endl;
222 int f_v = (verbose_level >= 1);
227 cout <<
"search_blocking_set::test_level: testing all partial "
228 "blocking sets at level " << depth << endl;
233 cout <<
"search_blocking_set::test_level: we found " << nb_orbits
234 <<
" orbits on partial blocking sets "
235 "of size " << depth << endl;
238 for (h = 0; h < nb_orbits; h++) {
242 cout <<
"testing set " << h <<
" / " << nb_orbits <<
" : ";
253 cout <<
"found blocking set" << endl;
276 int f_v = (verbose_level >= 1);
280 cout <<
"search_blocking_set::test_blocking_set "
281 "checking set of points ";
289 for (h = 0; h < len; h++) {
305 cout <<
"the line type is:";
314 cout <<
"not OK, line " << j <<
" is disjoint" << endl;
321 cout <<
"not OK, line " << j
322 <<
" is completely contained" << endl;
327 for (h = 0; h < len; h++) {
338 cout <<
"not OK, point S[" << h <<
"]=" << i
339 <<
" is not on a 1-line" << endl;
349 int len,
long int *S,
int verbose_level)
352 int f_v = (verbose_level >= 1);
356 cout <<
"search_blocking_set::test_blocking_set_upper_bound_only "
365 for (h = 0; h < len; h++) {
384 cout <<
"the line type is:";
393 cout <<
"not OK, line " << j
394 <<
" is completely contained" << endl;
399 for (h = 0; h < len; h++) {
410 cout <<
"not OK, point S[" << h <<
"]=" << i
411 <<
" is not on a 1-line" << endl;
422 int level,
int f_all,
int verbose_level)
424 int f_v = (verbose_level >= 1);
425 int f, nb_orbits, h, u, i, a, b, j;
428 cout <<
"search_blocking_set::search_for_blocking_set: "
429 "input_no=" << input_no <<
" testing all partial "
430 "blocking sets at level " << level << endl;
431 cout <<
"f_all=" << f_all << endl;
457 cout <<
"search_blocking_set::search_for_blocking_set: "
458 "we found " << nb_orbits <<
" orbits on partial "
459 "blocking sets of size" << level << endl;
461 for (h = 0; h < nb_orbits; h++) {
465 cout <<
"input_no " << input_no <<
" level " << level
466 <<
" testing set " << h <<
" / " << nb_orbits <<
" : ";
490 for (u = 0; u < level; u++) {
503 level, 0, verbose_level - 4);
506 cout <<
"input_no " << input_no <<
" level " << level
507 <<
" testing set " << h <<
" / " << nb_orbits <<
" : ";
508 cout <<
" done" << endl;
519 cout <<
"search_blocking_set::search_for_blocking_set done, "
525 int input_no,
int starter_level,
int level,
528 int f_v = (verbose_level >= 1);
530 int t0_first, t0_len, t, line_idx, i, a, b;
533 cout <<
"search_blocking_set::recursive_search_for_blocking_set "
534 "input_no = " << input_no <<
" level = " << level
542 cout <<
"we backtrack since we reached the "
543 "desired size" << endl;
557 cout <<
"the current line type is:";
564 cout <<
"we backtrack since line " << j
565 <<
" is contained in the blocking set" << endl;
575 cout <<
"found blocking set of size "
576 << starter_level + level <<
" : ";
578 cout <<
" line type = ";
582 for (i = 0; i < level; i++) {
591 sol.resize(starter_level + level);
592 for (j = 0; j < starter_level + level; j++) {
608 cout <<
"there are " << t0_len <<
" 0-lines" << endl;
613 cout <<
"line_idx=" << line_idx << endl;
616 cout <<
"Line_intersections[line_idx].k != 0" << endl;
650 starter_level, level + 1, verbose_level)) {
684int callback_check_partial_blocking_set(
int len,
int *S,
685 void *data,
int verbose_level)
689 int f_v = (verbose_level >= 1);
692 cout <<
"check_partial_blocking_set: checking set of points ";
693 print_set(cout, len, S);
708 cout <<
"OK" << endl;
subset of size k of a set of size n
void delete_element(int elt)
void init(int n, int verbose_level)
void add_element(int elt)
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
void print(int f_backwards)
interface for various incidence geometries
interface to system functions
a permutation group in a fixed action.
groups::strong_generators * Strong_gens
int f_has_strong_generators
to control the behavior of the poset classification algorithm
the poset classification algorithm
void initialize_and_allocate_root_node(poset_classification_control *PC_control, poset_with_group_action *Poset, int depth, int verbose_level)
int main(int t0, int schreier_depth, int f_use_invariant_subset_if_available, int f_debug, int verbose_level)
int first_node_at_level(int i)
int nb_orbits_at_level(int level)
poset_orbit_node * get_node(int node_idx)
void store_set_to(poset_classification *gen, int i, long int *to)
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)
classification of blocking sets in projective planes
int recursive_search_for_blocking_set(int input_no, int starter_level, int level, int verbose_level)
void save_line_intersection_size(int level)
poset_classification::poset_classification * gen
void restore_line_intersection_size(int level)
int test_blocking_set_upper_bound_only(int len, long int *S, int verbose_level)
int test_level(int depth, int verbose_level)
void find_partial_blocking_sets(int depth, int verbose_level)
int test_blocking_set(int len, long int *S, int verbose_level)
void init(geometry::incidence_structure *Inc, actions::action *A, int verbose_level)
std::deque< std::vector< int > > solutions
int blocking_set_size_desired
data_structures::fancy_set * active_set
data_structures::fancy_set * Line_intersections
int * search_nb_candidates
void search_for_blocking_set(int input_no, int level, int f_all, int verbose_level)
poset_classification::poset_classification_control * Control
int f_blocking_set_size_desired
geometry::incidence_structure * Inc
poset_classification::poset_with_group_action * Poset
#define Lint_vec_print(A, B, C)
#define NEW_OBJECTS(type, n)
the orbiter library for the classification of combinatorial objects