Matrici circolanti e supercircolanti - algoritmi divide and conquer
In questa pagina 5
Matrici con molta ripetizione possono essere trattate con algoritmi sublineari nel numero di elementi. Qui si studiano due famiglie: le supercircolanti (SC), costruite a quadranti in modo ricorsivo, e le circolanti (CR), ottenute ruotando la prima riga. Sul modello di costo (operazioni tra scalari a costo , assegnamenti e copie a costo ) vedi Prodotto di matrici - algoritmo iterativo e ricorsivo a blocchimodello di costo sulle matrici n x n (operazioni tra scalari, taglia n oppure N = n^2); somma in n^2 operazioni (ottima); prodotto righe per colonne iterativo con costo esatto 2n^3 - n^2; proprietà frattale del prodotto a blocchi dimostrata sugli indici; algoritmo ricorsivo RMUL con T(n) = 8T(n/2) + n^2, Theta(n^3) e soluzione esatta 2n^3 - n^2 per induzione e per srotolamento: fa le stesse operazioni dell'iterativo.Prodotto di matrici - algoritmo iterativo e ricorsivo a blocchi →. Gli elementi sono numeri reali o complessi e (per le SC).
Matrici supercircolanti
Definizione. Una matrice di ordine è supercircolante (SC) se: (ogni scalare è SC di ordine ); oppure e
con matrici SC di ordine (quadranti alternati).
Esempio. Con quattro scalari : e sono SC di ordine ; componendole come si ottiene la SC di ordine
Proprietà
- Ogni riga è una permutazione della prima, e la matrice è simmetrica. Per induzione: per è ovvio; per la riga della metà alta è la riga di e quella della metà bassa è la riga di , cioè le stesse due metà scambiate, e per ipotesi le righe di sono permutazioni delle loro prime righe. Per la simmetria: perché sono simmetriche per ipotesi. Di conseguenza il numero massimo di elementi distinti è , non , e una SC è determinata dalla prima riga , scelta in modo arbitrario.
- Elemento . Con indici da a : , dove è lo XOR bit a bit (esercizio: Esercizio - elemento (h,k) di una matrice supercircolante (esercizi su supercircolanti e circolanti, es. SC 5)).
- Chiusura. Somma, differenza, prodotto per scalare e prodotto di due SC sono SC.
- Commutatività: per ogni coppia di SC.
Dimostrazione di 3 e 4 (induzione su , insieme per somma e prodotto). Base : somma e prodotto di scalari sono scalari, e il prodotto di scalari commuta. Passo: siano
Per la somma, sfruttando la proprietà frattale (si somma quadrante per quadrante),
con e SC di ordine per ipotesi induttiva: due quadranti alternati SC, quindi è SC. Per il prodotto, per la proprietà frattale del prodotto a blocchi,
Ogni quadrante è somma di prodotti di SC di ordine , quindi SC per ipotesi (prodotto e somma): ha quadranti alternati SC. Infine ha e , e per commutatività a ordine si ha , : .
In altre parole le SC formano un sottoanello commutativo delle matrici simmetriche.
Somma, differenza, prodotto per scalare
Se si rappresenta una SC con la sua prima riga, la somma è la somma delle prime righe: somme. Con la sola struttura ricorsiva:
S_SUM(A, B) { A, B SC dello stesso ordine n = 2^k }
n <- rows(A)
if n = 1 then return [a11 + b11]
* A = [A1 A2; A2 A1], B = [B1 B2; B2 B1] *
C1 <- S_SUM(A1, B1)
C2 <- S_SUM(A2, B2)
return [C1 C2; C2 C1]La correttezza dipende dal fatto che sono somme di SC e quindi si ottengono richiamando lo stesso algoritmo specializzato. La ricorrenza è , ; con la formula generale (Albero della ricorrenza e formula generale per le ricorrenzeL'albero della ricorrenza ha la forma dell'albero delle chiamate dell'istanza peggiore e T(n) è la somma dei lavori dei nodi. Per la famiglia T(n) = s(n)T(f(n)) + w(n) con base T0 per n <= n0, contando i nodi per livello con le iterate di f e il livello f*(n,n0) si ottiene la formula chiusa T(n) = somma_l [prodotto_j s(f^(j)(n))] w(f^(l)(n)) + [prodotto s] T0, verificata per induzione e applicata a esempi (merge sort, Hanoi, ricorrenze con radice).Albero della ricorrenza e formula generale per le ricorrenze →) , : restano solo le foglie, . È sorprendentemente poco: è la lunghezza di una riga. S_SUB e S_SCALPROD (prodotto per scalare) si scrivono allo stesso modo e costano .
La matrice in uscita si ottiene copiando e due volte: le copie sono quadratiche in ma nel modello di costo valgono . Se gli assegnamenti costassero , si avrebbe , caso 3 del Master Theorem - enunciato, casi e applicazioniMaster Theorem per T(n) = aT(n/b) + w(n): si confronta w(n) con la funzione soglia n^(log_b a). Caso 1 (w minore di una potenza polinomiale): Theta(n^(log_b a)); caso 2 (w della stessa taglia): Theta(n^(log_b a) log n); caso 3 (w maggiore e regolare): Theta(w(n)). Prova completa dai livelli dell'albero, versione estesa (parti intere, n0 qualsiasi), esempi, e l'uso scorretto quando nessun caso si applica (w = n log n).Master Theorem - enunciato, casi e applicazioni →, cioè : nessun risparmio asintotico rispetto alle matrici generali.
Prodotto: dalle 4 chiamate alle 2
Dalla struttura, con SC di quadranti :
Calcolare i soli quadranti distinti richiede 4 chiamate ricorsive e somme di SC di ordine : (lavoro ). La soglia è , siamo nel caso 1 e (esatto: ). Domina il lavoro alle foglie: come per Strassen, si riducono le chiamate aumentando il lavoro di divide e conquer. Si calcolano
Si somma e si sottrae (i termini misti cambiano segno, gli altri no):
Dunque e . Le due matrici e sono SC (chiusura), quindi e sono prodotti di SC e si ottengono ricorsivamente.
S_MUL(A, B)
n <- rows(A)
if n = 1 then return [a11 * b11]
* A = [A1 A2; A2 A1], B = [B1 B2; B2 B1] *
Ap <- S_SUM(A1, A2); Bp <- S_SUM(B1, B2) { DIVIDE: 4 operazioni su SC di ordine n/2 }
Am <- S_SUB(A1, A2); Bm <- S_SUB(B1, B2)
U <- S_MUL(Ap, Bp) { RECURSE: 2 chiamate }
V <- S_MUL(Am, Bm)
C1 <- S_SCALPROD(1/2, S_SUM(U, V)) { CONQUER: 4 operazioni }
C2 <- S_SCALPROD(1/2, S_SUB(U, V))
return [C1 C2; C2 C1]Il lavoro dei nodi interni è di operazioni su SC di ordine (quattro somme/sottrazioni nel divide, due nel conquer, due prodotti per scalare), ciascuna di costo : . La ricorrenza è
La soglia è : caso 2, . Il conto esatto con la formula generale (, , livelli interni, foglie): al livello ci sono nodi di lavoro , cioè per livello:
Esempio (). con prima riga , con prima riga : quindi , , , . Divide: , , , . Per con : la somma delle metà dà e , la differenza e , i prodotti e , quindi . Per : somma e , differenza e , prodotti e , quindi . Conquer: e . La prima riga del prodotto è . Controllo dalla definizione: ha prima riga , e ha .
Diagonalizzazione e trasformata di Hadamard
Due matrici simmetriche in generale non si diagonalizzano nella stessa base, ma le SC commutano, e matrici diagonalizzabili che commutano hanno una base comune di autovettori (infatti se e allora : manda autovettori di in autovettori con lo stesso autovalore). Qui la base comune si esibisce direttamente (per il richiamo teorico vedi DiagonalizzazioneUna matrice è diagonalizzabile se è simile a una diagonale, cioè se esiste una base di autovettori: allora A = S D S⁻¹ con gli autovettori nelle colonne di S e gli autovalori in D. Criterio: tutti gli autovalori nel campo e molteplicità geometrica uguale a quella algebrica. Le matrici simmetriche reali hanno autovalori reali.Diagonalizzazione → e Autovalori e autovettoriUn autovettore è un vettore non nullo che una funzione lineare manda in un suo multiplo; si trovano gli autovalori come radici del polinomio caratteristico det(A − λI) e gli autovettori come nucleo di A − λI. Matrici simili hanno gli stessi autovalori.Autovalori e autovettori →).
La base
Si definisce per induzione: e, per ,
I vettori sono , hanno componenti (norma ) e la prima componente vale sempre . Sono a due a due ortogonali, quindi una base di . Per induzione: è banale. Per due vettori distinti hanno una delle tre forme: e con , prodotto scalare per ipotesi; e , prodotto ; oppure e , prodotto (anche per ).
Le matrici che hanno per colonne i vettori di sono le matrici di Hadamard (di Sylvester): e
Sono simmetriche e , per induzione: . Quindi .
diagonalizza tutte le SC
Teorema. Per ogni SC di ordine e ogni vale con (prodotto scalare della prima riga con ).
Dimostrazione per induzione su . Per : , , e . Per , con e . Allora
perché (si usa ). Ora è una SC di ordine (chiusura), e per ipotesi con . Quindi , e perché e .
Poiché la prima componente di ogni è , basta la prima riga per avere l'autovalore, senza moltiplicare l'intera matrice per (si passa da a per autovalore). Indicando con l'autovalore di (colonna di ):
Gli autovalori di una SC sono la trasformata di Hadamard della sua prima riga. Il teorema ha una conseguenza immediata: gli autovettori di con sono quelli di e quelli con quelli di . Quindi è invertibile se e solo se lo sono e , e . I valori calcolati alle foglie della ricorsione di S_MUL sono proprio gli autovalori.
Fast Hadamard Transform
La struttura di dà la proprietà di sottostruttura: con , ,
Un'istanza di taglia si riduce a due di taglia , con somme e differenze. L'algoritmo divide & conquer è la FHT:
FHT(x) { x di lunghezza n = 2^k }
n <- length(x)
if n = 1 then return x
for i <- 1 to n/2 do
s[i] <- x[i] + x[i + n/2]
d[i] <- x[i] - x[i + n/2]
return concatena(FHT(s), FHT(d))(per , non fa operazioni) e , cioè : ogni livello interno ha lavoro , e i livelli sono . (Le note del corso scrivono e poi riportano : con la soluzione sarebbe ; il caso base non esegue operazioni, quindi è la scelta coerente con il risultato.) L'inversa si calcola con una FHT e moltiplicazioni per : operazioni.
Esempio (). Per la SC con prima riga gli autovalori sono . Con e : e ; e . Gli autovalori sono : i primi due sono quelli di , gli altri due quelli di . Si controlla con le righe di : , , . Poiché un autovalore è , questa SC non è invertibile ().
Prodotto di SC passando dalla base diagonalizzante
Teorema. Se sono SC e sono le prime righe viste come vettori colonna (), il prodotto soddisfa
dove è il prodotto componente per componente.
Infatti gli autovalori di sono i prodotti degli autovalori (stessa base), e si torna alla prima riga con l'inversa della trasformata. Costo: due FHT (), prodotti, una trasformata inversa (): in tutto operazioni (verificato con un programma). Il metodo diretto S_MUL () non ha bisogno di autovalori; i due costi differiscono solo per la costante (per la via di Hadamard è più economica).
Il passaggio per autovalori serve soprattutto a risolvere problemi analoghi, per esempio l'inversione: la proprietà di sottostruttura di non dice nulla sull'invertibilità di , mentre con gli autovalori è invertibile se e solo se nessuno è nullo, e l'inversa si ottiene prendendo i reciproci e tornando alla prima riga. Si ricava anche con operazioni.
Matrici circolanti
Definizione. Una matrice è circolante (CR) se ogni riga è la rotazione di una posizione verso destra della precedente, cioè per ogni .
Con indici da : . Per esempio, con :
Le CR sono casi particolari di matrici di Toeplitz. A differenza delle SC valgono per ogni (non solo per le potenze di ), e modellano i sistemi lineari tempo-invarianti con ingressi periodici di periodo .
La matrice di rotazione
Sia la CR con prima riga , la matrice di rotazione circolare a sinistra: se , altrimenti .
- Per un vettore colonna si ha . Quindi .
- è CR se e solo se . Si calcola (la riga di è la riga di ) e (l'unico con è ), indici modulo . L'uguaglianza per ogni è , la definizione di CR.
- Ogni CR è un polinomio in : Infatti ha in posizione , quindi la sua prima riga è e il termine contribuisce a tutte le diagonali circolari corrispondenti. Nell'esempio sopra . Le CR sono tutte e sole le combinazioni lineari delle potenze di .
Da qui seguono: chiusura per somma (somma di polinomi), per prodotto (prodotto di polinomi in , ridotto con ), e commutatività (due polinomi nella stessa matrice commutano). Le CR formano un sottoanello commutativo.
Prodotto e convoluzione ciclica
Il prodotto di due polinomi in è un polinomio in con , cioè calcolato modulo . Date le sequenze di lunghezza , la convoluzione ciclica è la sequenza con
(Ridurre modulo significa sostituire con : il coefficiente di riceve tutti i termini con , cioè .) Scrivendo e e usando :
Moltiplicare matrici circolanti equivale a convolvere ciclicamente le prime righe (vedi anche Polinomi - rappresentazione per coefficienti e per valori e convoluzioneun polinomio di grado limitato da n si rappresenta con n coefficienti o con n valori su n punti distinti (teorema di interpolazione, matrice di Vandermonde). Per coefficienti la somma costa n e il prodotto, la convoluzione lineare, n^2 prodotti e (n-1)^2 somme; per valori il prodotto costa 2n-1 prodotti ma serve una base estesa di almeno 2n-1 punti. Le conversioni generali costano troppo: valutazione n volte con Horner 2n(n-1), interpolazione con Gauss-Jordan n^3 o con Lagrange n^2. Serve una base speciale: la DFT.Polinomi - rappresentazione per coefficienti e per valori e convoluzione → e, per il lato segnali, ConvoluzioneLa convoluzione $xy(t)=\int x(u),y(t-u),du$ combina due segnali ribaltando e traslando il secondo, moltiplicando e integrando. È commutativa, associativa, lineare; l'area del risultato è il prodotto delle aree; l'estensione è la somma delle estensioni (estremo con estremo); l'impulso $\delta$ è l'elemento neutro; la convoluzione con il gradino integra. Per due segnali periodici di uguale periodo si usa la convoluzione ciclica (integrale su un periodo). È l'operazione del filtraggio: l'uscita di un filtro è la convoluzione dell'ingresso con la risposta impulsiva.Convoluzione → e Trasformata di Fourier discreta (DFT) e convoluzione circolareLa DFT di N campioni x[0..N-1] è X[k] = sum x[n] e^{-j2pi kn/N}, k = 0..N-1 (IDFT: x[n] = (1/N) sum X[k] e^{j2pi kn/N}); vede il segnale come periodico di periodo N e dà N campioni equispaziati della DTFT, cioè X(z) valutata sulle radici N-esime dell'unità. Se x ha durata M <= N non c'è aliasing temporale e lo zero-padding (N > M) infittisce solo i campioni della stessa DTFT. Proprietà: traslazione circolare, simmetria coniugata X[k] = X[N-k], prodotto = convoluzione circolare. La convoluzione circolare coincide con la lineare solo se N >= Dx + M - 1; altrimenti la coda si ripiega sull'inizio. La FFT calcola la DFT con (N/2) log2 N moltiplicazioni invece di N^2.Trasformata di Fourier discreta (DFT) e convoluzione circolare →).
Diagonalizzazione: emerge la DFT
Poiché le CR sono polinomi in e commutano, basta diagonalizzare . Se allora (i fattori si semplificano) e per ogni polinomio vale .
Sia . Per il vettore è un autovettore di : la componente di è la componente di , cioè (per si usa ). L'autovalore è : gli autovalori di sono le radici -esime dell'unità, tutte distinte. La matrice è la matrice di Fourier , di Vandermonde sulle radici dell'unità (vedi DFT, matrice di Fourier e radici n-esime dell'unitàla DFT di ordine n valuta un polinomio di grado limitato da n sulle n radici n-esime dell'unità, y_i = p(ω^i) con ω = e^{2πi/n}; è il prodotto per la matrice di Fourier F_n, una Vandermonde invertibile. Le radici formano un gruppo moltiplicativo e valgono tre lemmi: cancellazione (ω_{dn}^{dk} = ω_n^k, ω_n^{n/2} = -1), dimezzamento (i quadrati delle n radici sono le n/2 radici n/2-esime, ciascuna due volte) e somma (la somma delle potenze di ω^k vale n se k è multiplo di n, 0 altrimenti). Teorema di convoluzione lineare: (c|0) = DFT^{-1}{2n}(DFT{2n}(a|0) ⊙ DFT_{2n}(b|0)).DFT, matrice di Fourier e radici n-esime dell'unità →). Quindi diagonalizza tutte le CR, e l'autovalore di relativo a è :
Gli autovalori di una CR sono la DFT della sua prima riga. Questo è l'equivalente matriciale del teorema di convoluzione ciclica.
Teorema (convoluzione ciclica, forma matriciale). Per due CR di ordine :
Con l'algoritmo FFT (Fast Fourier Transform - algoritmo ricorsivo e trasformata inversala FFT calcola DFT_n (n potenza di due) con divide et impera: si separano i coefficienti di indice pari e dispari, p(x) = p0(x^2) + x p1(x^2), e per il lemma di dimezzamento bastano due DFT di ordine n/2; y_i = y0_i + w^i y1_i e y_{i+n/2} = y0_i - w^i y1_i. La ricorrenza T(n) = 2T(n/2) + 2n con T(1) = 0 ha soluzione esatta 2 n log2 n. L'inversa ha matrice F^{-1}_{ij} = w^{-ij}/n: si ottiene con la FFT sulle potenze negative (poi si divide per n fuori dalla ricorsione) oppure con DFT_n(y) rovesciato. LIN_CONV moltiplica due polinomi con n coefficienti in 12 n log2(2n) + 4n operazioni.Fast Fourier Transform - algoritmo ricorsivo e trasformata inversa →) le due trasformate e l'antitrasformata costano e il prodotto puntuale : due CR si moltiplicano in tempo (le note del corso scrivono "FHT" per le CR, ma qui serve la trasformata di Fourier, la FFT: la FHT diagonalizza solo le SC). La differenza con il caso SC è nell'algoritmo: la FHT è semplice, la FFT richiede più sofisticazione (valutazione e interpolazione di polinomi, radici dell'unità come punti di valutazione). Un esempio numerico completo è in Esercizio - prodotto di matrici circolanti e convoluzione ciclica con la DFT (esercizi su supercircolanti e circolanti, es. CR 10).
Esercizi collegati
- Esercizio - matrici RCA, somma e prodotto matrice-vettore (compito del 18 giugno 2026, es. 1): stessa tecnica delle SC su matrici con quadranti opposti.
- Esercizio - matrici SIR, somma, prodotto e inversa (compito del 29 gennaio 2026, es. 1): matrici con quadranti ripetuti, prodotto con tre chiamate e inversa.
- Esercizio - elemento (h,k) di una matrice supercircolante (esercizi su supercircolanti e circolanti, es. SC 5): lettura di un elemento in .
- Esercizio - algoritmo di Strassen sulle matrici supercircolanti (esercizi su supercircolanti e circolanti, es. SC 6): Strassen specializzato sulle SC.
- Esercizio - prodotto di matrici circolanti e convoluzione ciclica con la DFT (esercizi su supercircolanti e circolanti, es. CR 10): prodotto di circolanti e autovalori, con esempio numerico.
Domande d'esame
- Qual è il numero massimo di elementi distinti di una matrice supercircolante di ordine , e quante somme servono per sommare due SC? Risposta: elementi distinti (una riga determina la matrice); somme, da , .
- Con quale ricorrenza si analizza il prodotto di SC con il trucco , e qual è la sua complessità? Traccia: chiamate, operazioni su SC di ordine ( in totale), , soglia , caso 2: , esatta . Senza il trucco: , .
- Perché le matrici circolanti si moltiplicano in ? Traccia: sono polinomi in con , il prodotto è la convoluzione ciclica delle prime righe; la matrice di Fourier le diagonalizza (autovalori DFT della prima riga), quindi: DFT di entrambe, prodotto puntuale, DFT inversa, con la FFT.
Versione ripasso
Supercircolanti (SC): ; scalare, altrimenti con SC di ordine . Esempio con prima riga : righe , , , .
- Proprietà: simmetriche; ogni riga è una permutazione della prima (induzione sulle due metà); solo valori distinti, matrice determinata dalla prima riga ; (XOR, indici da ).
- Chiusura e commutatività (induzione su ): ha quadranti , alternati; ha e alternati, somme di prodotti di SC di ordine ; dà gli stessi per commutatività a ordine . Le SC sono un sottoanello commutativo delle matrici simmetriche.
- Somma/sottrazione/scalare:
S_SUMrichiama sé stessa su e e copia i risultati: , , quindi (solo foglie, ). Copie gratis nel modello; se costassero : , caso 3, . - Prodotto, 4 chiamate: , soglia , caso 1: (esatto ).
- Prodotto con il trucco: , ; , , quindi , . Lavoro dei nodi interni: operazioni su SC di ordine , cioè : Soglia , caso 2 (Master Theorem - enunciato, casi e applicazioniMaster Theorem per T(n) = aT(n/b) + w(n): si confronta w(n) con la funzione soglia n^(log_b a). Caso 1 (w minore di una potenza polinomiale): Theta(n^(log_b a)); caso 2 (w della stessa taglia): Theta(n^(log_b a) log n); caso 3 (w maggiore e regolare): Theta(w(n)). Prova completa dai livelli dell'albero, versione estesa (parti intere, n0 qualsiasi), esempi, e l'uso scorretto quando nessun caso si applica (w = n log n).Master Theorem - enunciato, casi e applicazioni →): . Esempio: , , , , .
- Base diagonalizzante : ; con . Componenti , prima componente , a due a due ortogonali (tre casi: , con segni, ).
- Teorema: per ogni SC e ogni , . Induzione: e è SC di ordine . Autovalori (DiagonalizzazioneUna matrice è diagonalizzabile se è simile a una diagonale, cioè se esiste una base di autovettori: allora A = S D S⁻¹ con gli autovettori nelle colonne di S e gli autovalori in D. Criterio: tutti gli autovalori nel campo e molteplicità geometrica uguale a quella algebrica. Le matrici simmetriche reali hanno autovalori reali.Diagonalizzazione →); invertibile sse lo sono; .
- Hadamard e FHT: , , . , ; inversa .
- Esempio FHT: : , , quindi (autovalori di e di ); c'è lo , quindi non è invertibile e .
- Algoritmi per e inversa: costa operazioni; l'inversa si ha prendendo i reciproci degli autovalori e tornando alla prima riga con ; la sottostruttura sui blocchi da sola non basta (l'invertibilità di non si riduce a quella dei blocchi).
- Prodotto via autovalori: , costo (più economico di
S_MULper ). Con gli autovalori si risolvono invertibilità e determinante.
Circolanti (CR): , ogni riga è la rotazione a destra della precedente, qualunque .
- Matrice (prima riga ): , . è CR sse : , . (es. : ): CR chiuse, commutative.
- Prodotto convoluzione ciclica: , , prodotto di polinomi modulo (Polinomi - rappresentazione per coefficienti e per valori e convoluzioneun polinomio di grado limitato da n si rappresenta con n coefficienti o con n valori su n punti distinti (teorema di interpolazione, matrice di Vandermonde). Per coefficienti la somma costa n e il prodotto, la convoluzione lineare, n^2 prodotti e (n-1)^2 somme; per valori il prodotto costa 2n-1 prodotti ma serve una base estesa di almeno 2n-1 punti. Le conversioni generali costano troppo: valutazione n volte con Horner 2n(n-1), interpolazione con Gauss-Jordan n^3 o con Lagrange n^2. Serve una base speciale: la DFT.Polinomi - rappresentazione per coefficienti e per valori e convoluzione →).
- Diagonalizzazione: . con , : diagonalizza tutte le CR, autovalori DFT della prima riga (DFT, matrice di Fourier e radici n-esime dell'unitàla DFT di ordine n valuta un polinomio di grado limitato da n sulle n radici n-esime dell'unità, y_i = p(ω^i) con ω = e^{2πi/n}; è il prodotto per la matrice di Fourier F_n, una Vandermonde invertibile. Le radici formano un gruppo moltiplicativo e valgono tre lemmi: cancellazione (ω_{dn}^{dk} = ω_n^k, ω_n^{n/2} = -1), dimezzamento (i quadrati delle n radici sono le n/2 radici n/2-esime, ciascuna due volte) e somma (la somma delle potenze di ω^k vale n se k è multiplo di n, 0 altrimenti). Teorema di convoluzione lineare: (c|0) = DFT^{-1}{2n}(DFT{2n}(a|0) ⊙ DFT_{2n}(b|0)).DFT, matrice di Fourier e radici n-esime dell'unità →).
- Teorema: : con la FFT (Fast Fourier Transform - algoritmo ricorsivo e trasformata inversala FFT calcola DFT_n (n potenza di due) con divide et impera: si separano i coefficienti di indice pari e dispari, p(x) = p0(x^2) + x p1(x^2), e per il lemma di dimezzamento bastano due DFT di ordine n/2; y_i = y0_i + w^i y1_i e y_{i+n/2} = y0_i - w^i y1_i. La ricorrenza T(n) = 2T(n/2) + 2n con T(1) = 0 ha soluzione esatta 2 n log2 n. L'inversa ha matrice F^{-1}_{ij} = w^{-ij}/n: si ottiene con la FFT sulle potenze negative (poi si divide per n fuori dalla ricorsione) oppure con DFT_n(y) rovesciato. LIN_CONV moltiplica due polinomi con n coefficienti in 12 n log2(2n) + 4n operazioni.Fast Fourier Transform - algoritmo ricorsivo e trasformata inversa →) il prodotto costa .
- Esempi numerici CR: dà le righe , , , . Per , , e . Con e : DFT e , prodotto puntuale , antitrasformata .
S_MULpasso per passo: divide e ( operazioni su SC di ordine , costo ciascuna); recurse ; conquer e due prodotti per ( operazioni); la ricomposizione è una copia, gratis. Correttezza: segue dall'identità sui quadranti. Riga di , per esempio, per e : .- Errori tipici: usare la FHT per le CR (serve la FFT, la FHT diagonalizza solo le SC); dimenticare che il fattore costa operazioni nel conteggio esatto; scambiare riga e colonna nell'elemento ( per le CR, per le SC); contare le copie dei quadranti.
Esercizi su questo argomento
- Esercizio - algoritmo di Strassen sulle matrici supercircolanti (esercizi su supercircolanti e circolanti, es. SC 6)
- Esercizio - domande di prima parte su moltiplicazione di matrici (simulazioni d'esame)
- Esercizio - elemento (h,k) di una matrice supercircolante (esercizi su supercircolanti e circolanti, es. SC 5)
- Esercizio - matrici RCA, somma e prodotto matrice-vettore (compito del 18 giugno 2026, es. 1)
- Esercizio - matrici SIR, somma, prodotto e inversa (compito del 29 gennaio 2026, es. 1)
- Esercizio - prodotto di matrici circolanti e convoluzione ciclica con la DFT (esercizi su supercircolanti e circolanti, es. CR 10)