„ „ Inside CAS“ Inside CAS“
Teil I: Polynome faktorisieren Teil I: Polynome faktorisieren Teil II: Automatisches Beweisen Teil II: Automatisches Beweisen
Heinz Klemenz, KZO Wetzikon, 13.6.2005
„ „ Inside CAS“ Inside CAS“
Teil I: Polynome faktorisieren Teil I: Polynome faktorisieren
EinleitungEinleitung
Kronecker-Algorithmus im Ring Z[x]Kronecker-Algorithmus im Ring Z[x]
Berlekamp-Algorithmus in ZBerlekamp-Algorithmus in Zpp[x][x]
„„Lifting“ nach Z[x]Lifting“ nach Z[x]
Cantor und Zassenhaus (1980) prohabilistischCantor und Zassenhaus (1980) prohabilistisch
Multivariate Polynome (Kronecker)Multivariate Polynome (Kronecker)
Einleitung 1 Einleitung 1
Von „Hand“:
Von „Hand“: x4
x3 2
x3 2
x3 2
x4 1Einleitung 2 Einleitung 2
Weshalb sollte man Polynome faktorisieren Weshalb sollte man Polynome faktorisieren können?
können?
BeispieleBeispiele
• Terme vereinfachen (Kürzen!)Terme vereinfachen (Kürzen!)
• Polynomiale Gleichungen exakt lösenPolynomiale Gleichungen exakt lösen
• CodierungstheorieCodierungstheorie
• KryptographieKryptographie
• Symbolische IntegrationSymbolische Integration
• Gröbner-Basen vereinfachen (autom. Beweisen)Gröbner-Basen vereinfachen (autom. Beweisen)
Einleitung 3 Einleitung 3
Wie kann ein Polynom Wie kann ein Polynom algorithmischalgorithmisch faktorisiert werden?
faktorisiert werden?
Erste VersucheErste Versuche
• Isaac Newton, 1707: Isaac Newton, 1707:
„Arithmetica universalis“
„Arithmetica universalis“
• Friedrich von Schubert, 1793: Friedrich von Schubert, 1793:
Lineare und quadratische Faktoren finden Lineare und quadratische Faktoren finden
• Leopold Kronecker, 1823-1891:Leopold Kronecker, 1823-1891:
Ausarbeitung der Ideen von Newton und Schubert Ausarbeitung der Ideen von Newton und Schubert
NeuzeitNeuzeit
• 1967 Elwin Berlekamp: Faktorisieren in Z1967 Elwin Berlekamp: Faktorisieren in Zpp[x][x]
„ „ Inside CAS“ Inside CAS“
Teil I: Polynome faktorisieren Teil I: Polynome faktorisieren
EinleitungEinleitung
Kronecker-Algorithmus im Ring Z[x]Kronecker-Algorithmus im Ring Z[x]
Berlekamp-Algorithmus in ZBerlekamp-Algorithmus in Zpp[x][x]
„„Lifting“ nach Z[x]Lifting“ nach Z[x]
Cantor und Zassenhaus (1980) prohabilistischCantor und Zassenhaus (1980) prohabilistisch
Multivariate Polynome (Kronecker)Multivariate Polynome (Kronecker)
Der Kronecker-Algorithmus 1 Der Kronecker-Algorithmus 1
Leopold Kronecker 1823-1891 Leopold Kronecker 1823-1891
Schüler von KummerSchüler von Kummer
Student von Dirichlet Student von Dirichlet und Jakob Steiner
und Jakob Steiner
Professor in Berlin 1883 Professor in Berlin 1883 mit 60 J. (!)
mit 60 J. (!)
Streit mit Cantor und Streit mit Cantor und Weierstrass
Weierstrass
Vorläufer des Brower-Vorläufer des Brower- schen Intuitionismus schen Intuitionismus
Der Kronecker-Algorithmus 2 Der Kronecker-Algorithmus 2
Wir betrachten ein Polynom Wir betrachten ein Polynom f f ( ( x x ) aus ) aus Z[ Z[ x x ] vom Grad ] vom Grad n n . .
• Wir suchen Wir suchen gg((xx) und ) und hh((xx), so dass gilt:), so dass gilt:
ff((xx) = ) = gg((xx)·)·hh((xx), wobei der Grad von g(x) ), wobei der Grad von g(x) höchstens
höchstens mm=[=[nn/2] beträgt./2] beträgt.
• Beispiel: Beispiel: ff((xx) = ) = xx77+2+2xx44++xx33+2 = +2 = gg((xx)·)·hh((xx) ) mit mit gg((xx) höchstens vom Grad 3...) höchstens vom Grad 3...
Der Kronecker-Algorithmus 3 Der Kronecker-Algorithmus 3
Beobachtung: Der TI-89 schafft i. a. nur Beobachtung: Der TI-89 schafft i. a. nur quadratische Faktoren (wie Newton).
quadratische Faktoren (wie Newton).
Wie finden wir kubische Faktoren nach Wie finden wir kubische Faktoren nach Kronecker?
Kronecker?
Idee: Da Idee: Da gg((xx) Teiler von ) Teiler von ff((xx), sind auch die ), sind auch die (ganzen) Zahlen
(ganzen) Zahlen gg((xxii) Teiler von ) Teiler von ff((xxii) für die ) für die ganzzahligen Stützstellen
ganzzahligen Stützstellen xxii..
Der Kronecker-Algorithmus 4 Der Kronecker-Algorithmus 4
Beispiel: Beispiel: ff((xx) = ) = xx77+2+2xx44++xx33+2 +2
Ansatz:Ansatz: gg((xx) = ) = xx33+a+axx22+b+bxx+c +c
xx-Werte:-Werte: -1-1 00 11
ff((xxii)) 22 22 66
g(g(xxii)) ±1,±2±1,±2±1,±2±1,±2±1,±2±1,±2
±3,±6
±3,±6
Damit sind 4·4·8 = 128 bzw. 64 Fälle möglich Damit sind 4·4·8 = 128 bzw. 64 Fälle möglich (je zwei bis auf das Vorzeichen gleich)
(je zwei bis auf das Vorzeichen gleich)
Der Kronecker-Algorithmus 5 Der Kronecker-Algorithmus 5
GleichungssystemGleichungssystem g g((xxii) = ) = xxii33+a+axxii22+b+bxxii+c+c für die Stützstellen
für die Stützstellen xxii lösen. lösen.
liefert die Koeffizienten a, b und c. liefert die Koeffizienten a, b und c.
Schauen, ob dann Schauen, ob dann gg((xx) Teiler von ) Teiler von ff((xx) ist.) ist.
a b c
1 0 1
1 2
1 2 1
1 0 1
0 2 0
1, 2
1, 2
1,2,3,6
Der Kronecker-Algorithmus 6 Der Kronecker-Algorithmus 6
Realisierung mit TI-Basic (ca. 12 Sekunden):Realisierung mit TI-Basic (ca. 12 Sekunden):
Der Kronecker-Algorithmus 7 Der Kronecker-Algorithmus 7
Fazit: Der Kronecker-Algorithmus ist für die Fazit: Der Kronecker-Algorithmus ist für die Computer-Praxis untauglich.
Computer-Praxis untauglich.
Schuld sind die vielen möglichen Teiler.Schuld sind die vielen möglichen Teiler.
Eine Verbesserung ergibt sich, wenn man Eine Verbesserung ergibt sich, wenn man nicht über Z, sondern über Z
nicht über Z, sondern über Zpp ( (pp prim) prim) faktorisiert, muss nachher aber „liften“.
faktorisiert, muss nachher aber „liften“.
ff22((xx) = ) = xx77++xx3 3 = = xx33((xx44+1) +1) ( (xx33+2+2)()(xx44+1) +1)
„ „ Inside CAS“ Inside CAS“
Teil I: Polynome faktorisieren Teil I: Polynome faktorisieren
EinleitungEinleitung
Kronecker-Algorithmus im Ring Z[x]Kronecker-Algorithmus im Ring Z[x]
Berlekamp-Algorithmus in ZBerlekamp-Algorithmus in Zpp[x][x]
„„Lifting“ nach Z[x]Lifting“ nach Z[x]
Cantor und Zassenhaus (1980) prohabilistischCantor und Zassenhaus (1980) prohabilistisch
Multivariate Polynome (Kronecker)Multivariate Polynome (Kronecker)
Der Berlekamp-Algorithmus 1 Der Berlekamp-Algorithmus 1
Elwyn Berlekamp Elwyn Berlekamp (geb. 1940)
(geb. 1940)
Studium der Studium der Elektrotechnik Elektrotechnik
Professor der Professor der Mathematik in Mathematik in
Berkeley Berkeley
1967: Berlekamp-1967: Berlekamp- Algorithmus
Algorithmus
Der Berlekamp-Algorithmus 2 Der Berlekamp-Algorithmus 2
Voraussetzungen für den Algorithmus:Voraussetzungen für den Algorithmus:
Koeffizienten der Polynome werden Koeffizienten der Polynome werden modulomodulo einer Primzahl gerechnet.
einer Primzahl gerechnet.
Polynome sind Polynome sind normiertnormiert, d.h. der Koeffizient , d.h. der Koeffizient der höchsten Potenz ist 1.
der höchsten Potenz ist 1.
Polynome sind Polynome sind quadratfreiquadratfrei, d.h. keine Fakto-, d.h. keine Fakto- ren kommen mehrfach vor. {ggT(
ren kommen mehrfach vor. {ggT(ff((x),x),ff‘(‘(xx))=1}))=1}
Beispiel: Beispiel: ff((xx) = x) = x77+2x+2x44++xx33+2+2 ist quadratfreies, ist quadratfreies, normiertes, univariates Polynom über Z
normiertes, univariates Polynom über Z
Der Berlekamp-Algorithmus 3 Der Berlekamp-Algorithmus 3
Grundidee des Berlekamp-Algorithmus:Grundidee des Berlekamp-Algorithmus:
Um Teilerpolynome
Um Teilerpolynome ffii((xx) von ) von ff((xx) zu ) zu finden, bestimmen wir Polynome
finden, bestimmen wir Polynome gg((xx), so ), so dass ggT(
dass ggT(ff((xx), ), gg((xx))= ))= ffii((xx) gilt.) gilt.
Aber: Wie findet man die Polynome Aber: Wie findet man die Polynome gg((xx)?)?
Ohne Herleitung: Man muss zuerst die Ohne Herleitung: Man muss zuerst die
Berlekamp-Matrix
Berlekamp-Matrix aufstellen... aufstellen...
Der Berlekamp-Algorithmus 4 Der Berlekamp-Algorithmus 4
... und die Berlekamp-Matrix sieht ... und die Berlekamp-Matrix sieht
folgendermassen aus (TI89: in ca.10 s) folgendermassen aus (TI89: in ca.10 s)
Beispiel: Beispiel: ff77((xx) = ) = xx77+2+2xx44++xx33+2 in Z+2 in Z77[x][x]
Der Berlekamp-Algorithmus 5 Der Berlekamp-Algorithmus 5
Die Berlekamp-Matrix Die Berlekamp-Matrix BB ist so definiert: ist so definiert:
x0 mod f7(x)
x7 mod f7(x) x14 mod f7(x) x21 mod f7(x) x28 mod f7(x) x35 mod f7(x) x42 mod f7(x)
Der Berlekamp-Algorithmus 6 Der Berlekamp-Algorithmus 6
Im nächsten Schritt wird der Kern von B-E Im nächsten Schritt wird der Kern von B-E mit dem sog. „Nullraumalgorithmus“
mit dem sog. „Nullraumalgorithmus“
bestimmt. (z.B. mit Maple) bestimmt. (z.B. mit Maple)
Mit den Komponenten der Basisvektoren Mit den Komponenten der Basisvektoren werden Polynome
werden Polynome hhii((xx) gebildet:) gebildet:
hh11((xx) = ) = xx44 + 6 + 6
hh22((xx) = ) = xx55 + + xx33 + 6 + 6xx hh33((xx) = ) = xx66 +3 +3xx33 + 2 + 2
Der Berlekamp-Algorithmus 7 Der Berlekamp-Algorithmus 7
Die Dimension Die Dimension dd der Basis liefert dabei gerade die der Basis liefert dabei gerade die Anzahl
Anzahl irreduziblerirreduzibler Faktoren. Faktoren.
Diese möglichen Faktoren Diese möglichen Faktoren ffii(x) erhalten wir durch (x) erhalten wir durch Berechnung der ggT(
Berechnung der ggT(ff((xx), ), hhii((xx)-c) = g)-c) = gii(x(x))
Sobald wird Sobald wird d d Faktoren gefunden haben, Faktoren gefunden haben, terminiert der Algorithmus.
terminiert der Algorithmus.
gg11((xx) = ) = xx22+4x+4x+1+1, gg22((xx) = ) = xx3+2+2, g, g33((xx) = x) = 4+1, wobei aber
wobei aber xx44+1=(+1=(xx22+4+4xx+1)(+1)(xx22+3+3xx+1) mod 7 noch +1) mod 7 noch zerlegt werden kann
zerlegt werden kann
Der Berlekamp-Algorithmus 8 Der Berlekamp-Algorithmus 8
Die Faktorisierung über ZDie Faktorisierung über Z77 lautet: lautet:
ff77((xx) = () = (xx3+2)+2)(x(x22+4x+1)(x+4x+1)(x22+3x+1) +3x+1)
Weitere Beispiele:Weitere Beispiele:
ff55((xx) = () = (xx2+2)+2)(x(x22+2+2xx+4)(x+4)(x22+3)(x+3) +3)(x+3) ff1313((xx) = () = (xx3+2)+2)(x(x22+8)(x+8)(x22+5)+5)
ff2929((xx) = () = (xx22+17)(+17)(xx22+12)(+12)(xx22+3+3xx+9)(+9)(xx+26)+26) ff991991((xx) = () = (xx3+2)+2)((xx22+571+571xx+1)(+1)(xx22+420+420xx+1)+1)
„ „ Inside CAS“ Inside CAS“
Teil I: Polynome faktorisieren Teil I: Polynome faktorisieren
EinleitungEinleitung
Kronecker-Algorithmus im Ring Z[x]Kronecker-Algorithmus im Ring Z[x]
Berlekamp-Algorithmus in ZBerlekamp-Algorithmus in Zpp[x][x]
„„Lifting“ nach Z[x]Lifting“ nach Z[x]
Cantor und Zassenhaus (1980) prohabilistischCantor und Zassenhaus (1980) prohabilistisch
Multivariate Polynome (Kronecker)Multivariate Polynome (Kronecker)
„ „ Lifting“ nach Z[ Lifting“ nach Z[ x x ] ]
Wie erhalten wir aus Faktorisierungen in ZWie erhalten wir aus Faktorisierungen in Zpp[[xx] die ] die Faktorsierung in Z[
Faktorsierung in Z[xx]?]?
1. Idee1. Idee: Modulo eine : Modulo eine grossegrosse Primzahl Primzahl pp faktorisieren faktorisieren
2. Idee2. Idee: Modulo eine : Modulo eine kleinekleine Primzahl Primzahl qq faktorisieren faktorisieren und dann Faktorisierung modulo
und dann Faktorisierung modulo pp==qqtt daraus daraus ermitteln (Hensel-Lifting)
ermitteln (Hensel-Lifting)
In beiden Fällen: Schranke (Mignotte) für den Modul In beiden Fällen: Schranke (Mignotte) für den Modul pp finden, so dass Faktoren in Z finden, so dass Faktoren in Zpp[[xx] erscheinen, die ] erscheinen, die
auch in Z[x] vorkommen und dann Probedivisionen auch in Z[x] vorkommen und dann Probedivisionen
„ „ Inside CAS“ Inside CAS“
Teil I: Polynome faktorisieren Teil I: Polynome faktorisieren
EinleitungEinleitung
Kronecker-Algorithmus im Ring Z[x]Kronecker-Algorithmus im Ring Z[x]
Berlekamp-Algorithmus in ZBerlekamp-Algorithmus in Zpp[x][x]
„„Lifting“ nach Z[x]Lifting“ nach Z[x]
Cantor und Zassenhaus (1980) prohabilistischCantor und Zassenhaus (1980) prohabilistisch
Multivariate Polynome (Kronecker)Multivariate Polynome (Kronecker)
„ „ Inside CAS“ Inside CAS“
Literatur Literatur
M. Kaplan: Computeralgebra, Springer, 2005M. Kaplan: Computeralgebra, Springer, 2005
D. E. Knuth: Arithmetik, Springer, 2001D. E. Knuth: Arithmetik, Springer, 2001
F. Winkler: Polynomial Algorithms in F. Winkler: Polynomial Algorithms in Computer Algebra, Springer, 1996
Computer Algebra, Springer, 1996
Geddes, Czapor, Labahn: Algorithms for Geddes, Czapor, Labahn: Algorithms for Computer Algebra, Kluwer 1992
Computer Algebra, Kluwer 1992
„ „ Inside CAS“ Inside CAS“
Schlussbemerkungen Schlussbemerkungen
Hinter dem Faktorisieren steckt interessante Hinter dem Faktorisieren steckt interessante Mathematik.
Mathematik.
Algorithmisches Faktorisieren ist nicht streng Algorithmisches Faktorisieren ist nicht streng deterministisch.
deterministisch.
Ein Algorithmus zum Faktorisieren braucht Ein Algorithmus zum Faktorisieren braucht viel Rechenaufwand.
viel Rechenaufwand.