Algoritmo di Berlekamp
In matematica l'algoritmo di Berlekamp è un algoritmo per la fattorizzazione di polinomi su un campo finito ideato da Elwyn Berlekamp nel 1967. L'algoritmo consiste principalmente nella costruzione di una opportuna matrice contenente coefficienti ottenuti a partire da quelli del polinomio da fattorizzare e nel calcolo del massimo comun divisore tra polinomi. È stato il principale algoritmo per la fattorizzazione di polinomi fino alla realizzazione dell'algoritmo di Cantor-Zassenhaus nel 1981 da cui è stato ormai soppiantato in molte applicazione. Tuttavia il metodo è ancora implementato in molti sistemi di algebra computazionale, tra cui PARI/GP, infatti è di semplice realizzazione, molti passaggi possono essere parallelizzati in modo efficiente e impone poche ipotesi sul polinomio da fattorizzare[1].
Indice |
Descrizione dell'algoritmo [modifica]
Dato un polinomio
di grado
a coefficienti nel campo di Galois
e che sia privo di fattori ripetuti, si cerca un polinomio
che divida
. Ripetendo poi il procedimento per i fattori di
così ottenuti, è possibile ottenere la fattorizzazione di
in polinomi irriducibili (che è essenzialmente unica, poiché ogni anello di polinomi su un capo finito è un dominio a fattorizzazione unica).
I fattori di
appartengono sicuramente all'anello quoziente
; l'algoritmo si focalizza sulla ricerca dei polinomi
che soddisfano la congruenza
Tali polinomi formano una sottoalgebra di
(visto come spazio vettoriale di dimensione
su
), detta sottoalgebra di Berlekamp. L'interesse per questa sottoalgebra consiste nel fatto che ogni polinomio
soddisfa l'identità
che è una fattorizzazione di
. Va però osservato che non tutti i fattori della produttoria sono non banali (ovvero elementi invertibili o multipli di
), ma al variare di
e
qualcuno lo è sicuramente, a meno che
non sia irriducibile.
Per costruire gli elementi della sottoalgebra di Berlekamp è sufficiente costruirne una base; ciò è possibile poiché tale sottolagebra è il nucleo di una matrice
a coefficienti in
. Tale matrice, che indicheremo con
, è così costruita: l'elemento
nell'
-esima riga e
-colonna è il coefficiente del monomio di grado
del polinomio
[2] modulo
, ovvero:
Allora se ad ogni polinomio
si associa in modo biiettivo il vettore riga
, è relativamente semplice provare che il vettore
corrisponde al polinomio
modulo
. Ne segue che un polinomio
appartiene alla sottoalgebra di Berlekamp se e solo se
è un autovettore di
, ovvero soddisfa il sistema di
equazioni in
incognite
(dove
è la matrice identità di ordine
), che può essere risolto in modo efficiente, ad esempio applicando il metodo di eliminazione di Gauss, per ottenere i polinomi cercati.
Una volta individuato un polinomio con la proprietà richiesta è sufficiente calcolare il massimo comun divisore tra
e
al variare di
in
(per esempio con l'algoritmo di Euclide): ogni polinomio ottenuto è un fattore di
, eventualmente banale.
Eliminazione dei fattori ripetuti [modifica]
Affinché la procedura descritta funzioni, è essenziale l'ipotesi che
non abbia fattori ripetuti. Tuttavia questo non limita l'applicazione dell'algoritmo poiché è possibile individuare in modo molto semplice la presenza di tali fattori usando le proprietà delle derivate formali. Sia infatti
un polinomio e
la sua derivata formale e si calcoli
. Si hanno allora tre casi:
- se
è una costante, allora
è privo di fattori ripetuti; - se
, allora
è una potenza
-esima, dove
è la caratteristica di
; - se
ha grado maggiore di 1, allora è un fattore di
.
Fattorizzazione nell'anello degli interi [modifica]
L'algoritmo di Berlekamp può essere utilizzato anche nella fattorizzazione di polinomi a coefficienti interi. Tale problema è molto più difficile di quello della fattorizzazione in
, essendo l'insieme dei coefficienti infinito. Non è infatti neppure ovvio che questo problema sia decidibile. Infatti mentre in
si potrebbe procedere alla fattorizzazione di un polinomio di grado
dividendolo per tutti i
polinomi di grado minore o uguale a
(una tecnica del tutto impraticabile, ma corretta almeno dal punto di vista teorico), in
è necessario applicare un ragionamento più complesso come il metodo di Kronecker. Tuttavia è possibile provare che esistono un primo
e un naturale
tali per cui fattorizzando
sui campi
,
, ...,
, si può ottenere una fattorizzazione di
anche su
. Sotto questa forma il metodo prende il nome di algoritmo di Berlekamp-Zassenhaus e richiede l'uso di osservazioni teoriche più sofisticate, tra cui il lemma di Hensel.
Note [modifica]
- ^ Nell'algoritmo di Cantor-Zassenhaus è infatti richiesto che il polinomio dato abbia una fattorizzazione in fattori di grado uguale. Tuttavia questa condizione non limita il campo di applicabilità dell'algoritmo, poiché esistono metodi efficienti per determinare una fattorizzare di un polinomio in fattori (non necessariamente irriducibili) che abbiano la proprietà richiesta.
- ^ Bisogna fare attenzione al fatto che le righe e le colonne di
sono numerate da
a
, mentre i coefficienti dei polinomi da
a
.
Bibliografia [modifica]
- Elwyn Berlekamp (1967). Factoring Polynomials Over Finite Fields. Bell Systems Technical Journal 46: 1853–1859.
- Donald Knuth, 4.6.2 Factorization of Polynomials in Seminumerical Algorithms, Reading, Addison-Wesley, 1997, Vol. 2. ISBN 0201896842
|
|



, allora
a
a
.