Content deleted Content added
Citation bot (talk | contribs) Alter: pages. Add: s2cid. | Use this bot. Report bugs. | Suggested by Headbomb | Linked from Wikipedia:WikiProject_Academic_Journals/Journals_cited_by_Wikipedia/Sandbox | #UCB_webform_linked 70/530 |
Jerryobject (talk | contribs) Small WP:COPYEDITs WP:EoS: WP:TERSE, clarify, MOS:NOTETHATs cut. 1st MOS:PERSON we cuts+fixes. Cut needless whitespace characters (carriage returns, spaces) to standardize, aid work via small screens. WP:LINKs add. |
||
(13 intermediate revisions by 10 users not shown) | |||
Line 1:
{{Short description|Algorithm for computing Gröbner bases}}
In the theory of [[multivariate polynomial]]s, '''Buchberger's algorithm''' is a method for transforming a given set of polynomials into a [[Gröbner basis]], which is another set of polynomials that have the same common zeros and are more convenient for extracting information on these common zeros. It was introduced by [[Bruno Buchberger]] simultaneously with the definition of Gröbner bases.
The [[Euclidean algorithm]] for computing the polynomial [[
For other Gröbner basis algorithms, see {{slink|Gröbner basis#Algorithms and implementations}}.
Line 12:
:'''Output''' A [[Gröbner basis]] ''G'' for {{mvar|I}}
:# ''G'' := ''F''
:# For every ''f<sub>i</sub>'', ''f<sub>j</sub>'' in ''G'', denote by ''g<sub>i</sub>'' the leading term of ''f<sub>i</sub>'' with respect to the given [[monomial ordering]], and by ''a<sub>ij</sub>'' the [[least common multiple]] of ''g<sub>i</sub>'' and ''g<sub>j</sub>''.
:# Choose two polynomials in ''G'' and let {{math|1=''S''<sub>''ij''</sub> = {{sfrac|''a''<sub>''ij''</sub> | ''g''<sub>{{var|i}}</sub>}} ''f''<sub>{{var|i}}</sub> − {{sfrac|''a''<sub>''ij''</sub> | ''g''<sub>''j''</sub>}} ''f''<sub>''j''</sub>}} ''(
:# Reduce ''S''<sub>''ij''</sub>, with the [[multivariate division algorithm]] relative to the set ''G'' until the result is not further reducible. If the result is non-zero, add it to ''G''.
:# Repeat steps
:# Output ''G''
The polynomial ''S''<sub>''ij''</sub> is commonly referred to as the ''S''-polynomial, where ''S'' refers to ''subtraction'' (Buchberger) or ''[[Syzygy (mathematics)|
There are
The algorithm terminates because it is consistently increasing the size of the monomial ideal generated by the leading terms of our set ''F'', and [[Dickson's lemma]] (or the [[Hilbert basis theorem]]) guarantees that any such ascending chain must eventually become constant.
Line 30:
<math>d^{2^{n+o(1)}}</math>.
On the other hand, there are examples<ref>{{cite journal|doi=10.1016/0001-8708(82)90048-2|doi-access=free|title=The complexity of the word problems for commutative semigroups and polynomial ideals|journal=[[Advances in Mathematics]]|volume=46|issue=3|pages=
:<math>d^{2^{\Omega(n)}}</math>,
and the above upper bound of complexity is optimal. Nevertheless, such examples are extremely rare.
Since its discovery, many variants of Buchberger's have been introduced to improve its efficiency. [[Faugère's F4 and F5 algorithms]] are presently the most efficient algorithms for computing Gröbner bases, and allow to compute routinely Gröbner bases consisting of several hundreds of polynomials, having each several hundreds of terms and coefficients of several hundreds of digits.
== Implementations ==
At least one implementation of Buchberger’s algorithm has been [[Formal proof|proved]] correct within the [[proof assistant]] Coq (renamed [[Rocq]]).<ref>{{cite journal |last1=Théry |first1=Laurent |title=A Machine-Checked Implementation of Buchberger's Algorithm |journal=Journal of Automated Reasoning |date=2001 |volume=26 |issue=2 |pages=107–137 |doi=10.1023/A:1026518331905}}</ref>
In the [[SymPy]] library for [[Python (programming language)|Python]], the (improved) Buchberger algorithm is implemented as <code>sympy.polys.polytools.groebner()</code>.<ref>{{cite web |title=Polynomials Manipulation Module Reference - SymPy 1.14.0 documentation |url=https://docs.sympy.org/latest/modules/polys/reference.html#sympy.polys.polytools.groebner |website=docs.sympy.org}}</ref>
== See also ==
* [[Knuth–Bendix completion algorithm]]
* [[Quine–McCluskey algorithm]]
== References ==
{{
== Further reading ==
* {{cite journal
▲ |date=August 1976
|
* David Cox, John Little, and Donald O'Shea (1997). ''Ideals, Varieties, and Algorithms: An Introduction to Computational Algebraic Geometry and Commutative Algebra'', Springer.
* Vladimir P. Gerdt, Yuri A. Blinkov (1998). ''Involutive Bases of Polynomial Ideals'', Mathematics and Computers in Simulation, 45:519ff
Line 65 ⟶ 70:
* {{springer|title=Buchberger algorithm|id=p/b110980}}
* [http://www.scholarpedia.org/article/Buchberger%27s_algorithm Buchberger's algorithm] on Scholarpedia
* {{MathWorld |
[[Category:Computer algebra]]
|