Esercizio - matrici SIR, somma, prodotto e inversa (compito del 29 gennaio 2026, es. 1)
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 una potenza di due. Una matrice si dice Supertriangolare Inferiore Ripetitiva di ordine (-SIR, in breve) se , oppure, per ,
con matrici -SIR.
- 1.(a) [5 punti] Si dimostri che, se e sono -SIR, allora , e sono -SIR.
- 1.(b) [6 punti] Si descrivano (senza necessariamente fornire lo pseudocodice) e si analizzino algoritmi divide-and-conquer
SUM,SUBeMULTper la somma, sottrazione e prodotto di due matrici -SIR e . 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 -SIR è invertibile se e solo se e , oppure e , con -SIR invertibile, e che la sua inversa è essa stessa una matrice -SIR. Si determini la forma di in funzione di e si scriva e si analizzi lo pseudocodice di un algoritmo divide-and-conquer che, data una matrice -SIR invertibile, ne restituisca l'inversa.
Attenzione: per ottenere punteggio pieno, ciascuno dei tre algoritmi deve eseguire operazioni tra scalari reali.
Come si legge la struttura
Una -SIR è triangolare inferiore (zeri in alto a destra) con due sole matrici indipendenti di ordine : compare sulla diagonale in blocchi, nel quadrante in basso a sinistra. Ricorsivamente restano valori indipendenti. Per , con e :
Il quadrante in alto a sinistra è uguale a quello in basso a destra (): per questo "ripetitiva". Come rappresentazione compatta si possono tenere i due quadranti , ricorsivamente, cioè scalari.
Punto (a): chiusura per somma, differenza e prodotto
Induzione su con . Base (): ogni matrice è -SIR, e somma, differenza e prodotto di scalari sono scalari. Passo: siano -SIR, , e
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 →):
In tutti e tre i risultati il quadrante in alto a destra è e i due quadranti diagonali sono uguali (, oppure ). I quadranti rimasti sono somme, differenze o prodotti di matrici -SIR: per ipotesi induttiva (che vale per somma, differenza e prodotto) sono -SIR. Quindi , e hanno la forma con -SIR: sono -SIR.
Punto (b): SUM, SUB, MULT
Somma e differenza. Dal punto (a): ha come quadranti diversi da zero e dalla ripetizione solo e , due chiamate ricorsive su matrici -SIR; la seconda copia di e il blocco nullo non costano. Con :
e uguale per la differenza: . (Formula generale: , , solo le foglie.) Sono operazioni, .
Prodotto. Dal punto (a): . Il prodotto compare due volte (lo si calcola una volta); servono quindi tre prodotti ricorsivi su matrici -SIR: , , , e una somma (con SUM, di costo ):
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é sono -SIR). La ricorrenza è
Master Theorem. , , soglia , (per esempio ): caso 1, .
Soluzione esatta. Formula generale con , , livello : nodi su taglia con lavoro ; le foglie sono :
cioè (la somma geometrica è e ). Controllo: dà ; dà (tre prodotti più una somma di scalari: per dà , con , , e una somma: operazioni).
Punto (c): inversa
Sia invertibile (); allora è invertibile e è -SIR, quindi della forma con -SIR. Si impone , usando la formula del prodotto del punto (a):
- Dal quadrante in alto a sinistra: , quindi .
- Dal quadrante in basso a sinistra: , cioè e, moltiplicando a sinistra per : .
Per : (con ).
Esempio (). : , , . Controllo: . ✓
Algoritmo. Si calcola una volta con una chiamata ricorsiva ( è -SIR invertibile), poi 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 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 ricavata e dalla correttezza di MULT. Ricorrenza:
Il lavoro dei nodi interni è , cioè . Master Theorem: , , soglia ; con ; condizione di regolarità: con vale per un lavoro polinomiale (). Siamo nel caso 3: .
Soluzione esatta. Srotolando con : , cioè
Controllo: dà (un reciproco e due prodotti, come nell'esempio). Il costo della soluzione del corso è dato solo come ordine di grandezza (), 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 , dà e per ogni .
Versione ripasso
Struttura: con -SIR; valori indipendenti, quadrante in alto a destra nullo, diagonali uguali.
- (a) Chiusura (induzione su ): , ; i quadranti sono somme/prodotti di -SIR, quindi SIR per ipotesi (che include il prodotto).
- (b)
SUM/SUB: due chiamate (, ), , : . MULT: calcolato una volta; tre prodotti (, , ) più unaSUMda : Master Theorem: soglia , caso 1, (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: (: operazioni).- (c) Inversa: da con : , quindi ; , quindi . Per : . Esempio : .
- Algoritmo
INV:INV(una sola chiamata),MULT(MULT, . Ricorrenza , : caso 3 (regolarità: ), . Esatto: (: operazioni). - Pseudocodice:
MULT: base ;MULT,MULT,MULT,SUM; ritorna .INV: base ;INV;MULT(MULT; ritorna . Il segno meno non costa; se costasse, per livello, stesso ordine di grandezza. - Esempio
MULT: : tre prodotti e una somma, operazioni. - Errori tipici: calcolare due volte (quattro prodotti, ); calcolare l'inversa di due volte (due chiamate ricorsive); dimenticare che ha due prodotti; scambiare l'ordine dei fattori (le matrici non commutano); applicare il caso 1 alla ricorrenza di
INVinvece del caso 3.