„Inside CAS“ Teil I: Polynome faktorisieren Teil II: Automatisches Beweisen Heinz Klemenz, KZO...

Post on 06-Apr-2016

219 views 2 download

Transcript of „Inside CAS“ Teil I: Polynome faktorisieren Teil II: Automatisches Beweisen Heinz Klemenz, KZO...

„„Inside CAS“Inside CAS“Teil I: Polynome faktorisierenTeil I: Polynome faktorisieren

Teil II: Automatisches BeweisenTeil II: Automatisches Beweisen

Heinz Klemenz, KZO Wetzikon, 13.6.2005

„„Inside CAS“Inside CAS“Teil I: Polynome faktorisierenTeil 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 1Einleitung 1

Von Von „Hand“:„Hand“:

x4 x3 2 x3 2 x3 2 x4 1

Einleitung 2Einleitung 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 3Einleitung 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 findenLineare und quadratische Faktoren finden• Leopold Kronecker, 1823-1891:Leopold Kronecker, 1823-1891:

Ausarbeitung der Ideen von Newton und Ausarbeitung der Ideen von Newton und SchubertSchubert

NeuzeitNeuzeit• 1967 Elwin Berlekamp: Faktorisieren in Z1967 Elwin Berlekamp: Faktorisieren in Zpp[x][x]

„„Inside CAS“Inside CAS“Teil I: Polynome faktorisierenTeil I: Polynome faktorisieren

EinleitungEinleitungKronecker-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-Der Kronecker-Algorithmus 1Algorithmus 1

Leopold Kronecker 1823-1891Leopold Kronecker 1823-1891 Schüler von KummerSchüler von Kummer Student von Dirichlet Student von Dirichlet

und Jakob Steinerund Jakob Steiner Professor in Berlin Professor in Berlin

1883 mit 60 J. (!)1883 mit 60 J. (!) Streit mit Cantor und Streit mit Cantor und

WeierstrassWeierstrass Vorläufer des Brower-Vorläufer des Brower-

schen Intuitionismusschen Intuitionismus

Der Kronecker-Der Kronecker-Algorithmus 2Algorithmus 2

Wir betrachten ein Polynom Wir betrachten ein Polynom ff((xx) aus ) aus Z[Z[xx] vom Grad ] vom Grad nn..• 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-Der Kronecker-Algorithmus 3Algorithmus 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 ), sind auch die (ganzen) Zahlen die (ganzen) Zahlen gg((xxii) Teiler von ) Teiler von ff((xxii) ) für die ganzzahligen Stützstellen für die ganzzahligen Stützstellen xxii..

Der Kronecker-Der Kronecker-Algorithmus 4Algorithmus 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-Der Kronecker-Algorithmus 5Algorithmus 5

GleichungssystemGleichungssystem g g((xxii) = ) = xxii33+a+axxii

22+b+bxxii+c+cfü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.

abc

101

12

1 2 1 1 0 10 2 0

1,21,2

1,2,3,6

Der Kronecker-Der Kronecker-Algorithmus 6Algorithmus 6

Realisierung mit TI-Basic (ca. 12 Sekunden):Realisierung mit TI-Basic (ca. 12 Sekunden):

Der Kronecker-Der Kronecker-Algorithmus 7Algorithmus 7

Fazit: Der Kronecker-Algorithmus ist für Fazit: Der Kronecker-Algorithmus ist für die Computer-Praxis untauglich.die 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 Znicht ü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++22)()(xx44+1) +1)

„„Inside CAS“Inside CAS“Teil I: Polynome faktorisierenTeil 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-Der Berlekamp-Algorithmus 1Algorithmus 1

Elwyn Berlekamp Elwyn Berlekamp (geb. 1940) (geb. 1940)

Studium der Studium der ElektrotechnikElektrotechnik

Professor der Professor der Mathematik in Mathematik in BerkeleyBerkeley

1967: Berlekamp-1967: Berlekamp-AlgorithmusAlgorithmus

Der Berlekamp-Der Berlekamp-Algorithmus 2Algorithmus 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((xx),),ff‘(‘(xx))=1}))=1} Beispiel: Beispiel: ff((xx) = ) = xx77+2+2xx44++xx33+2+2 ist quadratfreies, ist quadratfreies,

normiertes, univariates Polynom über Znormiertes, univariates Polynom über Z

Der Berlekamp-Der Berlekamp-Algorithmus 3Algorithmus 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-MatrixBerlekamp-Matrix aufstellen... aufstellen...

Der Berlekamp-Der Berlekamp-Algorithmus 4Algorithmus 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-Der Berlekamp-Algorithmus 5Algorithmus 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-Der Berlekamp-Algorithmus 6Algorithmus 6

Im nächsten Schritt wird der Kern von B-Im nächsten Schritt wird der Kern von B-E mit dem sog. „Nullraumalgorithmus“ E 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-Der Berlekamp-Algorithmus 7Algorithmus 7

Die Dimension Die Dimension dd der Basis liefert dabei gerade der Basis liefert dabei gerade die Anzahl die Anzahl irreduziblerirreduzibler Faktoren. Faktoren.

Diese möglichen Faktoren Diese möglichen Faktoren ffii(x) erhalten wir (x) erhalten wir durch Berechnung der ggT(durch Berechnung der ggT(ff((xx), ), hhii((xx)-c) = )-c) = ggii((xx))

Sobald wird Sobald wird d d Faktoren gefunden haben, Faktoren gefunden haben, terminiert der Algorithmus.terminiert der Algorithmus.

gg11((xx) = ) = xx22+4+4xx+1+1, gg22((xx) = ) = xx3+2+2, , gg33((xx) = ) = x4+1, wobei aber wobei aber xx44+1=(+1=(xx22+4+4xx+1)(+1)(xx22+3+3xx+1) mod 7 +1) mod 7 noch zerlegt werden kannnoch zerlegt werden kann

Der Berlekamp-Der Berlekamp-Algorithmus 8Algorithmus 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 faktorisierenTeil 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[xx]] 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 Probedivisionenauch in Z[x] vorkommen und dann Probedivisionen

„„Inside CAS“Inside CAS“Teil I: Polynome faktorisierenTeil 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) prohabilistischMultivariate Polynome (Kronecker)Multivariate Polynome (Kronecker)

„„Inside CAS“Inside CAS“LiteraturLiteratur

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, 1996Computer Algebra, Springer, 1996 Geddes, Czapor, Labahn: Algorithms for Geddes, Czapor, Labahn: Algorithms for

Computer Algebra, Kluwer 1992Computer Algebra, Kluwer 1992

„„Inside CAS“Inside CAS“SchlussbemerkungenSchlussbemerkungen

Hinter dem Faktorisieren steckt Hinter dem Faktorisieren steckt interessante Mathematik.interessante Mathematik.

Algorithmisches Faktorisieren ist nicht Algorithmisches Faktorisieren ist nicht streng deterministisch.streng deterministisch.

Ein Algorithmus zum Faktorisieren Ein Algorithmus zum Faktorisieren braucht viel Rechenaufwand.braucht viel Rechenaufwand.