Perché c'è la condizione di regolarità nel teorema principale?


15

Ho letto Introduzione agli algoritmi di Cormen et al. e sto leggendo la dichiarazione del teorema del Maestro a partire da pagina 73 . Nel caso 3 esiste anche una condizione di regolarità che deve essere soddisfatta per usare il teorema:

... 3. Se

f(n)=Ω(nlogba+ε)

per qualche costante e seε>0

     [questa è la condizione di regolarità]af(n/b)cf(n)

per qualche costante e per tutti sufficientemente n grandi , quindi ..c<1n

Qualcuno può dirmi perché è necessaria la condizione di regolarità? Come fallisce il teorema se la condizione non è soddisfatta?


puoi scrivere qual è il caso e qual è la condizione normativa?

3
Non ho una risposta definitiva per te, ma sembra che se la condizione di regolarità non regge, allora i sottoproblemi richiedono sempre più tempo più sono piccoli, quindi ottieni una complessità infinita.

Non sono sicuro che la condizione di regolarità sia necessaria per la conclusione del teorema, ma penso che sia necessario per la dimostrazione usata. Con la condizione di regolarità hai una prova piuttosto semplice, senza, sarebbe almeno peloso.

Risposte:


10

Non una prova rigorosa, ma una spiegazione "dalla cima della mia testa".

Immagina la ricorrenza come un albero. Il terzo caso riguarda lo scenario in cui il nodo radice domina asintoticamente il tempo di esecuzione, ovvero la maggior parte del lavoro viene svolto in un nodo misero sopra l'albero di ricorrenza. Quindi il tempo di esecuzione è Θ ( f ( n ) )aT(n/b)+f(n)Θ(f(n)) .

Per essere sicuro che il root faccia effettivamente più lavoro, è necessario

.af(n/b)cf(n)

Ciò dice che (la quantità di lavoro svolto nella radice) deve essere almeno pari alla somma del lavoro svolto nei livelli inferiori. (La ricorrenza è chiamata a volte su n / bf(n)an/b dell'input.)

Ad esempio per la ricorrenza il lavoro al livello sotto la radice è un quarto più grande e fatto solo due volte ( n / 4 + n / 4 ) contro n, quindi la radice domina .T(n)=2T(n/4)+n(n/4+n/4)n

Ma cosa succede se la funzione non soddisfa la condizione di regolarità? Ad esempio invece di n ? Quindi il lavoro svolto ai livelli inferiori potrebbe essere più grande del lavoro svolto nella radice, quindi non si è certi che la radice domini.cos(n)n


3
Ho usato una formattazione migliore per il tuo testo di matematica. Puoi fare clic sul link "modificato" e vedere cosa ho fatto.
Juho,

7

a=1b=2

T(2n)=k=0nf(2k).
f(n)=Ω(nϵ)ϵ>0f(n/2)(1δ)f(n) (for some δ>0). You get the regularity condition from the proof, i.e. it's a proof-generated concept. While the regularity condition isn't necessary (consider the example given on Wikipedia, f(n)=n(2cosn)), you can't drop it completely, as the following example demonstrates. Consider
f(2n)=22log2n>22log2n1=2n/2.
Let n=2m+11. Then
T(2n)=k=0mt=2k2k+1122k=k=0m22k+k=Θ(22m+m),f(2n)=22m.
So it's not true that T(2n)=Θ(f(2n)).

There is a more general theorem, Akra-Bazzi, in which the regularity condition is replaced by an explicit quantity that comes into the result.


Sorry for resuming this old answer. Could you clarify why your function f violates the regularity condition?
Maiaux

Sometimes f(n/2)=f(n).
Yuval Filmus
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.