next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
CharacteristicClasses :: probabilistic algorithm

probabilistic algorithm

The algorithms used for the computation of characteristic classes are probabilistic. Theoretically, they calculate the classes correctly for a general choice of certain polynomials. That is, there is an open dense Zariski set for which the algorithm yields the correct class, i.e., the correct class is calculated with probability 1. However, since the implementation works over a discrete probability space there is a very small, but non-zero, probability of not computing the correct class. Skeptical users should repeat calculations several times to increase the probability of computing the correct class.

We illustrate the probabilistic behaviour with an example where the chosen random seed leads to a wrong result in the first calculation.
i1 : setRandomSeed 121;
i2 : R = QQ[x,y,z,w]

o2 = R

o2 : PolynomialRing
i3 : I = minors(2,matrix{{x,y,z},{y,z,w}})

               2                        2
o3 = ideal (- y  + x*z, - y*z + x*w, - z  + y*w)

o3 : Ideal of R
i4 : chernClass (I,Algorithm=>ResidualSymbolic)

       2
o4 = 4H

     ZZ[H]
o4 : -----
        4
       H
i5 : chernClass (I,Algorithm=>ResidualSymbolic)

       3     2
o5 = 2H  + 3H

     ZZ[H]
o5 : -----
        4
       H
i6 : chernClass (I,Algorithm=>ResidualSymbolic)

       3     2
o6 = 2H  + 3H

     ZZ[H]
o6 : -----
        4
       H
i7 : chernClass(I,Algorithm=>ProjectiveDegree)

       3     2
o7 = 2H  + 3H

     ZZ[H]
o7 : -----
        4
       H