Master Theorem - enunciato, casi e applicazioni
In questa pagina 8
Il Master Theorem (MT) dà l'ordine di grandezza delle soluzioni di una classe importante di ricorrenze, senza risolverle esplicitamente. Ha una struttura più ristretta della formula generaleL'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 →: si ottiene da essa. Prima la versione semplificata (con prova), poi la generalizzazione.
Enunciato
Siano , un intero e non decrescente. Si consideri, per , È la formula generale con , , . La funzione di soglia (threshold) è .
Teorema (Master Theorem). La soluzione di soddisfa
La condizione del Caso 3 con è la condizione di regolarità: cresce "senza sbalzi". Per le funzioni naturali del corso (i polinomi) vale sempre (vedi sotto). Come sempre, i logaritmi di base costante dentro l'ordine di grandezza si scrivono senza base (differiscono per una costante moltiplicativa; Esponenziale e logaritmoLa funzione esponenziale a^x (base positiva diversa da 1) e la sua inversa, il logaritmo in base a, con grafici e proprietà.Esponenziale e logaritmo →).
Il MT non è esaustivo. Esistono parametri che non rientrano in nessun caso. Esempio: , , : la soglia è e è asintoticamente maggiore, quindi potrebbe applicarsi solo il Caso 3; ma si ha (vedi Notazione asintoticaDefinizioni di O, Omega, Theta e o piccolo con le costanti c ed n0; esempi con costanti esplicite; proprietà (polinomi, esponenziali, logaritmi, somme, implicazioni tra notazioni); sommatorie notevoli; terminologia (logaritmica, lineare, polinomiale, esponenziale).Notazione asintotica →), quindi non è mai e il Caso 3 non vale. Sul confronto con la soglia: la differenza deve essere una potenza polinomiale , non un fattore logaritmico.
Grafico interattivo: Soglie a confronto (b = 2): n^(log2 a) per a = 2 (n), a = 3 (n^1,58), a = 4 (n^2); e n log2 n
Prova
Passo preliminare. Per funzioni positive a dominio intero, e si possono dichiarare valide per tutti gli (non solo da un in poi). Se per , si pone : per , , e per , . Analogamente, per si usa .
Il punto di partenza. Con la formula generale (, , , , nodi al livello di taglia ) e l'identità : Il secondo termine è perché : stesso ordine della soglia. Resta da studiare la somma nei tre casi.
Caso 1. Da segue con per ogni . Usando : La somma è dunque e . Se si ha solo . Per la soluzione vale anche con lavoro nullo : allora l'unico lavoro è sulle foglie.
Caso 2. Da si ha per ogni . Il termine non dipende da : ogni livello costa lo stesso. Quindi e allo stesso modo . Quindi la somma è e, aggiungendo , .
Caso 3. Si dimostra prima che la regolarità implica per ogni , per induzione su :
- [B] : banale.
- [HP] vera per i valori minori di .
- [TH] (regolarità con ), (per [HP]).
Allora, con la serie geometrica di ragione , quindi la somma è e , perché la soglia è dominata da . Per il limite inferiore, per , (somma di contributi non negativi): . I due limiti danno .
Che cosa dice il MT sul progetto. Nel Caso 1 domina il lavoro alle foglie: per migliorare occorre ridurre il numero di foglie, per esempio le sottoistanze generate dal Divide (è ciò che fa l'algoritmo di StrassenStrassen calcola il prodotto n x n con 7 chiamate ricorsive invece di 8, usando 10 somme/sottrazioni nel divide e 8 nel conquer: T(n) = 7T(n/2) + (9/2)n^2, Theta(n^(log2 7)) con soluzione esatta 7n^(log2 7) - 6n^2; la costante 7 è più che tripla di quella dell'iterativo (2) e Strassen batte l'iterativo solo da n = 655 (per le potenze di 2, da 1024). L'ibridazione cambia il caso base (iterativo per n <= n0): costo n^(log2 7)(2n0+5)/n0^(log2 7 - 2) - 6n^2, minimo per n0 = 8 con costante ~3.92.Algoritmo di Strassen e ibridazione →). Nel Caso 3 domina il lavoro dell'istanza principale: occorre ridurre quel lavoro. Il Caso 2 corrisponde a una strategia bilanciata, con lo stesso contributo da ogni livello: per migliorare serve spesso una diversa e più efficiente proprietà di sottostruttura.
La versione estesa
Una prova più complessa (si rimanda al libro di testo) mostra che i tre casi valgono identici anche per per valori arbitrari di e di . Arrestare la ricorrenza a sostituisce ogni sottoalbero di profondità e costo costanti con la costante , e questo può cambiare solo le costanti moltiplicative, non l'ordine di grandezza. Per questo, quando si usa il MT si adotta la convenzione di scrivere solo la relazione implicita, senza arrotondamenti. È una convenzione da usare solo per applicare il MT: altrove quella scrittura non ha senso (Divide and conquer - proprietà di sottostruttura e albero delle chiamateUn algoritmo divide and conquer nasce da una proprietà di sottostruttura (funzioni Divide e Conquer, base n0) con sottoistanze di taglia strettamente minore; l'albero delle chiamate ne descrive l'esecuzione, e il D&C non ha memoria (ripete le sottoistanze uguali). Esempio completo: MAX di un array, con correttezza per induzione, ricorrenza e conteggio esatto n-1 tramite il teorema sugli alberi binari pieni.Divide and conquer - proprietà di sottostruttura e albero delle chiamate →).
Come si applica
- Si leggono (numero di sottoistanze), (fattore di riduzione) e .
- Si calcola la soglia .
- Si confronta con la soglia per esponente: se è polinomiale , i casi sono (Caso 1), (Caso 2), (Caso 3).
- Nel Caso 3 si verifica la regolarità, cioè si trova con .
Regolarità per i polinomi. Se e siamo nel Caso 3, per un è . Allora perché : basta . Per un lavoro polinomiale la regolarità vale sempre.
Esempi di applicazione
| Ricorrenza | , | soglia | confronto | caso | risultato |
|---|---|---|---|---|---|
| (MAX) | , | , | 1 | ||
| (merge sort) | , | 2 | |||
| (ricerca binaria) | , | 2 | |||
| (ARB) | , | 1 | |||
| (tipo Strassen) | , | 1 | |||
| , | 2 | ||||
| , | , reg. | 3 | |||
| , | , reg. | 3 |
I casi MAX e merge sort, in dettaglio: per MAX , , ; la soglia è e con si ha : Caso 1, . Per merge sort : Caso 2, . L'algoritmo per le matrici ARB del compito del 19 giugno 2024 (prodotto con tre moltiplicazioni ricorsive) ha : Caso 1.
Regolarità nei due Casi 3 della tabella: per si ha , quindi ; per si ha , quindi .
Un controllo numerico (rapporto tra esatto per e la soglia, che tende a una costante):
from functools import lru_cache
def rapporto(a, b, w, T0, k, scala):
@lru_cache(None)
def T(n): return T0 if n == 1 else a * T(n // b) + w(n)
n = b**k
return T(n) / scala(n)
# 3T(n/4) + n^2, T(1) = 1: T(n) / n^2 -> 16/13 = 1.2307...
print(rapporto(3, 4, lambda n: n*n, 1, 10, lambda n: n*n))
# 7T(n/2) + n^2: T(n) / n^(log2 7) -> 7/3 = 2.333...
import math
print(rapporto(7, 2, lambda n: n*n, 1, 20, lambda n: n**math.log2(7)))Uso non corretto del MT
Va usato verificando sempre le condizioni dei tre casi. Per : soglia ; poiché i primi due casi non si applicano. Per il Caso 3 servirebbe per un , ma : la condizione non è soddisfatta e il MT non si può applicare. Applicarlo comunque (Caso 3) darebbe , che è errato. Lo si vede srotolando con (formula generale, , ): con il cambio di indice (per , va da a ) e la somma di Gauss (SommatorieIl simbolo di sommatoria, le sue proprietà (linearità, additività, cambio di indice) e le somme notevoli di Gauss e geometrica.Sommatorie →): un ordine di grandezza più grande (di un fattore ) di quello ottenuto con il MT usato male. Verifica: per si ha , .
Errori comuni
- Applicare il Caso 3 con maggiore della soglia di un fattore solo logaritmico (come contro ): serve .
- Dimenticare di verificare la regolarità nel Caso 3, oppure verificarla con un .
- Confondere e (la soglia è , non ).
- Applicare il MT a ricorrenze con sottoistanze di taglie diverse, come : servono un limite superiore con taglie uguali (Esercizio - ricorrenza con parti intere, Master Theorem e induzione parametrica (simulazione d'esame 2025-26, es. 1)) o la formula generale.
- Usare la scrittura , senza arrotondamenti, al di fuori del MT.
Domande d'esame
- Enunciare il Master Theorem e dire che cosa domina il costo nei tre casi. Risposta: confronto tra e ; Caso 1 foglie, Caso 2 tutti i livelli ugualmente (e un fattore ), Caso 3 radice (istanza principale).
- Dare l'ordine di grandezza di . Soglia ; e regolarità con : Caso 3, .
- Si può applicare il MT a ? Qual è la soluzione? No (né Caso 2 né 3: non è né ); srotolando .
Versione ripasso
- Ricorrenza: , , intero, non decrescente, ; soglia (da 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 →: ).
- Caso 1: (foglie dominano; somma ). Caso 2: (ogni livello costa ). Caso 3: e regolarità , (dalla regolarità , somma ; ).
- Prova: / estesi a tutti gli prendendo , dei rapporti iniziali. Se , caso 1 dà solo .
- Estensione: valido con , , e arbitrari; per applicarlo si scrive (solo per il MT).
- Non esaustivo: non rientra (il confronto deve essere per potenza ). Per polinomi la regolarità vale con .
- Esempi: ; ; ; ; ; ; (); ().
- Uso scorretto: : nessun caso; srotolando (il caso 3 darebbe, erroneamente, ).
- Errori tipici: caso 3 con differenza solo logaritmica; regolarità non verificata; scambiato con ; MT con sottoistanze di taglia diversa; scrittura senza arrotondamenti fuori dal MT.
- Passi della prova, caso 1: , usando . Caso 3: induzione su per (regolarità con ).
- Come si applica: (1) leggere , , ; (2) soglia ; (3) confrontare gli esponenti se : caso 1, caso 2, caso 3; (4) nel caso 3 trovare con . Regolarità polinomiale: .
- Significato per il progetto: caso 1 domina il lavoro alle foglie (ridurre le sottoistanze, come Strassen: Algoritmo di Strassen e ibridazioneStrassen calcola il prodotto n x n con 7 chiamate ricorsive invece di 8, usando 10 somme/sottrazioni nel divide e 8 nel conquer: T(n) = 7T(n/2) + (9/2)n^2, Theta(n^(log2 7)) con soluzione esatta 7n^(log2 7) - 6n^2; la costante 7 è più che tripla di quella dell'iterativo (2) e Strassen batte l'iterativo solo da n = 655 (per le potenze di 2, da 1024). L'ibridazione cambia il caso base (iterativo per n <= n0): costo n^(log2 7)(2n0+5)/n0^(log2 7 - 2) - 6n^2, minimo per n0 = 8 con costante ~3.92.Algoritmo di Strassen e ibridazione →); caso 3 domina la radice; caso 2 tutti i livelli ugualmente (cercare un'altra sottostruttura).
- Controesempio (nessun caso si applica): , , : (cambio , SommatorieIl simbolo di sommatoria, le sue proprietà (linearità, additività, cambio di indice) e le somme notevoli di Gauss e geometrica.Sommatorie →); , .
- Caso 2, passo chiave: non dipende da : ogni livello costa lo stesso e i livelli sono . Caso 3: dà , la soglia è dominata da .
- Tabella: (caso 2, soglia ); (); (caso 1).
- Domande tipiche: enunciato e significato dei tre casi; (, caso 3); applicabilità a (no, ).
Esercizi su questo argomento
- Esercizio - algoritmo di Strassen sulle matrici supercircolanti (esercizi su supercircolanti e circolanti, es. SC 6)
- Esercizio - algoritmo ibrido con soglia ottima e confronto con la versione ricorsiva (compito del 4 settembre 2024, es. 1)
- Esercizio - algoritmo ibrido e valore ottimo della soglia (compito del 27 gennaio 2025, es. 1)
- Esercizio - elemento (h,k) di una matrice supercircolante (esercizi su supercircolanti e circolanti, es. SC 5)
- Esercizio - matrici ARB, prodotto con tre chiamate ricorsive (compito del 19 giugno 2024, es. 1)
- 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 complesse, ricorrenza e induzione parametrica (compito del 8 luglio 2024, es. 1)
- Esercizio - ricorrenza con parti intere, Master Theorem e induzione parametrica (simulazione d'esame 2025-26, es. 1)
Teoria collegata
- Algoritmo di Strassen e ibridazione
- Esponenziazione veloce per quadrature successive
- Fast Fourier Transform - algoritmo ricorsivo e trasformata inversa
- Induzione parametrica - limitazioni esatte delle ricorrenze
- Matrici circolanti e supercircolanti - algoritmi divide and conquer
- Prodotto di matrici - algoritmo iterativo e ricorsivo a blocchi