Salta al contenuto
Note per Studenti Esercizio - matrici SIR, somma, prodotto e inversa (compito del 29 gennaio 2026, es. 1)

Esercizio - matrici SIR, somma, prodotto e inversa (compito del 29 gennaio 2026, es. 1)

Esame
In questa pagina 5

Compito d'esame di Algoritmi per l'Ingegneria, Ing. Informatica UniPD, 29 gennaio 2026, seconda parte, esercizio 1 (17 punti). Teoria usata: 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 →, Matrici circolanti e supercircolanti - algoritmi divide and conquerle matrici supercircolanti (quadranti alternati ricorsivi) hanno solo n valori distinti: somma in n operazioni, prodotto in 4n log2 n + n con il trucco (A1+A2)(B1+B2) e (A1-A2)(B1-B2) invece delle 4 chiamate (Theta(n^2)); gli autovalori sono la trasformata di Hadamard della prima riga (FHT, n log2 n) e il prodotto passa dalla base diagonalizzante; le matrici circolanti sono polinomi nella matrice di rotazione R, il loro prodotto è la convoluzione ciclica delle prime righe e si diagonalizzano con la matrice di Fourier: prodotto in O(n log n) con la FFT.Matrici circolanti e supercircolanti - algoritmi divide and conquer →, 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 →, 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 → e Matrice inversaL'inversa di una matrice quadrata A è la matrice A⁻¹ con A A⁻¹ = A⁻¹ A = I; esiste se e solo se rango(A) = n e si calcola con Gauss-Jordan riducendo (A | I) fino a (I | A⁻¹).Matrice inversa →.*

Testo

Sia n≥1n \ge 1 una potenza di due. Una matrice T∈Rn×nT \in \mathbb R^{n \times n} si dice Supertriangolare Inferiore Ripetitiva di ordine nn (nn-SIR, in breve) se n=1n = 1, oppure, per n>1n > 1,

T=(T10n/2T2T1),T = \begin{pmatrix} T_1 & 0_{n/2} \\ T_2 & T_1 \end{pmatrix},

con T1,T2T_1, T_2 matrici n2\frac n2-SIR.

  • 1.(a) [5 punti] Si dimostri che, se TT e VV sono nn-SIR, allora T+VT + V, T−VT - V e T⋅VT \cdot V sono nn-SIR.
  • 1.(b) [6 punti] Si descrivano (senza necessariamente fornire lo pseudocodice) e si analizzino algoritmi divide-and-conquer SUM(T,V)(T, V), SUB(T,V)(T, V) e MULT(T,V)(T, V) per la somma, sottrazione e prodotto di due matrici nn-SIR TT e VV. Si esprima la complessità di tali algoritmi in funzione del numero di operazioni aritmetiche tra scalari reali eseguite.
  • 1.(c) [6 punti] Si dia per dimostrato che una matrice nn-SIR TT è invertibile se e solo se n=1n = 1 e t11≠0t_{11} \ne 0, oppure n>1n > 1 e T=(T10n/2T2T1)T = \begin{pmatrix} T_1 & 0_{n/2} \\ T_2 & T_1 \end{pmatrix}, con T1T_1 n2\frac n2-SIR invertibile, e che la sua inversa T−1T^{-1} è essa stessa una matrice nn-SIR. Si determini la forma di T−1T^{-1} in funzione di TT e si scriva e si analizzi lo pseudocodice di un algoritmo divide-and-conquer che, data una matrice nn-SIR invertibile, ne restituisca l'inversa.

Attenzione: per ottenere punteggio pieno, ciascuno dei tre algoritmi deve eseguire o(n2)o(n^2) operazioni tra scalari reali.

Come si legge la struttura

Una nn-SIR è triangolare inferiore (zeri in alto a destra) con due sole matrici indipendenti di ordine n2\frac n2: T1T_1 compare sulla diagonale in blocchi, T2T_2 nel quadrante in basso a sinistra. Ricorsivamente restano nn valori indipendenti. Per n=4n = 4, con T1=(a0ba)T_1 = \begin{pmatrix} a & 0 \\ b & a \end{pmatrix} e T2=(c0dc)T_2 = \begin{pmatrix} c & 0 \\ d & c \end{pmatrix}:

T=(a000ba00c0a0dcba).T = \begin{pmatrix} a & 0 & 0 & 0 \\ b & a & 0 & 0 \\ c & 0 & a & 0 \\ d & c & b & a \end{pmatrix}.

Il quadrante in alto a sinistra è uguale a quello in basso a destra (T1T_1): per questo "ripetitiva". Come rappresentazione compatta si possono tenere i due quadranti (T1,T2)(T_1, T_2), ricorsivamente, cioè nn scalari.

Punto (a): chiusura per somma, differenza e prodotto

Induzione su k≥0k \ge 0 con n=2kn = 2^k. Base (n=1n = 1): ogni matrice 1×11 \times 1 è 11-SIR, e somma, differenza e prodotto di scalari sono scalari. Passo: siano T,VT, V nn-SIR, n>1n > 1, e

T=(T10T2T1),V=(V10V2V1).T = \begin{pmatrix} T_1 & 0 \\ T_2 & T_1 \end{pmatrix}, \qquad V = \begin{pmatrix} V_1 & 0 \\ V_2 & V_1 \end{pmatrix}.

Con le operazioni per blocchi (proprietà frattale di somma e prodotto: 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 →):

T±V=(T1±V10T2±V2T1±V1),T⋅V=(T1V1+0⋅V2T1⋅0+0⋅V1T2V1+T1V2T2⋅0+T1V1)=(T1V10T2V1+T1V2T1V1).T \pm V = \begin{pmatrix} T_1 \pm V_1 & 0 \\ T_2 \pm V_2 & T_1 \pm V_1 \end{pmatrix}, \qquad T \cdot V = \begin{pmatrix} T_1 V_1 + 0 \cdot V_2 & T_1 \cdot 0 + 0 \cdot V_1 \\ T_2 V_1 + T_1 V_2 & T_2 \cdot 0 + T_1 V_1 \end{pmatrix} = \begin{pmatrix} T_1 V_1 & 0 \\ T_2 V_1 + T_1 V_2 & T_1 V_1 \end{pmatrix}.

In tutti e tre i risultati il quadrante in alto a destra è 00 e i due quadranti diagonali sono uguali (T1±V1T_1 \pm V_1, oppure T1V1T_1 V_1). I quadranti rimasti sono somme, differenze o prodotti di matrici n2\frac n2-SIR: per ipotesi induttiva (che vale per somma, differenza e prodotto) sono n2\frac n2-SIR. Quindi T+VT + V, T−VT - V e TVTV hanno la forma (S10S2S1)\begin{pmatrix} S_1 & 0 \\ S_2 & S_1 \end{pmatrix} con S1,S2S_1, S_2 n2\frac n2-SIR: sono nn-SIR. ■\blacksquare

Punto (b): SUM, SUB, MULT

Somma e differenza. Dal punto (a): T±VT \pm V ha come quadranti diversi da zero e dalla ripetizione solo S1=T1±V1S_1 = T_1 \pm V_1 e S2=T2±V2S_2 = T_2 \pm V_2, due chiamate ricorsive su matrici n2\frac n2-SIR; la seconda copia di S1S_1 e il blocco nullo non costano. Con Tsum(1)=1T_{sum}(1) = 1:

Tsum(n)=2 Tsum ⁣(n2)  ⇒  Tsum(n)=2k=n,T_{sum}(n) = 2\,T_{sum}\!\left(\tfrac n2\right) \;\Rightarrow\; T_{sum}(n) = 2^k = n,

e uguale per la differenza: Tsub(n)=nT_{sub}(n) = n. (Formula generale: s=2s = 2, w=0w = 0, solo le nn foglie.) Sono nn operazioni, o(n2)o(n^2).

Prodotto. Dal punto (a): TV=(T1V10T2V1+T1V2T1V1)TV = \begin{pmatrix} T_1V_1 & 0 \\ T_2V_1 + T_1V_2 & T_1V_1 \end{pmatrix}. Il prodotto T1V1T_1V_1 compare due volte (lo si calcola una volta); servono quindi tre prodotti ricorsivi su matrici n2\frac n2-SIR: P=T1V1P = T_1V_1, Q=T2V1Q = T_2V_1, R=T1V2R = T_1V_2, e una somma Q+RQ + R (con SUM, di costo n2\frac n2):

MULT(T, V)
  n <- T.rows
  if n = 1 then return [t11 * v11]
  * T = [T1 0; T2 T1],  V = [V1 0; V2 V1] *
  P <- MULT(T1, V1)
  Q <- MULT(T2, V1)
  R <- MULT(T1, V2)
  S <- SUM(Q, R)                        { n/2 operazioni }
  return [P 0; S P]

La correttezza segue dal punto (a) (e le chiamate sono legittime perché T1,T2,V1,V2T_1, T_2, V_1, V_2 sono n2\frac n2-SIR). La ricorrenza è

Tmult(n)={1n=1,3 Tmult ⁣(n2)+n2n>1.T_{mult}(n) = \begin{cases} 1 & n = 1, \\ 3\,T_{mult}\!\left(\frac n2\right) + \frac n2 & n > 1. \end{cases}

Master Theorem. a=3a = 3, b=2b = 2, soglia nlog⁡23≈n1.585n^{\log_2 3} \approx n^{1.585}, w(n)=n2=O(nlog⁡23−ε)w(n) = \frac n2 = O(n^{\log_2 3 - \varepsilon}) (per esempio ε=0.5\varepsilon = 0.5): caso 1, Tmult(n)=Θ(nlog⁡23)=o(n2)T_{mult}(n) = \Theta(n^{\log_2 3}) = o(n^2).

Soluzione esatta. Formula generale con s=3s = 3, w(n)=n2w(n) = \frac n2, livello ℓ\ell: 3ℓ3^\ell nodi su taglia n2ℓ\frac{n}{2^\ell} con lavoro n2ℓ+1\frac{n}{2^{\ell+1}}; le foglie sono 3k3^k:

Tmult(n)=∑ℓ=0k−13ℓ⋅n2ℓ+1+3k=n2∑ℓ=0k−1(32)ℓ+3k=n2⋅2((32)k−1)+3k=n(3kn−1)+3k=2⋅3k−n,T_{mult}(n) = \sum_{\ell=0}^{k-1} 3^\ell \cdot \frac{n}{2^{\ell+1}} + 3^k = \frac n2 \sum_{\ell=0}^{k-1} \left(\tfrac 32\right)^\ell + 3^k = \frac n2 \cdot 2 \left( \left(\tfrac 32\right)^k - 1 \right) + 3^k = n \left( \frac{3^k}{n} - 1 \right) + 3^k = 2 \cdot 3^k - n,

cioè Tmult(n)=2⋅3k−2k=2nlog⁡23−nT_{mult}(n) = 2 \cdot 3^k - 2^k = 2n^{\log_2 3} - n (la somma geometrica è (3/2)k−13/2−1=2((3/2)k−1)\frac{(3/2)^k - 1}{3/2 - 1} = 2((3/2)^k - 1) e (32)k=3kn(\frac 32)^k = \frac{3^k}{n}). Controllo: n=1n = 1 dà 11; n=2n = 2 dà 2⋅3−2=42 \cdot 3 - 2 = 4 (tre prodotti più una somma di scalari: T=(a0ba)T = \begin{pmatrix} a & 0 \\ b & a \end{pmatrix} per V=(c0dc)V = \begin{pmatrix} c & 0 \\ d & c \end{pmatrix} dà (ac0bc+adac)\begin{pmatrix} ac & 0 \\ bc + ad & ac \end{pmatrix}, con acac, bcbc, adad e una somma: 44 operazioni).

Punto (c): inversa

Sia T=(T10T2T1)T = \begin{pmatrix} T_1 & 0 \\ T_2 & T_1 \end{pmatrix} invertibile (n>1n > 1); allora T1T_1 è invertibile e T−1T^{-1} è nn-SIR, quindi della forma T−1=(X0YX)T^{-1} = \begin{pmatrix} X & 0 \\ Y & X \end{pmatrix} con X,YX, Y n2\frac n2-SIR. Si impone T⋅T−1=InT \cdot T^{-1} = I_n, usando la formula del prodotto del punto (a):

(T1X0T2X+T1YT1X)=(In/200In/2).\begin{pmatrix} T_1 X & 0 \\ T_2 X + T_1 Y & T_1 X \end{pmatrix} = \begin{pmatrix} I_{n/2} & 0 \\ 0 & I_{n/2} \end{pmatrix}.

  • Dal quadrante in alto a sinistra: T1X=In/2T_1 X = I_{n/2}, quindi X=T1−1X = T_1^{-1}.
  • Dal quadrante in basso a sinistra: T2X+T1Y=0T_2 X + T_1 Y = 0, cioè T1Y=−T2XT_1 Y = -T_2 X e, moltiplicando a sinistra per T1−1=XT_1^{-1} = X: Y=−X T2 X=−T1−1 T2 T1−1Y = -X\,T_2\,X = -T_1^{-1}\,T_2\,T_1^{-1}.

T−1=(T1−10−T1−1 T2 T1−1T1−1).T^{-1} = \begin{pmatrix} T_1^{-1} & 0 \\ -T_1^{-1}\,T_2\,T_1^{-1} & T_1^{-1} \end{pmatrix}.

Per n=1n = 1: T−1=[1/t11]T^{-1} = [1 / t_{11}] (con t11≠0t_{11} \ne 0).

Esempio (n=2n = 2). T=(2032)T = \begin{pmatrix} 2 & 0 \\ 3 & 2 \end{pmatrix}: X=12X = \frac 12, Y=−12⋅3⋅12=−34Y = -\frac 12 \cdot 3 \cdot \frac 12 = -\frac 34, T−1=(120−3412)T^{-1} = \begin{pmatrix} \frac 12 & 0 \\ -\frac 34 & \frac 12 \end{pmatrix}. Controllo: 3⋅12+2⋅(−34)=32−32=03 \cdot \frac 12 + 2 \cdot \left( -\frac 34 \right) = \frac 32 - \frac 32 = 0. ✓

Algoritmo. Si calcola una volta X=T1−1X = T_1^{-1} con una chiamata ricorsiva (T1T_1 è n2\frac n2-SIR invertibile), poi YY con due prodotti di matrici SIR (usando MULT), con il segno meno gratuito (come nel compito del 18 giugno 2026, gli opposti non costano; altrimenti si aggiungerebbero n2\frac n2 operazioni, ininfluenti sull'ordine di grandezza):

INV(T)
  n <- T.rows
  if n = 1 then return [1 / t11]
  * T = [T1 0; T2 T1] *
  X <- INV(T1)
  Y <- - MULT(MULT(X, T2), X)             { due prodotti di SIR di ordine n/2 }
  return [X 0; Y X]

La correttezza segue dalla forma di T−1T^{-1} ricavata e dalla correttezza di MULT. Ricorrenza:

Tinv(n)={1n=1,Tinv ⁣(n2)+2 Tmult ⁣(n2)n>1.T_{inv}(n) = \begin{cases} 1 & n = 1, \\ T_{inv}\!\left(\frac n2\right) + 2\,T_{mult}\!\left(\frac n2\right) & n > 1. \end{cases}

Il lavoro dei nodi interni è w(n)=2 Tmult(n2)=2 (2⋅3k−1−2k−1)=43⋅3k−2kw(n) = 2\,T_{mult}(\frac n2) = 2\,\bigl( 2 \cdot 3^{k-1} - 2^{k-1} \bigr) = \frac 43 \cdot 3^k - 2^k, cioè Θ(nlog⁡23)\Theta(n^{\log_2 3}). Master Theorem: a=1a = 1, b=2b = 2, soglia nlog⁡21=1n^{\log_2 1} = 1; w(n)=Θ(nlog⁡23)=Ω(nε)w(n) = \Theta(n^{\log_2 3}) = \Omega(n^{\varepsilon}) con ε=1\varepsilon = 1; condizione di regolarità: 1⋅w(n2)≤c w(n)1 \cdot w(\frac n2) \le c\,w(n) con c<1c < 1 vale per un lavoro polinomiale (w(n2)≈13w(n)w(\frac n2) \approx \frac 13 w(n)). Siamo nel caso 3: Tinv(n)=Θ(nlog⁡23)=o(n2)T_{inv}(n) = \Theta(n^{\log_2 3}) = o(n^2).

Soluzione esatta. Srotolando con Tinv(1)=1T_{inv}(1) = 1: Tinv(2k)=1+∑j=1k2 Tmult(2j−1)=1+∑j=1k(4⋅3j−1−2j)=1+2(3k−1)−(2k+1−2)=2⋅3k−2k+1+1T_{inv}(2^k) = 1 + \sum_{j=1}^{k} 2\,T_{mult}(2^{j-1}) = 1 + \sum_{j=1}^{k} \bigl( 4 \cdot 3^{j-1} - 2^{j} \bigr) = 1 + 2(3^k - 1) - (2^{k+1} - 2) = 2 \cdot 3^k - 2^{k+1} + 1, cioè

Tinv(n)=2nlog⁡23−2n+1.T_{inv}(n) = 2n^{\log_2 3} - 2n + 1.

Controllo: n=2n = 2 dà 2⋅3−4+1=32 \cdot 3 - 4 + 1 = 3 (un reciproco e due prodotti, come nell'esempio). Il costo della soluzione del corso è dato solo come ordine di grandezza (Θ(nlog⁡23)\Theta(n^{\log_2 3})), coerente.

Verifica con un programma. Un'implementazione di MULT e INV sulle matrici SIR rappresentate dai quadranti, con conteggio delle operazioni, confrontata con il prodotto e l'inversa calcolati sulle matrici piene (in aritmetica razionale), per n=1,…,128n = 1, \dots, 128, dà Tmult=2⋅3k−2kT_{mult} = 2 \cdot 3^k - 2^k e Tinv=2⋅3k−2k+1+1T_{inv} = 2 \cdot 3^k - 2^{k+1} + 1 per ogni kk.

Versione ripasso

Struttura: T=(T10T2T1)T = \begin{pmatrix} T_1 & 0 \\ T_2 & T_1 \end{pmatrix} con T1,T2T_1, T_2 n2\frac n2-SIR; nn valori indipendenti, quadrante in alto a destra nullo, diagonali uguali.

  • (a) Chiusura (induzione su kk): T±V=(T1±V10T2±V2T1±V1)T \pm V = \begin{pmatrix} T_1 \pm V_1 & 0 \\ T_2 \pm V_2 & T_1 \pm V_1 \end{pmatrix}, TV=(T1V10T2V1+T1V2T1V1)TV = \begin{pmatrix} T_1V_1 & 0 \\ T_2V_1 + T_1V_2 & T_1V_1 \end{pmatrix}; i quadranti sono somme/prodotti di n2\frac n2-SIR, quindi SIR per ipotesi (che include il prodotto).
  • (b) SUM/SUB: due chiamate (T1±V1T_1 \pm V_1, T2±V2T_2 \pm V_2), T(n)=2T(n2)T(n) = 2T(\frac n2), T(1)=1T(1) = 1: T=nT = n.
  • MULT: T1V1T_1V_1 calcolato una volta; tre prodotti (T1V1T_1V_1, T2V1T_2V_1, T1V2T_1V_2) più una SUM da n2\frac n2: Tmult(n)=3Tmult(n2)+n2,Tmult(1)=1.T_{mult}(n) = 3T_{mult}(\tfrac n2) + \tfrac n2, \quad T_{mult}(1) = 1. Master Theorem: soglia nlog⁡23n^{\log_2 3}, caso 1, Θ(nlog⁡23)\Theta(n^{\log_2 3}) (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 →). Esatto: n2⋅2((32)k−1)+3k=2⋅3k−n=2nlog⁡23−n\frac n2 \cdot 2((\frac 32)^k - 1) + 3^k = 2 \cdot 3^k - n = 2n^{\log_2 3} - n (n=2n = 2: 44 operazioni).
  • (c) Inversa: da T⋅T−1=IT \cdot T^{-1} = I con T−1=(X0YX)T^{-1} = \begin{pmatrix} X & 0 \\ Y & X \end{pmatrix}: T1X=IT_1X = I, quindi X=T1−1X = T_1^{-1}; T2X+T1Y=0T_2X + T_1Y = 0, quindi Y=−T1−1T2T1−1Y = -T_1^{-1}T_2T_1^{-1}. Per n=1n = 1: [1/t11][1/t_{11}]. Esempio T=(2032)T = \begin{pmatrix} 2 & 0 \\ 3 & 2 \end{pmatrix}: T−1=(120−3412)T^{-1} = \begin{pmatrix} \frac 12 & 0 \\ -\frac 34 & \frac 12 \end{pmatrix}.
  • Algoritmo INV: X←X \leftarrow INV(T1)(T_1) (una sola chiamata), Y←−Y \leftarrow -MULT(MULT(X,T2)(X, T_2), X)X). Ricorrenza Tinv(n)=Tinv(n2)+2Tmult(n2)T_{inv}(n) = T_{inv}(\frac n2) + 2T_{mult}(\frac n2), w=Θ(nlog⁡23)w = \Theta(n^{\log_2 3}): caso 3 (regolarità: w(n2)≈13w(n)w(\frac n2) \approx \frac 13 w(n)), Θ(nlog⁡23)\Theta(n^{\log_2 3}). Esatto: Tinv(n)=2⋅3k−2k+1+1=2nlog⁡23−2n+1T_{inv}(n) = 2 \cdot 3^k - 2^{k+1} + 1 = 2n^{\log_2 3} - 2n + 1 (n=2n = 2: 33 operazioni).
  • Pseudocodice: MULT: base [t11v11][t_{11}v_{11}]; P←P \leftarrow MULT(T1,V1)(T_1, V_1), Q←Q \leftarrow MULT(T2,V1)(T_2, V_1), R←R \leftarrow MULT(T1,V2)(T_1, V_2), S←S \leftarrow SUM(Q,R)(Q, R); ritorna (P0SP)\begin{pmatrix} P & 0 \\ S & P \end{pmatrix}. INV: base [1/t11][1/t_{11}]; X←X \leftarrow INV(T1)(T_1); Y←−Y \leftarrow -MULT(MULT(X,T2),X)(X, T_2), X); ritorna (X0YX)\begin{pmatrix} X & 0 \\ Y & X \end{pmatrix}. Il segno meno non costa; se costasse, +n2+\frac n2 per livello, stesso ordine di grandezza.
  • Esempio MULT n=2n = 2: (a0ba)(c0dc)=(ac0bc+adac)\begin{pmatrix} a & 0 \\ b & a \end{pmatrix}\begin{pmatrix} c & 0 \\ d & c \end{pmatrix} = \begin{pmatrix} ac & 0 \\ bc + ad & ac \end{pmatrix}: tre prodotti e una somma, 4=2⋅3−24 = 2 \cdot 3 - 2 operazioni.
  • Errori tipici: calcolare T1V1T_1V_1 due volte (quattro prodotti, Θ(n2)\Theta(n^2)); calcolare l'inversa di T1T_1 due volte (due chiamate ricorsive); dimenticare che Y=−XT2XY = -X T_2 X ha due prodotti; scambiare l'ordine dei fattori (le matrici non commutano); applicare il caso 1 alla ricorrenza di INV invece del caso 3.

Teoria collegata