Orbiter 2022
Combinatorial Objects
tactical_decomposition.cpp
Go to the documentation of this file.
1/*
2 * tactical_decomposition.cpp
3 *
4 * Created on: Aug 18, 2019
5 * Author: betten
6 */
7
8
9
10
11#include "orbiter.h"
12
13using namespace std;
14
15
16namespace orbiter {
17namespace layer5_applications {
18namespace apps_combinatorics {
19
21{
22 set_size = 0;
23 nb_blocks = 0;
24 Inc = NULL;
26 A = NULL;
27 A_on_points = NULL;
28 A_on_lines = NULL;
29 gens = NULL;
30 Stack = NULL;
31 Sch = NULL;
32 Sch_points = NULL;
33 Sch_lines = NULL;
34
35
36 //null();
37}
38
40{
41 if (Stack) {
43 }
44 if (Sch) {
46 }
47 if (Sch_points) {
49 }
50 if (Sch_lines) {
52 }
53 //freeself();
54}
55
56void tactical_decomposition::init(int nb_rows, int nb_cols,
58 int f_combined_action,
60 actions::action *A_on_points,
61 actions::action *A_on_lines,
63 int verbose_level)
64{
65 int f_v = (verbose_level >= 1);
66
67 if (f_v) {
68 cout << "tactical_decomposition::init" << endl;
69 }
70 set_size = nb_rows;
71 nb_blocks = nb_cols;
73
75 Stack->allocate(set_size + nb_blocks, 0 /* verbose_level */);
77 Stack->split_cell(0 /* verbose_level */);
79
81 if (f_v) {
82 cout << "tactical_decomposition::init setting up schreier" << endl;
83 }
85 Sch->init(A, verbose_level - 2);
87 Sch->init_generators(*gens->gens, verbose_level - 2);
88 if (f_v) {
89 cout << "tactical_decomposition::init "
90 "before compute_all_point_orbits" << endl;
91 }
92 Sch->compute_all_point_orbits(verbose_level - 3);
93
94 if (f_v) {
95 cout << "tactical_decomposition::init found "
96 << Sch->nb_orbits << " orbits on points "
97 "and lines" << endl;
98 }
101 0 /* offset */,
102 verbose_level - 2);
103 }
104 else {
106 Sch_points->init(A_on_points, verbose_level - 2);
108 Sch_points->init_generators(*gens->gens, verbose_level - 2);
109 Sch_points->compute_all_point_orbits(0 /*verbose_level - 2*/);
110
111 if (f_v) {
112 cout << "tactical_decomposition::init found "
114 << " orbits on points" << endl;
115 }
117 Sch_lines->init(A_on_lines, verbose_level - 2);
119 Sch_lines->init_generators(*gens->gens, verbose_level - 2);
120 Sch_lines->compute_all_point_orbits(0 /*verbose_level - 2*/);
121
122 if (f_v) {
123 cout << "tactical_decomposition::init found "
125 << " orbits on lines" << endl;
126 }
130 0 /* offset */,
131 verbose_level - 2);
135 Inc->nb_points() /* offset */,
136 verbose_level - 2);
137 }
138
139
140
141
142#if 0
143 incidence_structure_compute_TDA_general(*Stack,
144 Inc,
146 OnAndre /* Aut */,
147 NULL /* A_on_points */,
148 NULL /*A_on_lines*/,
149 strong_gens->gens /* Aut->strong_generators*/,
150 f_write_tda_files,
151 f_include_group_order,
152 f_pic,
153 f_include_tda_scheme,
154 verbose_level - 4);
155
156
157
158
159 if (f_vv) {
160 cout << "translation_plane_via_andre_model::init "
161 "Row-scheme:" << endl;
163 cout, FALSE /* f_enter_math */,
164 TRUE /* f_print_subscripts */, *Stack);
165 cout << "translation_plane_via_andre_model::init "
166 "Col-scheme:" << endl;
168 cout, FALSE /* f_enter_math */,
169 TRUE /* f_print_subscripts */, *Stack);
170 }
171#endif
172
173 if (f_v) {
174 cout << "tactical_decomposition::init done" << endl;
175 }
176
177}
178
179void tactical_decomposition::report(int f_enter_math, ostream &ost)
180{
181#if 0
183 ost, f_enter_math, *Stack);
184#else
185 cout << "translation_plane_via_andre_model::report "
186 "Row-scheme:" << endl;
187 ost << "Tactical decomposition schemes:\\\\" << endl;
188 ost << "$$" << endl;
190 ost, FALSE /* f_enter_math */,
191 TRUE /* f_print_subscripts */, *Stack);
192 cout << "translation_plane_via_andre_model::report "
193 "Col-scheme:" << endl;
194 ost << "\\qquad" << endl;
196 ost, FALSE /* f_enter_math */,
197 TRUE /* f_print_subscripts */, *Stack);
198 ost << "$$" << endl;
199#endif
200}
201
202
203
204}}}
data structure for set partitions following Jeffrey Leon
void split_by_orbit_partition(int nb_orbits, int *orbit_first, int *orbit_len, int *orbit, int offset, int verbose_level)
interface for various incidence geometries
Definition: geometry.h:1099
void get_and_print_row_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, data_structures::partitionstack &PStack)
void get_and_print_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, data_structures::partitionstack &PStack)
void get_and_print_column_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, data_structures::partitionstack &PStack)
a permutation group in a fixed action.
Definition: actions.h:99
Schreier trees for orbits of groups on points.
Definition: groups.h:839
void compute_all_point_orbits(int verbose_level)
Definition: schreier.cpp:988
void init_generators(data_structures_groups::vector_ge &generators, int verbose_level)
Definition: schreier.cpp:373
void init(actions::action *A, int verbose_level)
Definition: schreier.cpp:308
a strong generating set for a permutation group with respect to a fixed action
Definition: groups.h:1703
data_structures_groups::vector_ge * gens
Definition: groups.h:1708
void init(int nb_rows, int nb_cols, geometry::incidence_structure *Inc, int f_combined_action, actions::action *Aut, actions::action *A_on_points, actions::action *A_on_lines, groups::strong_generators *gens, int verbose_level)
#define NEW_OBJECT(type)
Definition: foundations.h:638
#define FREE_OBJECT(p)
Definition: foundations.h:651
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
the orbiter library for the classification of combinatorial objects