Berlekamp-Algorithmus

Dieser Artikel behandelt den Algorithmus zur Faktorisierung von Polynomen über einem endlichen Körper. Den Algorithmus zur Suche des kürzesten linear rückgekoppelten Schieberegisters findet man unter Berlekamp-Massey-Algorithmus.

In der Computeralgebra, einem Teilgebiet der Mathematik, ist der Berlekamp-Algorithmus eine Methode zur Faktorisierung von Polynomen über einem endlichen Körper, die 1967 von Elwyn Berlekamp entwickelt wurde. Er ist in den meisten Computeralgebrasystemen implementiert und war der führende Faktorisierungsalgorithmus bis zur Entwicklung des Cantor-Zassenhaus-Algorithmus, einer probabilistischen Variante des Berlekamp-Algorithmus aus dem Jahre 1981.

Hintergrund

Gesucht ist eine Faktorisierung von P ( x ) F q [ x ] {\displaystyle P(x)\in \mathbb {F} _{q}[x]} mit deg P ( x ) = n {\displaystyle \deg P(x)=n} in irreduzible Faktoren p 1 ( x ) p r ( x ) = P ( x ) {\displaystyle p_{1}(x)\cdots p_{r}(x)=P(x)} wobei die Größe r {\displaystyle r} unbekannt ist. Insbesondere kann auch r = 1 {\displaystyle r=1} gelten, nämlich wenn P ( x ) {\displaystyle P(x)} irreduzibel ist. Dabei kann man ohne Beschränkung der Allgemeinheit annehmen, dass P ( x ) {\displaystyle P(x)} quadratfrei ist, weil quadratfreie Polynome P ( x ) {\displaystyle P(x)} die Eigenschaft ggT ( P ( x ) , P ( x ) ) = 1 {\displaystyle \operatorname {ggT} (P(x),P'(x))=1} erfüllen und bei nicht quadratfreien Polynomen auf diese Weise bereits ein echter Teiler gefunden wird. ( P ( x ) {\displaystyle P'(x)} bezeichnet hier die formale Ableitung nach x {\displaystyle x} und ggT {\displaystyle \operatorname {ggT} } den größten gemeinsamen Teiler.)

Um die p i {\displaystyle p_{i}} zu bestimmen, bedient man sich eines leichter zu faktorisierenden Polynoms G ( x ) := a F q ( b ( x ) a ) {\displaystyle \textstyle G(x):=\prod _{a\in \mathbb {F} _{q}}{\bigl (}b(x)-a{\bigr )}} , das von P ( x ) {\displaystyle P(x)} geteilt wird, denn dann gilt

P ( x ) = p 1 ( x ) p r ( x ) = a F q ggT ( P ( x ) , b ( x ) a ) . {\displaystyle P(x)=p_{1}(x)\cdots p_{r}(x)=\prod _{a\in \mathbb {F} _{q}}\operatorname {ggT} (P(x),b(x)-a).}

Da F q {\displaystyle \mathbb {F} _{q}} ein endlicher Körper ist, kann man in der Identität X q X = a F q ( X a ) {\displaystyle \textstyle X^{q}-X=\prod _{a\in \mathbb {F} _{q}}(X-a)} das X {\displaystyle X} durch b ( x ) {\displaystyle b(x)} ersetzen und erhält G ( x ) = a F q ( b ( x ) a ) = b ( x ) q b ( x ) {\displaystyle \textstyle G(x)=\prod _{a\in \mathbb {F} _{q}}{\bigl (}b(x)-a{\bigr )}=b(x)^{q}-b(x)} .

Damit G ( x ) {\displaystyle G(x)} tatsächlich von P ( x ) {\displaystyle P(x)} geteilt wird, sucht man ein b ( x ) {\displaystyle b(x)} , welches die Kongruenz b ( x ) q b ( x ) mod P ( x ) {\displaystyle b(x)^{q}\equiv b(x)\mod P(x)} erfüllt.

Man kann nun beweisen, dass alle Eigenvektoren b = ( b 0 , , b n 1 ) T {\displaystyle {\vec {b}}=(b_{0},\dots ,b_{n-1})^{\operatorname {T} }} einer bestimmten n × n {\displaystyle n\times n} Matrix Q = [ q k , l ] {\displaystyle {\mathcal {Q}}=[q_{k,l}]} zum Eigenwert 1 jeweils solch ein b ( x ) := i b i x i {\displaystyle b(x):=\sum _{i}b_{i}x^{i}} liefern, wobei die q k , l {\displaystyle q_{k,l}} gegeben sind durch die Kongruenzen:

x i q q n 1 , i x n 1 + + q 1 , i x + q 0 , i ( mod P ( x ) )  mit  i = 0 , , n 1 {\displaystyle x^{iq}\equiv q_{n-1,i}x^{n-1}+\cdots +q_{1,i}x+q_{0,i}{\pmod {P(x)}}\quad {\text{ mit }}i=0,\dots ,n-1} .

Denn dann gilt gerade die Kongruenz:

b ( x ) q = ( l b l x l ) q = F q l b l q x l q = F q l b l x l q mod P ( x ) l b l j q j , l x j = j ( l q j , l b l ) x j = E i g e n v e k t o r j b j x j = b ( x ) {\displaystyle b(x)^{q}={{\bigl (}\sum _{l}b_{l}x^{l}{\bigr )}}^{q}{\stackrel {\mathbb {F} _{q}}{{}={}}}\sum _{l}b_{l}^{q}x^{lq}{\stackrel {\mathbb {F} _{q}}{{}={}}}\sum _{l}b_{l}x^{lq}{\underset {\operatorname {mod} P(x)}{{}\equiv {}}}\sum _{l}b_{l}\sum _{j}q_{j,l}x^{j}=\sum _{j}{\bigl (}\sum _{l}q_{j,l}b_{l}{\bigr )}x^{j}{\stackrel {\,\mathrm {Eigenvektor} \,}{{}={}}}\sum _{j}b_{j}x^{j}=b(x)} .

Man bestimmt also alle Eigenvektoren b ( j ) {\displaystyle b^{(j)}} von Q {\displaystyle {\mathcal {Q}}} und erhält dann die p i ( x ) {\displaystyle p_{i}(x)} , indem man für alle a F q {\displaystyle a\in \mathbb {F} _{q}} und für alle Eigenvektoren b ( j ) {\displaystyle b^{(j)}} den ggT ( P ( x ) , b ( j ) ( x ) a ) {\displaystyle \operatorname {ggT} (P(x),b^{(j)}(x)-a)} berechnet. Dabei kann man zum einen den trivialen Eigenvektor ( 0 , , 0 ) {\displaystyle (0,\dots ,0)} auslassen und zum anderen die Berechnungen beenden, wenn man r = rang ( Q I ) {\displaystyle r=\operatorname {rang} ({\mathcal {Q}}-{\mathcal {I}})} verschiedene Faktoren gefunden hat.

Algorithmus

Der Algorithmus kann also wie folgt zusammengefasst werden:

  • Man berechnet Q {\displaystyle {\mathcal {Q}}} , indem man für i = 0 , , n 1 {\displaystyle i=0,\ldots ,n-1} jeweils x i q mod P ( x ) {\displaystyle x^{iq}\mod P(x)} reduziert.
  • Man bestimmt eine Basis b ( j ) {\displaystyle b^{(j)}} des Eigenraums von Q {\displaystyle {\mathcal {Q}}} zum Eigenwert 1.
  • Solange noch nicht alle r = rang ( Q I ) {\displaystyle r=\operatorname {rang} ({\mathcal {Q}}-{\mathcal {I}})} Faktoren von P ( x ) {\displaystyle P(x)} bestimmt sind, berechne für alle b ( j ) ( 0 , , 0 ) {\displaystyle b^{(j)}\neq (0,\dots ,0)} und für alle a F q {\displaystyle a\in \mathbb {F} _{q}}
ggT ( P ( x ) , b ( j ) ( x ) a ) {\displaystyle \operatorname {ggT} (P(x),b^{(j)}(x)-a)} .

Anwendung

Eine wichtige Anwendung des Berlekamp-Algorithmus ist die Berechnung des diskreten Logarithmus über einem endlichen Körper F p n {\displaystyle \mathbb {F} _{p^{n}}} mit Primzahl p {\displaystyle p} und n 2 {\displaystyle n\geq 2} , was eine große Bedeutung in der Public Key Cryptography hat. In einem endlichen Körper ist die schnellste Methode zur Berechnung des diskreten Logarithmus der Index-Calculus-Algorithmus, bei dem Körperelemente faktorisiert werden. Da F p n {\displaystyle \mathbb {F} _{p^{n}}} isomorph ist zu einem Polynomring über F p {\displaystyle \mathbb {F} _{p}} , faktorisiert nach einem irreduziblen Polynom vom Grad n {\displaystyle n} , entspricht die Faktorisierung der Körperelemente in F p n {\displaystyle \mathbb {F} _{p^{n}}} der Faktorisierung von Polynomen in einem Polynomring über F p {\displaystyle \mathbb {F} _{p}} , faktorisiert nach einem irreduziblen Polynom vom Grad n {\displaystyle n} . Diese kann dann mit dem Berlekamp-Algorithmus durchgeführt werden.

Siehe auch

  • Faktorisierung von Polynomen

Literatur

  • Atilla Pethö: Algebraische Algorithmen. Hrsg.: Michael Pohst. Vieweg, 1999, ISBN 978-3-528-06598-0, S. 183. 
  • Michael Kaplan: Computeralgebra. Springer, 2005, ISBN 3-540-21379-1, S. 239. 
  • Elwyn R. Berlekamp: Factoring Polynomials Over Finite Fields. In: Bell System Technical Journal, Band 46, 1967, S. 1853–1859 bzw. in: Elwyn R. Berlekamp: Algebraic Coding Theory. Mc-Graw Hill, 1968.