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
à
considérant seulement . Nous nous assurons que cette étape est valide - c'est-à-dire - parce que se comporte "bien". En général, nous supposons pour le dénominateur commun.
Il est facile de construire des récurrences qui ne permettent pas cette simplification en utilisant vicious . Par exemple, au-dessus de la récurrence de / avec
produira 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 . 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 , et quelles sont les conditions nécessaires et suffisantes sur pour garantir le fonctionnement du théorème maître?
Réponses:
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 ) ).f T f=Θ(g) g f=Θ(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
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=0 n≥1
Cela implique que
T(2⌊ log 2 n⌋)≤T(n)≤T(2⌈ log 2 n⌋).
Donc, siT(2
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) T′ T′(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) h T=Θ(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) g cg(n)≤f(n)≤Cg(n) c,C>0 n n=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′,T′′ f cg,Cg
la source