Hausaufgaben

empfohlen: wenigstens 5,3,4,2 mit Papier und maxima.

  1. zur Ordnung auf Monomen:

    Variable und ihre Ordnung:

    newtype V = V Natural deriving Eq
    instance Ord V where compare (V i) (V j) = compare j i
    
    dann ist V0 > V1 > V2 > ....

    Monome und ihre Ordnung:

    type D = Natural
    newtype Mono v = Mono (M.Map v D) deriving Eq
    instance Ord v => Ord (Mono v) where
      compare (Mono f) (Mono g) =
        compare (M.toDescList f) (M.toDescList g)
    
    Überprüfen und begründen Sie, daß das eine korrekte Implementierung der lexikografischen Ordnung ist.

    Ist folgende Implementierung äquivalent?

        compare (M.toAscList g) (M.toAscList f)
    
  2. zur Ordnung auf Polynomen:

    für Polynome in Variablen X > Y > Z: geben Sie möglichst lange $\gg$-Ketten an, die bei X3 + Y2Z beginnen

  3. bestimmen Sie nach dem Buchberger-Algorithmus eine Gröbner-Basis B für I = 〈X2Y - 1, XY2 -1〉.
  4. Benutzen Sie dieses B (oder B', siehe unten), um zu entscheiden, ob X5IY2.
  5. Geben Sie Polynome c1, c2 mit X5 - Y2 = c1(X2Y - 1) + c2(XY2 - 1) an.

    Erweitern Sie den Buchberger-Algorithmus und das Reduktionsverfahren B, um diese Darstellung zu erhalten.

    (zum Vergleich: Euklid bestimmt gcd(a, b), erweiterter Euklid bestimmt c, d mit ac + bd = gcd(a, b).)

  6. Für eine Gröbner-Basis B definieren wir

    B' = {bB | ¬∃c : bB $\scriptstyle \setminus$ {b}c}

    (alle b, die nicht durch die jeweils anderen Basis-Elemente reduziert werden können)

    Bestimmen Sie B' für voriges Beispiel.

    Ergänzen Sie die Eigenbau-Implementierung.

    (Es gilt B'〉 = 〈B. Jedes solche B' heißt reduziert. Die reduzierte Gröbner-Basis eines Polynom-Ideals ist im wesentlichen eindeutig.)

  7. Arjen Cohen: Gröbner Bases, an Introduction (in: Some Tapas of Computer Algebra, Springer, 1999):
    it is very hard to provide a good explicit upper bound on [die Laufzeit des Buchberger-Algorithmus], bad examples are known.

    Finden Sie solche bad examples

    und messen Sie den Ressourcenverbrauch (maxima, fricas, Eigenbau)

    Erklärung: brute force mit unserer Implementierung und Leancheck-Generatoren für Monome und Polynome. Vorsicht: Generatoren sollen keine Exponenten oder Koeffizienten 0 erzeugen. Hinweis: Anzahl der Variablen fixieren, z.B. data V = X | Y. Deswegen ist der Code polymorph im Variablentyp v.