Algoritmo di Berlekamp

algoritmo per la fattorizzazione di polinomi su un campo finito

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 applicazioni. 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].

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 campo 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:

  1. se   è una costante, allora   è privo di fattori ripetuti;
  2. se  , allora   è una potenza  -esima, dove   è la caratteristica di  ;
  3. 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.

  1. ^ 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.
  2. ^ 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
  Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica