Algorytm Berlekampa

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Algorytm Berlekampaalgorytm faktoryzacji wielomianów o współczynnikach w ciele skończonym. Został opisany przez Elwyna Berlekampa w 1967.

Opis algorytmu

Wejście: wielomian f stopnia m o współczynnikach w ciele q-elementowym,
Wyjście: nietrywialny dzielnik wielomianu lub informacja, że jest on potęgą wielomianu nierozkładalnego.
1. Utwórz macierz Q wielkości m×m, której i-ta kolumna przedstawia zqimodf.
2. Znajdź bazę jądra przekształcenia liniowego QI; można tego dokonać używając eliminacji Gaussa.
3. Dla dowolnego nieskalarnego wielomianu g (jeśli nie istnieje, to wielomian jest potęgą wielomianu nierozkładalnego) reprezentowanego przez wektor z bazy, dla każdego elementu sGF(q), znajdź największy wspólny dzielnik wielomianów f i gs (dla pewnego s będzie to poszukiwany nietrywialny dzielnik); może być on znaleziony algorytmem Euklidesa.

Złożoność i poprawność

Algorytm ma złożoność obliczeniową O(m2(m+q)(log(q))2).

Jego poprawność opiera się na następujących faktach:

  • g(z)qg(z)=sGF(q)(g(z)s),
  • dla st wielomiany gs i gtwzględnie pierwsze,
  • f(z)=sGF(q)gcd(f(z),g(z)s).

Bibliografia

  • Berlekamp, Elwyn R., Factoring Polynomials Over Finite Fields, 1967.