Convoluzione rapida su piccoli campi finiti


17

Quali sono i metodi più noti per la convoluzione ciclica della lunghezza su un piccolo campo, cioè quando ? Sono particolarmente interessato ai campi di dimensioni costanti, o anche . Dichiarazioni e riferimenti generali sull'efficienza asintotica sono molto apprezzati.n|F|nF=F2

Sfondo: Sia un campo e . Pensiamo ai vettori come coordinate indicizzate da .Fn>0uFnZn

La convoluzione (ciclica) della lunghezza sopra è la trasformazione che prende e produce , definita da con indice aritmetico su Z n .nFu,vFnuvFn

(uv)i:=jZnvjuij,
Zn

Per eseguire la convoluzione ciclica su campi di grandi dimensioni, un metodo popolare è utilizzare il teorema di convoluzione per ridurre il nostro problema eseguendo trasformazioni discrete di Fourier (DFT) e usando un algoritmo FFT.

Per i piccoli campi finiti, il DFT è indefinito perché non c'è primitiva radice -esimo di unità. Si può aggirare questo problema incorporando il problema in un campo finito più ampio, ma non è chiaro che questo sia il modo migliore per procedere. Anche se prendiamo questa strada, sarebbe bello sapere se qualcuno ha già elaborato i dettagli (ad esempio, scegliendo quale campo più grande usare e quale algoritmo FFT applicare).n

Inserito il:

"Incorporando" la nostra convoluzione, intendo una delle due cose. Prima opzione: si potrebbe passare a un campo di estensione in cui le radici primitive desiderate dell'unità sono adiacenti, e fare lì la convoluzione.

Seconda opzione: se il nostro campo iniziale è ciclico, si potrebbe passare a un campo ciclico di caratteristica più ampia - abbastanza grande che se consideriamo i nostri vettori come situati in F p , non si verifica alcun "avvolgimento". (Sono informale, ma pensa solo a come, per calcolare una convoluzione su F 2 , possiamo chiaramente fare semplicemente la stessa convoluzione su Z , e quindi prendere le risposte mod 2.)FpFp
F2Z

Aggiunto anche:

Molti algoritmi per FFT e problemi correlati funzionano particolarmente bene per i valori "carini" di (e vorrei capire meglio la situazione). n

Ma se non si tenta di sfruttare i valori speciali di , il problema della convoluzione ciclica è sostanzialmente equivalente (mediante facili riduzioni che coinvolgono l'esplosione lineare in n ) alla convoluzione ordinaria; questo a sua volta equivale alla moltiplicazione dei polinomi con coefficienti superiori a F p . nnFp

Per questa equivalenza, si possono usare i risultati, ad esempio, in questo documento di von zur Gathen e Gerhard (basato sul lavoro di Cantor), che usano un approccio di estensione del campo per ottenere un limite di complessità del circuito di . Non indicano i loro limiti in modo particolarmente chiaro IMO, ma il limite è peggiore di n log 2 n anche per F 2 . Si può fare di meglio?O~p(n)nlog2nF2


2
Forse trovi qualcosa di utile nella tesi di Todd Mateer .
jp

1
Ho posto una domanda molto simile su MathOverflow per calcolare il DFT su campi finiti arbitrari; potresti trovare le risposte pertinenti.
Bill Bradley,

Risposte:


8

Un recente articolo di Alexey Pospelov sembra fornire lo stato dell'arte. (Non è il primo a raggiungere i limiti che citerò, ma li raggiunge in modo unificato per i campi arbitrari e, cosa altrettanto importante, indica chiaramente i limiti, vedi p. 3.)

possiamo moltiplicare due degree- n polinomi su un campo arbitrario F utilizzando O ( n log n ) moltiplicazioni in F e O ( n log n log log n ) aggiunte in F . Ciò è originariamente dovuto a Schonhage-Strassen (per char.2 ) e Schonhage per char. 2. Come ho già detto, ciò implica gli stessi limiti della convoluzione ciclica. Pospelov afferma inoltre: "Al momento non siamo a conoscenza di algoritmi con un limite superiore di [quanto sopra] che non siano basati su applicazioni DFT consecutive ..."nFO(nlogn)FO(nlognloglogn)F2

Cantor e Kaltofen hanno generalizzato questi risultati, mostrando i limiti per algebre arbitrarie (non solo campi).

Se F supporta la Trasformata di Fourier discreta di ordine appropriato, cioè se F ha unaradice N -esimaprimitivadi unità dove N è abbastanza grande (credo che N = O ( n ) sia sufficiente) e N è una potenza di 2 o 3 , quindi possiamo eseguire la moltiplicazione polinomiale con moltiplicazioni O ( n ) eaggiunte O ( n log n ) . Sono possibili vari altri miglioramenti per i campi con altre proprietà speciali.FFNNN=O(n)NO(n)O(nlogn)

Sembra plausibile, ma sconosciuto, se il recentemiglioramento diFurernella moltiplicazione dei numeri interi (riprovatoin modo diverso da De et al.) Può aiutare a condurre ad algoritmi di moltiplicazione polinomiale più rapidi, affermano campi finiti. Qualcuno può commentare?

La tesi di Todd Mateer sembra anche un'ottima risorsa per comprendere la letteratura FFT e le applicazioni alla moltiplicazione polinomiale (grazie Jug!); ma devi scavare di più per trovare quello che stai cercando.


1
Penso che tu abbia ragione su Furer e De. De non utilizza una versione complessa di FFT e sembra tecnicamente più semplice sebbene entrambi gli algoritmi siano concettualmente simili.
vs

1
Se sei preoccupato per i fattori di registro, devi fare attenzione al modello di macchina. Il recente miglioramento di Furer è specifico per le macchine Turing. Per un modello di RAM a costo unitario (anche senza moltiplicazione ma con ricerca del tempo costante) si ottiene O (n) tempo per moltiplicare due numeri di n bit e complessità temporali di conseguenza inferiori per la moltiplicazione su F_2 ecc. Usando il bit pack e tecniche classiche.
Raffaello,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.