Les trois cas du théorème maître auxquels vous faites référence sont prouvés dans l' introduction aux algorithmes par Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein (2e édition, 2001).
Il est correctement observé que la récurrence en question se situe entre le cas 2 et le cas 3. C'est-à-dire que croît plus vite que n mais plus lentement que n 1 + ε pour tout ε > 0 .f(n)=nlognnn1+εε>0
Cependant, le théorème peut être généralisé pour couvrir cette récurrence. Considérer
Cas 2A:
Considérons pour certains k ≥ 0 .f(n)=Θ(nlogbalogkbn)k≥0
Ce cas se réduit au cas 2 lorsque . Il est intuitivement clair que le long de chaque branche de l'arbre de récurrence f ( x ) est ajouté Θ ( log b n ) fois. Un croquis d'une preuve plus formelle peut être trouvé ci-dessous. Le résultat final est quek=0f(x)Θ(logbn)
.
T(n)=Θ(nlogbalogk+1bn)
Dans l' introduction aux algorithmes, cette déclaration est laissée en exercice.
Applying this statement to the recurrence in question we finally get
T(n)=Θ(n⋅log2n).
More details on the Master Theorem can be found in the excellent (imho) Wikipedia page.
As @sdcvvc points in the comments to prove that Case 3 does not apply here one can invoke L'Hospital's rule that says that
limx→cf(x)g(x)=limx→cf′(x)g′(x)
for any functions
f(x) and
g(x) differentiable in the vicinity of
c. Applying this to
f(n)=nlogn and
g(n)=n1+ε one can show that
logn∉Θ(n1+ε).
Sketch of the Proof of the Master Theorem for Case 2A.
Il s'agit d'une reproduction de parties de la preuve d' Introduction aux algorithmes avec les modifications nécessaires .
Nous prouvons d'abord le lemme suivant.
Lemme A:
g(n)=∑j=0logbn−1ajh(n/bj)
where
h(n)=nlogbalogkbn. Then
g(n)=nlogbalogk+1bn.
Proof:
Substituting the h(n) into the expression for g(n) one can get
g(n)=nlogbalogkbn∑j=0logbn−1(ablogba)j=nlogbalogk+1bn.
QED
If n is an exact power of b given a recurrence
T(n)=aT(n/b)+f(n),T(1)=Θ(1)
one can rewrite it as
T(n)=Θ(nlogba)+∑j=0logbn−1ajT(n/bj).
Substituting
f(n) with
Θ(nlogbalogkbn), moving
Θ outside and applying Lemma A we get
T(n)=Θ(nlogbalogk+1bn).
Generalizing this to an arbitrary integer n that is not a power of b is beyond the scope of this post.