Gröbner basis project
Codebase for research into Gröbner basis computation
algorithm_buchberger_explorer.hpp
1 #ifndef __ALGORITHM_BUCHBERGER_EXPLORER_HPP_
2 #define __ALGORITHM_BUCHBERGER_EXPLORER_HPP_
3 
4 /*****************************************************************************\
5 * This file is part of DynGB. *
6 * *
7 * DynGB is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 2 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * Foobar is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with DynGB. If not, see <http://www.gnu.org/licenses/>. *
19 \*****************************************************************************/
20 
21 #include <list>
22 #include <vector>
23 #include <iostream>
24 #include <iterator>
25 
26 using std::list;
27 using std::vector;
28 using std::cout; using std::endl;
29 
30 #include "system_constants.hpp"
31 
32 #include "fields.hpp"
33 #include "monomial.hpp"
34 #include "polynomial.hpp"
35 #include "critical_pair.hpp"
36 #include "normal_strategy.hpp"
37 #include "polynomial_array.hpp"
38 #include "polynomial_geobucket.hpp"
39 #include "polynomial_linked_list.hpp"
40 #include "polynomial_double_buffered.hpp"
41 
42 #include "sugar_strategy.hpp"
43 #include "weighted_sugar_strategy.hpp"
44 
45 #include "algorithm_buchberger_basic.hpp"
46 
56 list<Constant_Polynomial *> buchberger_explorer(
57  const vector<Abstract_Polynomial *> &F,
58  SPolyCreationFlags method = SPolyCreationFlags::GEOBUCKETS,
59  StrategyFlags strategy = StrategyFlags::NORMAL_STRATEGY,
60  WT_TYPE * strategy_weights = nullptr,
61  const int comm_id = 0,
62  const int comm_size = 1
63 );
64 
65 #endif
list< Constant_Polynomial * > buchberger_explorer(const vector< Abstract_Polynomial *> &F, SPolyCreationFlags method=SPolyCreationFlags::GEOBUCKETS, StrategyFlags strategy=StrategyFlags::NORMAL_STRATEGY, WT_TYPE *strategy_weights=nullptr, const int comm_id=0, const int comm_size=1)
Alternate implementation of Buchberger’s algorithm, for parallelization.
StrategyFlags
flag indicating which strategy to use for computation
Definition: strategies.hpp:34
SPolyCreationFlags
flag indicating which structure to use for an s-polynomial