Salta al contenuto
Note per Studenti Esercizio - ricorrenza con parti intere, Master Theorem e induzione parametrica (simulazione d'esame 2025-26, es. 1)

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 nn: T(n)={1n≤62 T ⁣(⌊n/4⌋)+T ⁣(⌊n/6⌋)+n2n>6.T(n) = \begin{cases} 1 & n \le 6 \\ 2\,T\!\left(\lfloor n/4 \rfloor\right) + T\!\left(\lfloor n/6 \rfloor\right) + n^2 & n > 6. \end{cases}

  1. (a) [4 punti] Si determini una ricorrenza risolvibile con il Master Theorem per una funzione T′(n)T'(n) tale che T(n)≤T′(n)T(n) \le T'(n) per ogni n≥1n \ge 1. Argomentare che la soluzione T′(n)T'(n) della ricorrenza proposta soddisfa il requisito.
  2. (b) [4 punti] Applicando il Master Theorem alla ricorrenza proposta, si trovi un'espressione asintotica T′(n)=Θ(f(n))T'(n) = \Theta(f(n)) per la sua soluzione.
  3. (c) [8 punti] Utilizzando come guess (in ordine di grandezza) la funzione f(n)f(n) ottenuta al punto (b), si usi l'induzione parametrica per determinare una limitazione superiore (non asintotica) a T(n)T(n).

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 (⌊n/4⌋\lfloor n/4\rfloor e ⌊n/6⌋\lfloor n/6\rfloor) 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 T′T'

Poiché ⌊n/6⌋≤⌊n/4⌋\lfloor n/6\rfloor \le \lfloor n/4\rfloor, la seconda chiamata ha argomento non più grande della prima: se T′T' è non decrescente, si può maggiorarla con una terza chiamata su ⌊n/4⌋\lfloor n/4\rfloor. Si pone T′(n)={1n≤63 T′ ⁣(⌊n/4⌋)+n2n>6,T'(n) = \begin{cases} 1 & n \le 6 \\ 3\,T'\!\left(\lfloor n/4 \rfloor\right) + n^2 & n > 6, \end{cases} cioè a=3a = 3, b=4b = 4, w(n)=n2w(n) = n^2 (con n0=6n_0 = 6 e arrotondamento per difetto: la forma di Master Theorem estesa).

T′T' è non decrescente. Si prova T′(n)≤T′(n+1)T'(n) \le T'(n+1) per ogni n≥1n \ge 1, per induzione forte. Per n+1≤6n + 1 \le 6 i valori sono uguali; per n=6n = 6: T′(6)=1≤T′(7)=3T′(1)+49=52T'(6) = 1 \le T'(7) = 3T'(1) + 49 = 52. Per n≥7n \ge 7: T′(n+1)−T′(n)=3[T′(⌊(n+1)/4⌋)−T′(⌊n/4⌋)]+(2n+1)≥0,T'(n+1) - T'(n) = 3\bigl[T'(\lfloor (n+1)/4\rfloor) - T'(\lfloor n/4\rfloor)\bigr] + (2n + 1) \ge 0, perché ⌊(n+1)/4⌋\lfloor (n+1)/4\rfloor è uguale a ⌊n/4⌋\lfloor n/4\rfloor oppure lo supera di 11 (e in quel caso la differenza tra le T′T' è ≥0\ge 0 per ipotesi induttiva, essendo gli argomenti minori di nn), e 2n+1>02n + 1 > 0. (In generale: se ss, ff e ww sono non decrescenti lo è anche la soluzione.)

T(n)≤T′(n)T(n) \le T'(n) per ogni n≥1n \ge 1, per induzione forte su nn.

  • [B] Per n≤6n \le 6: T(n)=1=T′(n)T(n) = 1 = T'(n).
  • [HP] T(k)≤T′(k)T(k) \le T'(k) per 1≤k<n1 \le k < n, con n>6n > 6.
  • [TH] Per n>6n > 6 gli argomenti ⌊n/6⌋\lfloor n/6\rfloor e ⌊n/4⌋\lfloor n/4\rfloor sono ≥1\ge 1 e <n< n, quindi T(n)=2T(⌊n/4⌋)+T(⌊n/6⌋)+n2(definizione di T)≤2T′(⌊n/4⌋)+T′(⌊n/6⌋)+n2(HP, percheˊ 1≤⌊n/6⌋≤⌊n/4⌋<n)≤3T′(⌊n/4⌋)+n2(T′ non decrescente e ⌊n/6⌋≤⌊n/4⌋)=T′(n)(definizione di T′).\begin{aligned} T(n) &= 2T(\lfloor n/4\rfloor) + T(\lfloor n/6\rfloor) + n^2 && \text{(definizione di } T) \\ &\le 2T'(\lfloor n/4\rfloor) + T'(\lfloor n/6\rfloor) + n^2 && \text{(HP, perché } 1 \le \lfloor n/6\rfloor \le \lfloor n/4\rfloor < n) \\ &\le 3T'(\lfloor n/4\rfloor) + n^2 && (T' \text{ non decrescente e } \lfloor n/6\rfloor \le \lfloor n/4\rfloor) \\ &= T'(n) && \text{(definizione di } T'). \end{aligned}

(b) Il Master Theorem per T′T'

La funzione di soglia è nlog⁡ba=nlog⁡43n^{\log_b a} = n^{\log_4 3}, con log⁡43=ln⁡3ln⁡4≈0,79\log_4 3 = \frac{\ln 3}{\ln 4} \approx 0{,}79. Il lavoro w(n)=n2w(n) = n^2 è polinomiale con esponente 2>log⁡432 > \log_4 3: per esempio con ε=1\varepsilon = 1, w(n)=n2=Ω(nlog⁡43+1)=Ω(n1,79).w(n) = n^2 = \Omega\bigl(n^{\log_4 3 + 1}\bigr) = \Omega\bigl(n^{1{,}79}\bigr). La regolarità vale per i lavori polinomiali; esplicitamente a w(n/b)=3(n4)2=316 n2=316 w(n)a\,w(n/b) = 3\left(\frac n4\right)^2 = \frac{3}{16}\,n^2 = \frac3{16}\,w(n), quindi c=316<1c = \frac{3}{16} < 1. Siamo nel Caso 3: T′(n)=Θ(w(n))=Θ(n2).T'(n) = \Theta\bigl(w(n)\bigr) = \Theta(n^2). Quindi f(n)=n2f(n) = n^2. (Numericamente T′(n)/n2→1613≈1,2308T'(n)/n^2 \to \frac{16}{13} \approx 1{,}2308: infatti i livelli costano n2(316)ℓn^2\left(\frac3{16}\right)^\ell e ∑ℓ(316)ℓ=1613\sum_\ell \left(\frac3{16}\right)^\ell = \frac{16}{13}.)

(c) Induzione parametrica per T(n)≤d n2T(n) \le d\,n^2

Guess: ∃ d∈R+:T(n)≤d n2\exists\, d \in \mathbb{R}^+ : T(n) \le d\,n^2 per ogni n≥1n \ge 1.

[B] Per 1≤n≤61 \le n \le 6: T(n)=1≤?d n2  ⟺  d≥1n2T(n) = 1 \overset{?}{\le} d\,n^2 \iff d \ge \frac1{n^2}. Il vincolo più stringente è per n=1n = 1: d≥1.d \ge 1.

[HP ⇒\Rightarrow TH] Si assume T(k)≤d k2T(k) \le d\,k^2 per 1≤k<n1 \le k < n, con n>6n > 6; gli argomenti ⌊n/4⌋,⌊n/6⌋\lfloor n/4\rfloor, \lfloor n/6\rfloor stanno in [1,n−1][1, n-1]. Usando poi ⌊n/4⌋≤n/4\lfloor n/4\rfloor \le n/4 e ⌊n/6⌋≤n/6\lfloor n/6\rfloor \le n/6 (e d>0d > 0): T(n)=2 T(⌊n/4⌋)+T(⌊n/6⌋)+n2≤2 d ⌊n/4⌋2+d ⌊n/6⌋2+n2≤2 d n216+d n236+n2 ≤? d n2.\begin{aligned} T(n) &= 2\,T(\lfloor n/4\rfloor) + T(\lfloor n/6\rfloor) + n^2 \\ &\le 2\,d\,\lfloor n/4\rfloor^2 + d\,\lfloor n/6\rfloor^2 + n^2 \\ &\le 2\,d\,\frac{n^2}{16} + d\,\frac{n^2}{36} + n^2 \ \overset{?}{\le}\ d\,n^2. \end{aligned} Dividendo per n2>0n^2 > 0:  d8+d36+1≤d  ⟺  d(1−18−136)≥1\ \frac d8 + \frac d{36} + 1 \le d \iff d\left(1 - \frac18 - \frac1{36}\right) \ge 1. Calcolo: 1−18−136=72−9−272=61721 - \frac18 - \frac1{36} = \frac{72 - 9 - 2}{72} = \frac{61}{72}. Quindi d≥7261≈1,1803.d \ge \frac{72}{61} \approx 1{,}1803.

Intersezione. I due vincoli sono d≥1d \ge 1 e d≥7261d \ge \frac{72}{61}; il secondo è più stringente (non lo si può evitare con la base). Si sceglie il minimo ammissibile: T(n)≤7261 n2∀n≥1.\boxed{T(n) \le \tfrac{72}{61}\,n^2 \quad \forall n \ge 1.} Se si prendesse d=1,1<7261d = 1{,}1 < \frac{72}{61} il passo fallirebbe: 2⋅1,116+1,136+1=1,168>1,1\frac{2\cdot1{,}1}{16} + \frac{1{,}1}{36} + 1 = 1{,}168 > 1{,}1.

Controlli. Per n=7..12n = 7..12 i valori esatti sono T=52,67,84,103,124,147T = 52, 67, 84, 103, 124, 147 (per esempio T(7)=2T(1)+T(1)+49=52T(7) = 2T(1) + T(1) + 49 = 52 e T(12)=2T(3)+T(2)+144=147T(12) = 2T(3) + T(2) + 144 = 147), e 7261n2\frac{72}{61}n^2 vale 57,857{,}8 per n=7n = 7 e 169,9169{,}9 per n=12n = 12. Con un programma si è verificato T(n)≤7261n2T(n) \le \frac{72}{61}n^2 per n<50 000n < 50\,000, e T(n)≤T′(n)T(n) \le T'(n) per n<200 000n < 200\,000. La costante è quasi ottima: il massimo di T(n)/n2T(n)/n^2 per n<200 000n < 200\,000 è 1,1803271{,}180327, contro 72/61=1,18032872/61 = 1{,}180328: infatti per nn grande T(n)≈n2∑ℓ(18+136)ℓ=7261n2T(n) \approx n^2\sum_\ell\left(\frac1{8} + \frac1{36}\right)^\ell = \frac{72}{61}n^2.

python
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. T(n)=1T(n)=1 per n≤6n\le6; T(n)=2T(⌊n/4⌋)+T(⌊n/6⌋)+n2T(n)=2T(\lfloor n/4\rfloor)+T(\lfloor n/6\rfloor)+n^2 per n>6n>6. (a) T′T' da Master Theorem con T≤T′T\le T' [4 punti]; (b) T′=Θ(f)T'=\Theta(f) [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) T′(n)=1T'(n)=1 (n≤6n\le6), T′(n)=3T′(⌊n/4⌋)+n2T'(n)=3T'(\lfloor n/4\rfloor)+n^2. T′T' non decrescente (induzione: T′(n+1)−T′(n)=3[… ]+2n+1≥0T'(n+1)-T'(n)=3[\dots]+2n+1\ge0). T≤T′T\le T' per induzione: base uguale; passo T(n)≤2T′(⌊n/4⌋)+T′(⌊n/6⌋)+n2≤3T′(⌊n/4⌋)+n2T(n)\le2T'(\lfloor n/4\rfloor)+T'(\lfloor n/6\rfloor)+n^2\le3T'(\lfloor n/4\rfloor)+n^2, perché ⌊n/6⌋≤⌊n/4⌋<n\lfloor n/6\rfloor\le\lfloor n/4\rfloor<n e T′T' non decrescente.
  • (b) a=3a=3, b=4b=4, soglia nlog⁡43≈n0,79n^{\log_4 3}\approx n^{0{,}79}; w=n2=Ω(nlog⁡43+1)w=n^2=\Omega(n^{\log_4 3+1}); regolarità 3(n/4)2=316n23(n/4)^2=\frac3{16}n^2, c=316c=\frac3{16}: Caso 3, T′=Θ(n2)T'=\Theta(n^2).
  • (c) Guess T≤dn2T\le dn^2. Base: 1≤dn21\le dn^2 per n=1..6n=1..6, il più stringente n=1n=1: d≥1d\ge1. Passo (con ⌊n/4⌋≤n/4\lfloor n/4\rfloor\le n/4, ⌊n/6⌋≤n/6\lfloor n/6\rfloor\le n/6): T(n)≤2d16n2+d36n2+n2≤dn2  ⟺  d(1−18−136)=6172d≥1  ⟺  d≥7261T(n)\le\frac{2d}{16}n^2+\frac d{36}n^2+n^2\le dn^2\iff d\left(1-\frac18-\frac1{36}\right)=\frac{61}{72}d\ge1\iff d\ge\frac{72}{61}. Il vincolo del passo è più stringente: T(n)≤7261n2\boxed{T(n)\le\frac{72}{61}n^2}.
  • Controlli: T(7..12)=52,67,84,103,124,147T(7..12)=52,67,84,103,124,147; max⁡T/n2=1,180327\max T/n^2=1{,}180327 contro 72/61=1,18032872/61=1{,}180328 (costante quasi ottima).
  • Errori tipici: maggiorare T(⌊n/6⌋)T(\lfloor n/6\rfloor) con T′(⌊n/4⌋)T'(\lfloor n/4\rfloor) senza giustificare la monotonia; dimenticare la regolarità nel Caso 3; prendere d=1d=1 (solo base); non maggiorare ⌊n/4⌋2≤n2/16\lfloor n/4\rfloor^2\le n^2/16.

Teoria collegata