Esercizio - prodotto di matrici complesse, ricorrenza e induzione parametrica (compito del 8 luglio 2024, es. 1)
In questa pagina 4
Compito d'esame di Algoritmi per l'Ingegneria, Ing. Informatica UniPD, 8 luglio 2024, seconda parte, esercizio 1 (16 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 →, Induzione parametrica - limitazioni esatte delle ricorrenzeL'induzione parametrica prova una limitazione T(n) <= cn+d (o >=) con costanti c e d incognite: si simula la verifica per induzione, si raccolgono i vincoli su c e d dalla base e dal passo HP => TH, e se l'intersezione non è vuota si sceglie la coppia migliore. Per MAX dà esattamente T(n) = n-1; può fallire anche con guess veri (si aggiunge un parametro o un termine di ordine inferiore).Induzione parametrica - limitazioni esatte delle ricorrenze →, 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 → e Numeri complessiI numeri complessi estendono i reali introducendo l'unità immaginaria $i$ ($i^2 = -1$) e possono essere rappresentati in forma algebrica, trigonometrica o polare. Tramite la formula di Eulero e le proprietà del modulo e dell'argomento, è possibile calcolare agilmente prodotti, potenze e radici ennesime.Numeri complessi →.
Testo
Sia una potenza di due. Con riferimento all'algoritmo ricorsivo elementare per moltiplicare due matrici ad elementi complessi rappresentati in forma cartesiana (), si vuole determinare il numero esatto di operazioni tra numeri reali effettuato dall'algoritmo. Si ricorda che un'addizione complessa richiede addizioni reali, mentre una moltiplicazione complessa richiede moltiplicazioni e addizioni reali.
- 1.(a) [5 punti] Si scriva l'equazione di ricorrenza per (non è necessario fornire lo pseudocodice).
- 1.(b) [8 punti] Si risolva l'equazione di ricorrenza scritta al punto precedente mediante induzione parametrica, ipotizzando che la soluzione sia un polinomio di terzo grado, .
- 1.(c) [3 punti] Si determini il numero delle sole moltiplicazioni reali. Si scelga il metodo che viene più comodo, ma si giustifichi bene la risposta.
Punto (a): la ricorrenza
L'algoritmo ricorsivo elementare è RMUL (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 →): per un prodotto tra scalari complessi; per otto chiamate su matrici e quattro somme di matrici complesse (i quadranti ).
Conteggio in operazioni reali:
- Caso base : una moltiplicazione complessa, cioè moltiplicazioni reali più addizioni reali: . Per esempio : i prodotti , , , () e la differenza e la somma ().
- Conquer (): somme di matrici complesse . Ogni somma ha addizioni complesse, ognuna da addizioni reali: operazioni reali. Il divide non costa (metacomando).
Punto (b): induzione parametrica con polinomio di terzo grado
Si pone la guess con da determinare: l'induzione parametrica impone che il passo induttivo, con questa forma, funzioni come identità in , e raccoglie i vincoli (Induzione parametrica - limitazioni esatte delle ricorrenzeL'induzione parametrica prova una limitazione T(n) <= cn+d (o >=) con costanti c e d incognite: si simula la verifica per induzione, si raccolgono i vincoli su c e d dalla base e dal passo HP => TH, e se l'intersezione non è vuota si sceglie la coppia migliore. Per MAX dà esattamente T(n) = n-1; può fallire anche con guess veri (si aggiunge un parametro o un termine di ordine inferiore).Induzione parametrica - limitazioni esatte delle ricorrenze →).
Caso base. deve valere :
Passo. Per si suppone e si calcola, sostituendo nella ricorrenza:
Perché la guess sia valida deve valere per ogni , cioè
Due polinomi uguali in infiniti punti sono identici: i coefficienti dei monomi dello stesso grado coincidono.
- : , nessun vincolo.
- : , quindi .
- : , quindi .
- : , quindi .
Sostituendo in (1): , quindi . Risultato:
Verifica per induzione (ora con valori numerici, senza parametri). Base: ✓. Passo: se allora ✓.
Controllo indipendente. L'algoritmo ricorsivo fa le stesse operazioni di quello iterativo ( operazioni complesse; 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 →): moltiplicazioni complesse e addizioni complesse. In operazioni reali: moltiplicazioni complesse da operazioni reali ciascuna () e addizioni complesse da ciascuna (): ✓. Per il valore è : otto prodotti complessi () e quattro somme complesse ().
Punto (c): moltiplicazioni reali
Metodo 1, conteggio diretto. Il prodotto ricorsivo esegue tutti i prodotti per , e nessun altro: moltiplicazioni complesse (le somme delle ricorsioni non contengono prodotti). Ognuna richiede moltiplicazioni reali:
Metodo 2, ricorrenza. Le moltiplicazioni reali soddisfano (una moltiplicazione complessa) e (le somme del conquer non contengono moltiplicazioni, quindi il lavoro dei nodi interni è ). Srotolando: (con , ). I due metodi concordano.
Verifica con un programma. Un'implementazione dell'algoritmo ricorsivo su matrici a elementi complessi, con conteggio delle operazioni reali (un prodotto complesso vale , una somma complessa ), per , dà operazioni e moltiplicazioni reali; i risultati coincidono con il prodotto calcolato da numpy.
Versione ripasso
- (a) Ricorrenza (operazioni reali): base , un prodotto complesso moltiplicazioni addizioni reali, . Conquer: somme di matrici , ciascuna con somme complesse da operazioni reali: .
- (b) Induzione parametrica con (Induzione parametrica - limitazioni esatte delle ricorrenzeL'induzione parametrica prova una limitazione T(n) <= cn+d (o >=) con costanti c e d incognite: si simula la verifica per induzione, si raccolgono i vincoli su c e d dalla base e dal passo HP => TH, e se l'intersezione non è vuota si sceglie la coppia migliore. Per MAX dà esattamente T(n) = n-1; può fallire anche con guess veri (si aggiunge un parametro o un termine di ordine inferiore).Induzione parametrica - limitazioni esatte delle ricorrenze →):
- base: ;
- passo: , da imporre uguale a per infiniti , quindi i coefficienti coincidono: ; ; ; poi .
- Risultato: .
- Verifica numerica per induzione: .
- Controllo: stesso numero di operazioni dell'iterativo: prodotti complessi da e somme complesse da : . Per : .
- (c) Moltiplicazioni reali: prodotti complessi (uno per terna ), ognuno con moltiplicazioni reali: . Alternativa: , (le somme non hanno prodotti), quindi .
- Errori tipici: contare le somme complesse come una sola operazione (sono reali); dimenticare le addizioni reali del caso base ( e non ); non imporre l'uguaglianza dei coefficienti per infiniti (due polinomi uguali in infiniti punti sono identici); scrivere come (da segue ).