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=0n≥1
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(2⌊log2n⌋)≤T(n)≤T(2⌈log2n⌋).
, 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)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)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′,T′′fcg,Cg