Preuve rigoureuse de la validité de l'hypothèse


20

Le théorème maître est un bel outil pour résoudre certains types de récurrences . Cependant, nous masquons souvent une partie intégrante lors de son application. Par exemple, lors de l'analyse de Mergesort, nous sommes heureusement passés de

T(n)=T(n2)+T(n2)+f(n)

à

T(n)=2T(n2)+f(n)

considérant seulement n=2k . Nous nous assurons que cette étape est valide - c'est-à-dire TΘ(T) - parce que T se comporte "bien". En général, nous supposons n=bk pour b le dénominateur commun.

Il est facile de construire des récurrences qui ne permettent pas cette simplification en utilisant vicious f . Par exemple, au-dessus de la récurrence de T/T avec

f(n)={1,n=2kn,else

produira Θ(n) en utilisant le théorème maître de la manière habituelle, mais il y a clairement une sous-séquence qui grandit comme Θ(nlogn) . Voir ici pour un autre exemple plus artificiel.

Comment rendre cela "bien" rigoureux? Je suis tout à fait certain que la monotonie est suffisante, mais même la simple récurrence de Mergesort n'est pas monotone; il y a une composante périodique (qui est dominée asymptotiquement). Suffit-il d'étudier f , et quelles sont les conditions nécessaires et suffisantes sur f pour garantir le fonctionnement du théorème maître?


Un autre point de vue sur les mêmes résultats est le théorème d'Akra-Bazzi "Sur la solution des équations de récurrence linéaire", Computational Optimization and Applications, 10 (2), 195-210 (1998), ou Drmota et Szpankowski "A Master Theorem for Discrete Divide et conquérir les récurrences ", SODA'11 < dl.acm.org/citation.cfm?id=2133036.2133064 >.
vonbrand

2
Voici un lien vers le document ci-dessus, qui n'est pas derrière un mur payant.
Paresh

1
IIRC ceci est discuté dans CLRS chapitre 4.
Kaveh

@Kaveh Merci pour le pointeur. Pour la plupart, ils appellent cela une «négligence tolérable»; c'est bien dans leur contexte, car ils supposent que vous ne dérivez qu'une hypothèse, qui sera ensuite confirmée par induction. Ils mentionnent les dangers (4.6). En 4.6.2, ils donnent une preuve, mais elle est de haut niveau et ils ne disent pas explicitement quelles restrictions sur doivent être en place. Il semble donc que ce soit quelque chose comme " T tel que les calculs passent", ce qui, je pense, nécessite principalement que f ait une "belle" classe Θ . TTfΘ
Raphael

En général, lorsque vous n'avez pas de tailles similaires, vous pouvez utiliser la méthode Akra – Bazzi qui est la généralisation du théorème maître, bien sûr, comment changer une fonction spécifique en quelque chose qui fonctionne dans ce théorème a besoin d'une petite astuce, et pour quelque chose comme le tri par fusion, c'est ce que les gens utilisent normalement pour prouver la complexité du temps.

Réponses:


10

Tout au long de cette réponse, nous supposons que et T sont non négatifs. Notre preuve fonctionne chaque fois que f = Θ ( g ) pour un g monotone . Cela inclut votre exemple Mergesort, dans lequel f = Θ ( n ) , et toute fonction qui a un taux de croissance polynomial (ou même Θ ( n a log b n ) ).fTf=Θ(g)gf=Θ(n)Θ(nalogbn)

Considérons d'abord le cas où est monotone non décroissant (nous assouplirons cette hypothèse plus tard). Nous nous concentrons sur votre récurrence d'échantillon T ( n ) = T ( n / 2 ) + T ( n / 2 ) + f ( n ) . Cette récurrence nécessite deux cas de base, T ( 0 ) et T ( 1 ) . Nous faisons l'hypothèse que T ( 0 )f

T(n)=T(n/2)+T(n/2)+f(n).
T(0)T(1) , que nous relaxons également plus tard.T(0)T(1)

Je prétends que est monotone non décroissant. Nous prouvons par induction complète que T ( n + 1 ) T ( n ) . Ceci est donné pour n = 0 , donc soit n 1 . Nous avons T ( n + 1 )T(n)T(n+1)T(n)n=0n1 Cela implique que T(2 log 2 n)T(n)T(2 log 2 n). Donc, siT(2

T(n+1)=T((n+1)/2)+T((n+1)/2)+f(n+1)T(n/2)+T(n/2)+f(n)=T(n).
T(2log2n)T(n)T(2log2n).
, nous avons terminé. C'est toujours le cas si la solution pour des puissances de deux est de la forme T ( n ) = Θ ( n a log b n ) .T(2m)=Θ(T(2m+1))T(n)=Θ(nalogbn)

Relâchons maintenant l'hypothèse que . Considérons une nouvelle récurrence T définie exactement de la même manière, seulement T ( 0 ) = T ( 1 ) = min ( T ( 0 ) , T ( 1 ) ) . On peut prouver par récurrence que T ( n ) T ( n )T(0)T(1)TT(0)=T(1)=min(T(0),T(1))T(n)T(n) . De même, nous pouvons définir une nouvelle récurrence satisfaisant T ( 0 ) = T T , puis T ( n ) T ( n ) . En invoquant le théorème maître, nous voyons que T = Θ ( h ) et T = Θ (T(0)=T(1)=max(T(0),T(1))T(n)T(n)T=Θ(h) pour lamêmefonction h , et donc T = Θ ( h ) également.T=Θ(h)hT=Θ(h)

Maintenant relâchons l'hypothèse que est monotone. Supposons que f = Θf pour une fonction monotone g . Ainsi c g ( n ) f ( n ) C g ( n ) pour certains c , C > 0 et n assez grand. Nous supposons pour simplifier que n = 0 ; le cas général peut être traité comme au paragraphe précédent. On définit à nouveau deux récurrences T f=Θ(g)gcg(n)f(n)Cg(n)c,C>0nn=0 en remplaçant f par c g , C g (respectivement). Encore une fois, le théorème maître donnera le même résultat (jusqu'à des multiples constants), qui est également identique (jusqu'à des multiples constants) à ce que nous obtiendrions en résolvant la récurrence d'origine uniquement sur des puissances de deux.T,Tfcg,Cg


1
J'ai enfin pu lire cela de plus près. Bien, merci! Je pensais que je noterais cela pour les futurs lecteurs (parce que je suis tombé dessus): n'est pas une restriction car il n'est faux que pour le super polynôme T et le Le théorème maître ne s'applique pas à cela. T(2m)Θ(T(2m+1))T
Raphael

J'ai essayé d'écrire votre preuve plus en détail et je suis resté coincé à prouver votre dernière phrase, "qui est également identique (...) à ce que nous obtiendrions en résolvant la récurrence originale uniquement sur des puissances de deux". En particulier, nous devons montrer que nous nous retrouvons dans le même cas du théorème maître pour , f et C g . Ce n'est pas un problème pour les cas 1 et 2, mais je ne peux pas montrer l'existence de c < 1 pour le cas 3 (cf la version en CLRS, p94 en 3ème édition). Avez-vous pensé à cela ou avez-vous travaillé avec une version similaire à celle de Wikipedia ? cgfCgc<1
Raphael

C'est une technicité. Si alors le problème disparaît, voir par exemple users.encs.concordia.ca/~chvatal/notes/master.pdf . La fonction g satisfera automatiquement aux conditions. J'imagine que la même chose fonctionne pour f = Θ ( n α log β n ) et ainsi de suite. Alternativement, il suffit d'énoncer cette condition directement sur g plutôt que sur f : il doit exister un g "régulier" satisfaisant f = Θ ( g ) .f=Θ(nα)gf=Θ(nαlogβn)gfgf=Θ(g)
Yuval Filmus

gf:n2ngcgCg

Je pense toujours que c'est une technicité. La condition qui vous inquiète est une condition technique. Pour la plupart des fonctions apparaissant en pratique, la condition est maintenue. Vous demandez la condition la plus générale dans laquelle le croquis de preuve ci-dessus passe. C'est une question intéressante à laquelle je suis trop paresseux pour répondre.
Yuval Filmus
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.