Teorema dell'esperto

Il teorema dell'esperto, noto anche come teorema principale (in inglese master theorem) o teorema del maestro, è un teorema inerente all'analisi degli algoritmi che fornisce una soluzione asintotica ad una famiglia di relazioni di ricorrenza. È stato inizialmente esposto da Jon Bentley, Dorothea Haken, e James B. Saxe nel 1980, dove fu descritto come un metodo unificato per una famiglia di ricorrenze. Il nome di questo teorema è stato popolarizzato dal famoso manuale Introduzione agli algoritmi di Cormen, Leiserson, Rivest e Stein. Non fornisce una soluzione a tutte le possibili relazioni di ricorrenza, ed una sua generalizzazione è il teorema di Akra-Bazzi.

Informalmente, il teorema afferma che, data una relazione di ricorrenza nella forma T(n)=aT(nb)+f(n) con a≥1 e b>1, in alcuni casi si può ottenere una soluzione confrontando f con la funzione nlogba. Se f è asintoticamente polinomialmente più piccola (ovvero più piccola per almeno un fattore polinomiale nε) allora T(n)=Θ(nlogba); se le due funzioni hanno asintoticamente la stessa grandezza allora T(n)=Θ(nlogbalog⁡(n))=Θ(f(n)log⁡(n)); infine, se f è sufficientemente regolare e polinomialmente più grande allora T(n)=Θ(f(n)). Non sono coperti dal teorema i casi in cui f sia asintoticamente più grande o più piccola di nlogba in modo non polinomiale.

Enunciato

Sia data una relazione di ricorrenza T(n) nella forma

T(n)=aT(nb)+f(n),

dove a≥1 e b>1 sono costanti e nb si può interpretare sia come ⌊nb⌋ (parte intera) sia come ⌈nb⌉ (parte intera superiore).

Allora la funzione T(n) è limitata asintoticamente secondo uno dei tre seguenti casi:

  1. se esiste una costante ε>0 tale che f(n)=O(nlogba−ε), allora T(n)=Θ(nlogba);
  2. se f(n)=Θ(nlogba), allora T(n)=Θ(nlogbalogbn);
  3. se esiste una costante ε>0 tale che f(n)=Ω(nlogba+ε) ed esistono una costante 0<c<1 e un intero n0 tali che ∀n≥n0:af(nb)≤cf(n), allora T(n)=Θ(f(n)).

Dimostrazione

Lemma

La somma s(n)=∑i=0logbnaif(nbi) definita su potenze di b, dove a≥1 e b>1 sono costanti e f è non negativa, ha rispettivamente comportamento asintotico:

  1. sotto l'ipotesi del caso 1 del teorema principale, s(n)=Θ(nlogba);
  2. sotto l'ipotesi del caso 2 del teorema principale, s(n)=Θ(nlogbalog⁡bn);
  3. sotto l'ipotesi del caso 3 del teorema principale, se esistono una costante 0<c<1 e un intero n0 tali che ∀n≥n0:af(nb)≤cf(n), allora s(n)=Θ(f(n)).

Dimostrazione

Caso 1

Per il caso 1, l'ipotesi implica

f(nbj)=O((nbj)logba−ε)

che sostituita in s porta a

s(n)=O(∑i=0logbn−1ai(nbi)logba−ε).

Raccogliendo i fattori comuni, semplificando e sommando la serie geometrica troncata risultante, si ha

s(n)=O(nlogba−ε(nε−1bε−1)).

Poiché ε e b sono costanti, si ha

nlogba−ε(nε−1bε−1)=nlogba−εO(nε)=O(nlogba),

e dal fatto che, poiché f(1) è una costante,

s(n)≥alogbnf(1)=f(1)nlogba→s(n)∈Ω(nlogba)

che insieme danno

s(n)∈Θ(nlogba)

da cui la tesi.

Caso 2

Analogamente al caso 1, per il caso 2 l'ipotesi implica

f(nbj)=Θ((nbj)logba)

che sostituita in s porta a

s(n)=Θ(∑i=0logbn−1ai(nbi)logba).

Si procede analogamente al caso precedente, tuttavia la serie troncata ottenuta non è una serie geometrica, ma una serie a termini costanti

nlogba∑i=0logbn−11=nlogbalogbn

da cui la tesi.

Caso 3

Applicando iterativamente i volte l'ipotesi di regolarità del caso 3, si ha

aif(nbi)≤cif(n)

per valori sufficientemente grandi di n. Tale condizione vale dunque per tutti tranne al più un numero costante di termini, per i quali n non è sufficientemente grande. Analogamente ai casi precedenti, si sostituisce nella definizione di s, ottenendo

s(n)≤∑i=0logbncif(n)+O(1)≤f(n)∑i=0∞ci+O(1),

dove O(1) rappresenta i termini precedentemente citati per i quali non vale la disuguaglianza. Sommando la serie geometrica si ha

s(n)=f(n)(11−c)+O(1)=O(f(n))

e poiché la definizione di s contiene f in una somma a termini non negativi, si ha anche s(n)=Ω(f(n)). Combinando le due limitazioni asintotiche, si ha s(n)=Θ(f(n)).

Dimostrazione del teorema principale

Nel caso particolare in cui T sia definita solo su potenze esatte di b, analizzando l'albero della ricorsione relativo alla relazione di ricorrenza si osserva che

T(n)=∑i=0logbnaif(nbi)+Θ(nlogba).

Applicando quindi il lemma dimostrato precedentemente, si ottiene immediatamente la validità del teorema principale nel caso particolare in cui n sia definita su potenze di b. Questo ovviamente non è sufficiente a dimostrare il teorema, ma può essere esteso al caso generale considerando il caso in cui compaiano parti intere superiori o inferiori.

Nel caso di una parte intera superiore, nel considerare l'albero di ricorsione alla chiamata i-esima l'argomento assume la forma

ni={n,i=0,⌈ni−1b⌉,i>0.

Poiché dalla definizione di parte intera superiore si ha ⌈x⌉≤x+1, si ottiene

ni≤nbi+∑i=0i−11bi<nbi+bb−1.

Da ciò si osserva che n⌊logbn⌋=O(1), quindi alla profondità di ricorsione ⌊logbn⌋ il costo del problema è limitato da una costante. Si generalizza quindi la prima equazione per n arbitrario, non più ristretto alle potenze di b

T(n)=∑i=0⌊logbn⌋aif(ni)+Θ(nlogba)

e si può procedere a studiare la somma. Il terzo caso procede in maniera esattamente analoga al terzo caso del lemma. Per il secondo caso, dalla definizione di O-grande e ricordando l'espressione di ni si ha che esiste una costante c>0 e un intero n0 tali che, per n≥n0

f(ni)≤c(nbi+bb−1)logba≤c(nlogbaai)(1+bb−1)logba=O(nlogbaai).

Il limite asintotico ottenuto permette di procedere poi in maniera analoga al caso 2 del lemma. Per il primo caso, in maniera analoga a quanto appena fatto si mostra che

f(ni)=O((nbi)logba−ε)

che permette di procedere poi in maniera analoga al caso 1 del lemma. Questo completa la dimostrazione del teorema principale in caso di parte intera superiore, nel caso della parte intera inferiore la dimostrazione è analoga.

Generalizzazioni

Il secondo caso del teorema principale può essere generalizzato sostituendo solo alla sua ipotesi particolare, f(n)=Θ(nlogbalogkn) per qualche k≥0 e alla tesi T(n)=Θ(nlogbalogk+1n). Come si vede il caso non generale è per k=0.

Il teorema di Akra-Bazzi generalizza il teorema principale, sotto opportune ipotesi, per relazioni di ricorrenza nella forma T(x)=g(x)+∑i=1kaiT(bix+hi(x)).

Esempi

Caso 1

Sia data la seguente relazione di ricorrenza:

TA(n)=9TA(n3)+n.

Si ha a=9, b=3 e f(n)=n. Allora nlogba=nlog39=Θ(n2). Dato che f(n)=O(nlog39−ε) quando ε=1, è possibile applicare il caso 1 del teorema dell'esperto ottenendo la soluzione

TA(n)=Θ(n2).

Caso 2

Sia data ora la relazione di ricorrenza:

TA(n)=TA(2n3)+1,

in cui a=1, b=3/2 e f(n)=1. Essendo nlogba=nlog3/21=Θ(n0)=Θ(1) ed f(n)=1, vale il caso 2 del teorema dell'esperto, che porta alla soluzione TA(n)=Θ(log⁡n).

Caso 3

Infine sia data la relazione di ricorrenza:

TA(n)=3TA(n4)+nlog⁡n,

in cui a=3, b=4 e f(n)=nlog⁡n. Essendo nlogba=nlog43=O(n0,793) ed f(n)=Ω(nlog43+ε), in cui ε≈0,2, il caso 3 del teorema dell'esperto si può applicare solo se vale la condizione di regolarità per f(n). Per n sufficientemente grande si ha 3(n4)log⁡(n4)≤(34nlog⁡n)=cf(n) per c=3/4≤1. Di conseguenza la soluzione della ricorrenza è TA(n)=Θ(nlog⁡n).

Note

  1. ↑ Questo il significato originario del termine master nel nome.
  2. ↑ Jon Louis Bentley, Dorothea Haken e James B. Saxe, A general method for solving divide-and-conquer recurrences, in ACM SIGACT News, vol. 12, n. 3, September 1980, pp. 36-44, DOI:10.1145/1008861.1008865.
  3. ↑ Cormen et al., pp. 94-95.
  4. ↑ Considerando un algoritmo ricorsivo associato alla relazione di ricorrenza, le quantità coinvolte si possono interpretare come:
    • n è la dimensione dell'input;
    • a è il numero di chiamate ricorsive all'algoritmo;
    • nb è la dimensione della chiamata ricorsiva (ovvero la porzione del problema originale rappresentato in ogni sottoproblema);
    • f(n) è la funzione di costo della fase di suddivisione del problema e di ricostruzione della soluzione.
  5. ↑ Cormen et al., p. 94.
  6. ↑ Cormen et al., pp. 100-102.
  7. ↑ Cormen et al., pp. 98-100.
  8. ↑ Cormen et al., pp. 103-106.
  9. ↑ Goodrich & Tamassia, pp. 268-270.

Bibliografia

Voci correlate

  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica