up previous next

2.2.24 Finite Point Sets: Buchberger-Moeller

CoCoA includes an implementation of the Buchberger-Moeller algorithm for efficient computations dealing with finite sets of points. These functions include:

* GBM, HGBM -- intersection of ideals for zero-dimensional schemes

* IdealAndSeparatorsOfPoints -- ideal and separators for affine points

* IdealAndSeparatorsOfProjectivePoints -- ideal and separators for points

* IdealOfPoints -- ideal of a set of affine points

* IdealOfProjectivePoints -- ideal of a set of projective points

* Interpolate -- interpolating polynomial

* SeparatorsOfPoints -- separators for affine points

* SeparatorsOfProjectivePoints -- separators for projective points

Details about these functions may be found individually in the online manual. Briefly, the functions above may be used to find the ideal of a set of points in affine or projective space along with a reduced Groebner basis and separators. Separators are polynomials that take the value 1 on one of the points and 0 on the remainder. The Buchberger-Moeller algorithm works *much* faster than the straightforward technique involving intersecting ideals for the individual points.

example

    
Use R ::= Q[t,x,y,z];
Pts := GenericPoints(20);  -- 20 random points in projective 3-space
X := IdealAndSeparatorsOfProjectivePoints(Pts);
Len(Gens(X.Ideal));  -- number of generators in the ideal
17
-------------------------------
Hilbert(R/X.Ideal);
H(0) = 1
H(1) = 4
H(2) = 10
H(t) = 20   for t >= 3
-------------------------------
F := X.Separators[3];
[Eval(F,P)| P In Pts];
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
-------------------------------
Res(R/X.Ideal);  -- the resolution of the ideal
0 --> R^10(-6) --> R^24(-5) --> R^15(-4) --> R
-------------------------------