Orbiter 2022
Combinatorial Objects
create_graph_description.cpp
Go to the documentation of this file.
1/*
2 * create_graph_description.cpp
3 *
4 * Created on: Nov 28, 2019
5 * Author: betten
6 */
7
8
9
10
11#include "orbiter.h"
12
13using namespace std;
14
15namespace orbiter {
16namespace layer5_applications {
17namespace apps_graph_theory {
18
19
21{
22 f_load = FALSE;
23 //fname = NULL;
24
26 //std::string Cayley_graph_group;
27 //std::string Cayley_graph_gens;
28
31
33 n = 0;
34 //edge_list_text;
35
37 //edges_as_pairs_text;
38
39 f_cycle = FALSE;
40 cycle_n = 0;
41
43 Hamming_n = 0;
44 Hamming_q = 0;
45
47 Johnson_n = 0;
48 Johnson_k = 0;
49 Johnson_s = 0;
50
51 f_Paley = FALSE;
52 Paley_q = 0;
53
55 Sarnak_p = 0;
56 Sarnak_q = 0;
57
59 Schlaefli_q = 0;
60
62
64 Winnie_Li_q = 0;
66
68 Grassmann_n = 0;
69 Grassmann_k = 0;
70 Grassmann_q = 0;
71 Grassmann_r = 0;
72
77
79
82
84 //std::string subset_label;
85 //std::string subset_label_tex;
86 //std::string subset_text;
87
89 //std::string disjoint_sets_graph_fname;
90
92 //std::string orbital_graph_group;
94
96 //std::string collinearity_graph_matrix;
97
99 //std::string chain_graph_partition_1;
100 //std::string chain_graph_partition_2;
101
102}
103
104
106 int argc, std::string *argv,
107 int verbose_level)
108{
109 int f_v = (verbose_level >= 1);
110 int i;
112
113 if (f_v) {
114 cout << "create_graph_description::read_arguments" << endl;
115 }
116 for (i = 0; i < argc; i++) {
117
119
120 if (ST.stringcmp(argv[i], "-load") == 0) {
121 f_load = TRUE;
122 fname.assign(argv[++i]);
123 if (f_v) {
124 cout << "-load " << fname << endl;
125 }
126 }
127
128 else if (ST.stringcmp(argv[i], "-Cayley_graph") == 0) {
130 Cayley_graph_group.assign(argv[++i]);
131 Cayley_graph_gens.assign(argv[++i]);
132 if (f_v) {
133 cout << "-Cayley_graph " << Cayley_graph_group << " " << Cayley_graph_gens << endl;
134 }
135 }
136
137 else if (ST.stringcmp(argv[i], "-load_csv_no_border") == 0) {
139 fname.assign(argv[++i]);
140 if (f_v) {
141 cout << "-load_csv_no_border " << fname << endl;
142 }
143 }
144
145 else if (ST.stringcmp(argv[i], "-load_dimacs") == 0) {
147 fname.assign(argv[++i]);
148 if (f_v) {
149 cout << "-load_dimacs " << fname << endl;
150 }
151 }
152
153 else if (ST.stringcmp(argv[i], "-edge_list") == 0) {
155 n = ST.strtoi(argv[++i]);
156 edge_list_text.assign(argv[++i]);
157 if (f_v) {
158 cout << "-edge_list " << n << " " << edge_list_text << endl;
159 }
160 }
161 else if (ST.stringcmp(argv[i], "-edges_as_pairs") == 0) {
163 n = ST.strtoi(argv[++i]);
164 edges_as_pairs_text.assign(argv[++i]);
165 if (f_v) {
166 cout << "-edges_as_pairs " << n << " " << edges_as_pairs_text << endl;
167 }
168 }
169 else if (ST.stringcmp(argv[i], "-cycle") == 0) {
170 f_cycle = TRUE;
171 cycle_n = ST.strtoi(argv[++i]);
172 if (f_v) {
173 cout << "-cycle " << cycle_n << endl;
174 }
175 }
176 else if (ST.stringcmp(argv[i], "-Hamming") == 0) {
177 f_Hamming = TRUE;
178 Hamming_n = ST.strtoi(argv[++i]);
179 Hamming_q = ST.strtoi(argv[++i]);
180 if (f_v) {
181 cout << "-Hamming " << Hamming_n << " " << Hamming_q << endl;
182 }
183 }
184 else if (ST.stringcmp(argv[i], "-Johnson") == 0) {
185 f_Johnson = TRUE;
186 Johnson_n = ST.strtoi(argv[++i]);
187 Johnson_k = ST.strtoi(argv[++i]);
188 Johnson_s = ST.strtoi(argv[++i]);
189 if (f_v) {
190 cout << "-Johnson " << Johnson_n << " " << Johnson_k << " " << Johnson_s << endl;
191 }
192 }
193 else if (ST.stringcmp(argv[i], "-Paley") == 0) {
194 f_Paley = TRUE;
195 Paley_q = ST.strtoi(argv[++i]);
196 if (f_v) {
197 cout << "-Paley " << Paley_q << endl;
198 }
199 }
200 else if (ST.stringcmp(argv[i], "-Sarnak") == 0) {
201 f_Sarnak = TRUE;
202 Sarnak_p = ST.strtoi(argv[++i]);
203 Sarnak_q = ST.strtoi(argv[++i]);
204 if (f_v) {
205 cout << "-Sarnak " << Sarnak_p << " " << Sarnak_q << endl;
206 }
207 }
208 else if (ST.stringcmp(argv[i], "-Schlaefli") == 0) {
210 Schlaefli_q = ST.strtoi(argv[++i]);
211 if (f_v) {
212 cout << "-Schlaefli " << Schlaefli_q << endl;
213 }
214 }
215 else if (ST.stringcmp(argv[i], "-Shrikhande") == 0) {
217 if (f_v) {
218 cout << "-Shrikhande " << endl;
219 }
220 }
221 else if (ST.stringcmp(argv[i], "-Winnie_Li") == 0) {
223 Winnie_Li_q = ST.strtoi(argv[++i]);
224 Winnie_Li_index = ST.strtoi(argv[++i]);
225 if (f_v) {
226 cout << "-Winnie_Li " << Winnie_Li_q << " " << Winnie_Li_index << endl;
227 }
228 }
229 else if (ST.stringcmp(argv[i], "-Grassmann") == 0) {
231 Grassmann_n = ST.strtoi(argv[++i]);
232 Grassmann_k = ST.strtoi(argv[++i]);
233 Grassmann_q = ST.strtoi(argv[++i]);
234 Grassmann_r = ST.strtoi(argv[++i]);
235 if (f_v) {
236 cout << "-Grassmann " << Grassmann_n << " " << Grassmann_k
237 << " " << Grassmann_q << " " << Grassmann_r << endl;
238 }
239 }
240 else if (ST.stringcmp(argv[i], "-coll_orthogonal") == 0) {
242 coll_orthogonal_epsilon = ST.strtoi(argv[++i]);
243 coll_orthogonal_d = ST.strtoi(argv[++i]);
244 coll_orthogonal_q = ST.strtoi(argv[++i]);
245 if (f_v) {
246 cout << "-coll_orthogonal " << coll_orthogonal_epsilon
247 << " " << coll_orthogonal_d
248 << " " << coll_orthogonal_q << endl;
249 }
250 }
251 else if (ST.stringcmp(argv[i], "-trihedral_pair_disjointness_graph") == 0) {
253 if (f_v) {
254 cout << "-trihedral_pair_disjointness_graph " << endl;
255 }
256 }
257 else if (ST.stringcmp(argv[i], "-non_attacking_queens_graph") == 0) {
259 non_attacking_queens_graph_n = ST.strtoi(argv[++i]);
260 if (f_v) {
261 cout << "-non_attacking_queens_graph " << non_attacking_queens_graph_n << endl;
262 }
263 }
264 else if (ST.stringcmp(argv[i], "-subset") == 0) {
265 f_subset = TRUE;
266 subset_label.assign(argv[++i]);
267 subset_label_tex.assign(argv[++i]);
268 subset_text.assign(argv[++i]);
269 if (f_v) {
270 cout << "-subset " << subset_label << " " << subset_label_tex << " " << subset_text << endl;
271 }
272 }
273 else if (ST.stringcmp(argv[i], "-disjoint_sets_graph") == 0) {
275 disjoint_sets_graph_fname.assign(argv[++i]);
276 if (f_v) {
277 cout << "-disjoint_sets_graph " << disjoint_sets_graph_fname << endl;
278 }
279 }
280 else if (ST.stringcmp(argv[i], "-orbital_graph") == 0) {
282 orbital_graph_group.assign(argv[++i]);
283 orbital_graph_orbit_idx = ST.strtoi(argv[++i]);
284 if (f_v) {
285 cout << "-orbital_graph " << orbital_graph_group << " " << orbital_graph_orbit_idx << endl;
286 }
287 }
288 else if (ST.stringcmp(argv[i], "-collinearity_graph") == 0) {
290 collinearity_graph_matrix.assign(argv[++i]);
291 if (f_v) {
292 cout << "-collinearity_graph "
293 << collinearity_graph_matrix << endl;
294 }
295 }
296 else if (ST.stringcmp(argv[i], "-chain_graph") == 0) {
298 chain_graph_partition_1.assign(argv[++i]);
299 chain_graph_partition_2.assign(argv[++i]);
300 if (f_v) {
301 cout << "-chain_graph "
304 << endl;
305 }
306 }
307
308 else if (M.check_and_parse_argument(
309 argc, i, argv,
310 verbose_level)) {
311 Modifications.push_back(M);
312 }
313
314 if (ST.stringcmp(argv[i], "-end") == 0) {
315 if (f_v) {
316 cout << "-end" << endl;
317 }
318 break;
319 }
320 else {
321 cout << "create_graph_description::read_arguments "
322 "unrecognized option " << argv[i] << endl;
323 }
324 } // next i
325 if (f_v) {
326 cout << "create_graph_description::read_arguments done" << endl;
327 }
328 return i + 1;
329}
330
332{
333 if (f_load) {
334 cout << "-load " << fname << endl;
335 }
336 if (f_Cayley_graph) {
337 cout << "-Cayley_graph " << Cayley_graph_group << " " << Cayley_graph_gens << endl;
338 }
340 cout << "-load_csv_no_border " << fname << endl;
341 }
342 if (f_load_dimacs) {
343 cout << "-load_dimacs " << fname << endl;
344 }
345 if (f_edge_list) {
346 cout << "-edge_list " << n << " " << edge_list_text << endl;
347 }
348 if (f_edges_as_pairs) {
349 cout << "-edges_as_pairs " << n << " " << edges_as_pairs_text << endl;
350 }
351 if (f_cycle) {
352 cout << "-cycle " << cycle_n << endl;
353 }
354 if (f_Hamming) {
355 cout << "-Hamming " << Hamming_n << " " << Hamming_q << endl;
356 }
357 if (f_Johnson) {
358 cout << "-Johnson " << Johnson_n << " " << Johnson_k << " " << Johnson_s << endl;
359 }
360 if (f_Paley) {
361 cout << "-Paley " << Paley_q << endl;
362 }
363 if (f_Sarnak) {
364 cout << "-Sarnak " << Sarnak_p << " " << Sarnak_q << endl;
365 }
366 if (f_Schlaefli) {
367 cout << "-Schlaefli " << Schlaefli_q << endl;
368 }
369 if (f_Shrikhande) {
370 cout << "-Shrikhande " << endl;
371 }
372 if (f_Winnie_Li) {
373 cout << "-Winnie_Li " << Winnie_Li_q << " " << Winnie_Li_index << endl;
374 }
375 if (f_Grassmann) {
376 cout << "-Grassmann " << Grassmann_n << " " << Grassmann_k
377 << " " << Grassmann_q << " " << Grassmann_r << endl;
378 }
379 if (f_coll_orthogonal) {
380 cout << "-coll_orthogonal " << coll_orthogonal_epsilon
381 << " " << coll_orthogonal_d
382 << " " << coll_orthogonal_q << endl;
383 }
385 cout << "-trihedral_pair_disjointness_graph " << endl;
386 }
388 cout << "-non_attacking_queens_graph " << non_attacking_queens_graph_n << endl;
389 }
390 if (f_subset) {
391 cout << "-subset " << subset_label << " " << subset_label_tex << " " << subset_text << endl;
392 }
393 if (f_orbital_graph) {
394 cout << "-orbital_graph " << orbital_graph_group << " " << orbital_graph_orbit_idx << endl;
395 }
397 cout << "-collinearity_graph "
398 << collinearity_graph_matrix << endl;
399 }
400 if (f_chain_graph) {
401 cout << "-chain_graph "
404 << endl;
405 }
406
407 int i;
408
409 for (i = 0; i < Modifications.size(); i++) {
410 Modifications[i].print();
411 }
412}
413
414
415
416
417}}}
418
functions related to strings and character arrays
std::vector< graph_modification_description > Modifications
Definition: graph_theory.h:193
int check_and_parse_argument(int argc, int &i, std::string *argv, int verbose_level)
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
the orbiter library for the classification of combinatorial objects