Esercizio - ricorrenza con parti intere, Master Theorem e induzione parametrica (simulazione d'esame 2025-26, es. 1)
In questa pagina 3
Testo (simulazione d'esame 2025-26 di Algoritmi per l'Ingegneria, Ing. Informatica UniPD, seconda parte, esercizio 1, 16 punti). Si consideri la seguente ricorrenza, definita per tutti i valori del parametro intero positivo :
- (a) [4 punti] Si determini una ricorrenza risolvibile con il Master Theorem per una funzione tale che per ogni . Argomentare che la soluzione della ricorrenza proposta soddisfa il requisito.
- (b) [4 punti] Applicando il Master Theorem alla ricorrenza proposta, si trovi un'espressione asintotica per la sua soluzione.
- (c) [8 punti] Utilizzando come guess (in ordine di grandezza) la funzione ottenuta al punto (b), si usi l'induzione parametrica per determinare una limitazione superiore (non asintotica) a .
Teoria usata: 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 →, 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 →, 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 →.
La ricorrenza ha due sottoistanze di taglia diversa ( e ) e arrotondamenti interi: il Master Theorem non si applica direttamente. Il punto (a) la maggiora con una ricorrenza "da Master Theorem", il punto (c) la tratta direttamente con l'induzione parametrica.
(a) La ricorrenza
Poiché , la seconda chiamata ha argomento non più grande della prima: se è non decrescente, si può maggiorarla con una terza chiamata su . Si pone cioè , , (con e arrotondamento per difetto: la forma di Master Theorem estesa).
è non decrescente. Si prova per ogni , per induzione forte. Per i valori sono uguali; per : . Per : perché è uguale a oppure lo supera di (e in quel caso la differenza tra le è per ipotesi induttiva, essendo gli argomenti minori di ), e . (In generale: se , e sono non decrescenti lo è anche la soluzione.)
per ogni , per induzione forte su .
- [B] Per : .
- [HP] per , con .
- [TH] Per gli argomenti e sono e , quindi
(b) Il Master Theorem per
La funzione di soglia è , con . Il lavoro è polinomiale con esponente : per esempio con , La regolarità vale per i lavori polinomiali; esplicitamente , quindi . Siamo nel Caso 3: Quindi . (Numericamente : infatti i livelli costano e .)
(c) Induzione parametrica per
Guess: per ogni .
[B] Per : . Il vincolo più stringente è per :
[HP TH] Si assume per , con ; gli argomenti stanno in . Usando poi e (e ): Dividendo per : . Calcolo: . Quindi
Intersezione. I due vincoli sono e ; il secondo è più stringente (non lo si può evitare con la base). Si sceglie il minimo ammissibile: Se si prendesse il passo fallirebbe: .
Controlli. Per i valori esatti sono (per esempio e ), e vale per e per . Con un programma si è verificato per , e per . La costante è quasi ottima: il massimo di per è , contro : infatti per grande .
from functools import lru_cache
from fractions import Fraction
@lru_cache(None)
def T(n): return 1 if n <= 6 else 2*T(n//4) + T(n//6) + n*n
@lru_cache(None)
def Tp(n): return 1 if n <= 6 else 3*Tp(n//4) + n*n
assert all(T(n) <= Tp(n) for n in range(1, 200000))
assert all(Fraction(T(n)) <= Fraction(72, 61) * n * n for n in range(1, 50000))
print([T(n) for n in range(7, 13)]) # [52, 67, 84, 103, 124, 147]Versione ripasso
Testo. per ; per . (a) da Master Theorem con [4 punti]; (b) [4]; (c) limite superiore non asintotico con induzione parametrica [8].
Teoria: 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 →, 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 →.
- (a) (), . non decrescente (induzione: ). per induzione: base uguale; passo , perché e non decrescente.
- (b) , , soglia ; ; regolarità , : Caso 3, .
- (c) Guess . Base: per , il più stringente : . Passo (con , ): . Il vincolo del passo è più stringente: .
- Controlli: ; contro (costante quasi ottima).
- Errori tipici: maggiorare con senza giustificare la monotonia; dimenticare la regolarità nel Caso 3; prendere (solo base); non maggiorare .