Pourquoi y a-t-il la condition de régularité dans le théorème maître?

15

J'ai lu Introduction aux algorithmes de Cormen et al. et je lis l'énoncé du théorème maître à partir de la page 73 . Dans le cas 3, il existe également une condition de régularité qui doit être satisfaite pour utiliser le théorème:

... 3. Si

f(n)=Ω(nlogba+ε)

pour une constante et siε>0

     [c'est la condition de régularité]af(n/b)cf(n)

pour une constante et pour tout n suffisamment grand , alors ..c<1n

Quelqu'un peut-il me dire pourquoi la condition de régularité est nécessaire? Comment le théorème échoue-t-il si la condition n'est pas satisfaite?

Raphael
la source
pouvez-vous écrire quel est le cas et quelle est la condition réglementaire?
3
Je n'ai pas de réponse définitive pour vous, mais il semble que si la condition de régularité ne tient pas, alors les sous-problèmes prennent de plus en plus de temps, plus ils sont petits, vous obtenez donc une complexité infinie.
Je ne suis pas sûr que la condition de régularité soit nécessaire pour que la conclusion du théorème soit vraie, mais je pense que c'est nécessaire pour la preuve utilisée. Avec la condition de régularité, vous avez une preuve assez simple, sans quoi elle serait au moins velue.

Réponses:

10

Pas une preuve rigoureuse, mais une explication "du haut de ma tête".

Imaginez la récurrence comme un arbre. Le troisième cas couvre le scénario où le nœud racine domine le temps d'exécution de manière asymptotique, c'est-à-dire que la plupart du travail est effectué dans un nœud maigre au sommet de l'arbre de récurrence. Le temps de course est alors Θ ( f ( n ) ) .uneT(n/b)+F(n)Θ(F(n))

Pour vous assurer que la racine fait plus de travail, vous avez besoin du

.uneF(n/b)cF(n)

Cela signifie que (la quantité de travail effectuée à la racine) doit être au moins aussi grande que la somme du travail effectué aux niveaux inférieurs. (La récurrence est appelée une fois sur n / b de l'entrée.)F(n)unen/b

Par exemple, pour la récurrence le travail au niveau en dessous de la racine est un quart aussi grand et n'est effectué que deux fois ( n / 4 + n / 4 ) contre n de sorte que la racine domine .T(n)=2T(n/4)+n(n/4+n/4)n

Mais que se passe-t-il si la fonction ne remplit pas la condition de régularité? Par exemple, au lieu de n ? Ensuite, le travail effectué aux niveaux inférieurs peut être plus important que le travail effectué à la racine, vous n'êtes donc pas certain que la racine domine.cos(n)n

Le chat unfun
la source
3
J'ai utilisé une mise en forme plus agréable pour votre texte mathématique. Vous pouvez cliquer sur le lien "modifié" et voir ce que j'ai fait.
Juho
7

Soit et b = 2 , de sorte que T ( 2 n ) = n k = 0 f ( 2 k ) . Pour que le cas 3 s'applique, nous avons besoin de f ( n ) = Ω ( n ϵ ) (pour certains ϵ > 0 ) et de la condition de régularité, f ( n / 2 ) ( 1 - δ ) fune=1b=2

T(2n)=k=0nF(2k).
F(n)=Ω(nϵ)ϵ>0 (pour certains δ > 0 ). Vous obtenez la condition de régularité de la preuve, c'est-à-dire que c'est un concept généré par la preuve. Bien que la condition de régularité ne soit pas nécessaire (considérez l'exemple donné sur Wikipedia, f ( n ) = n ( 2 - cos n ) ), vous ne pouvez pas la supprimer complètement, comme le montre l'exemple suivant. Considérons f ( 2 n ) = 2 2 log 2 n > 2 2 log 2 n -F(n/2)(1-δ)F(n)δ>0F(n)=n(2-cosn) Soitn=2m+1-1. Alors T(2n)= m k = 0 2 k + 1 - 1 t = 2 k 2 2 k = m k = 0 2 2 k +k=Θ(2 2 m +
F(2n)=22Journal2n>22Journal2n-1=2n/2.
n=2m+1-1 Il n'est donc pas vrai que T ( 2 n ) = Θ ( f ( 2 n ) ) .
T(2n)=k=0mt=2k2k+1-122k=k=0m22k+k=Θ(22m+m),F(2n)=22m.
T(2n)=Θ(F(2n))

Il existe un théorème plus général, Akra-Bazzi, dans lequel la condition de régularité est remplacée par une quantité explicite qui entre dans le résultat.

Yuval Filmus
la source
Désolé de reprendre cette ancienne réponse. Pourriez-vous préciser pourquoi votre fonction f viole la condition de régularité?
Maiaux
F(n/2)=F(n)