Résolution de la relation de récurrence

8

Je veux prouver que la complexité temporelle d'un algorithme est polylogarithmique dans l'échelle d'entrée.

La relation de récurrence de cet algorithme est , où .T(2n)T(n)+T(na)a(0,1)

Il semble que pour certains dépend de . Mais je ne peux pas prouver cette inégalité. Comment résoudre cette relation de récurrence?T(n)logβnβa

Je veux juste obtenir une polylogarithmique de borne supérieure dans n.

Qiang Li
la source
1
a<1 , je suppose? Avez-vous également vérifié notre question de référence ? Je ne pense pas que le cas spécifique dont vous parlez soit explicitement couvert, mais il existe de nombreuses techniques décrites.
David Richerby
1
Il n'y a pas de théorème "maître" pour ce type à ma connaissance; cf ma question et celle-ci . (cc @DavidRicherby)
Raphael

Réponses:

4

Votre supposition est fausse. En fait, il n'est pas difficile de montrer qu'en supposant pour tout , alors pour tout . En effet, pour que cela tienne, nous avons besoin que pour assez grand, nous aurions ou , qui dure aussi longtemps que , et en particulier pour assez grand .T(n)>0n>0T(n)=Ω(logkn) kn

(1+ak)logkn=logkn+logknalogk(2n),
1+akklognlogn+log2[1+akk1]lognlog2n

Quel est l'ordre de croissance correct de ? Pour essayer de le savoir, écrivez . La récurrence devient alors Pour les grands , nous nous attendrions à ce que soit très proche de , et donc heuristiquement nous nous attendrions à ce que satisfasse . Cette équation semble un peu difficile à résoudre, mais une solution approximative est . En substituant en arrière, nous déduisons que l'ordre de croissance de devrait être quelque chose comme .T(n)S(n)=T(2n)

S(n+1)=S(n)+S(an).
nS(n+1)S(n)S(n)SS(n)=S(an)S(n)=nΘ(logn)T(n)(Journaln)Θ(JournalJournaln)
Yuval Filmus
la source
Il semble que . La limite inférieure ne tient pas. Journalk(2n)=(Journal2+Journaln)k
Qiang Li
@QiangLi Merci d'avoir repéré l'erreur. Cependant, la limite inférieure est maintenue une fois que l'argument est convenablement modifié.
Yuval Filmus