Si vous êtes un peu plus prudent dans votre solution à 3.5, la différence sera un peu plus claire. Votre première ligne
T(n) <= n/4 (lg n)/4 + 3n/4 (3 lg n)/4 + n
n'est pas tout à fait raison. Tout d'abord, l'hypothèse inductive est qu'il existe une constante C
telle que
T(n) <= C n log n
donc vous devriez probablement garder cette C
autour. Deuxièmement, vous sautez l'étape où vous supprimez la fonction de plancher. Ce que vous vraiment savoir est (en ignorant le C
constant de simplicité) est
T(n) <= floor(n/4) lg (floor(n/4)) + floor(3n/4) lg (floor(3n/4)) + n
Alors, comment voulez-vous prendre soin du plancher? Eh bien, floor(x) <= x
; mais qu'en est-il lg(floor(x))
(qui apparaît deux fois)? La clé ici est que lg
est une fonction croissante, donc lg(floor(x)) <= lg(x)
aussi. Alors
T(n) <= n/4 lg(n/4) + 3n/4 lg(3n/4) + n
nettoyer Maintenant avec quelques propriétés de logarithmes (vous sera besoin d'utiliser cette indication sur lg 3
) et terminer votre étape inductive. OK, donc sachant cela, quelle est la différence avec 3.6? Eh bien, maintenant vous avez la fonction de plafond au lieu de la fonction de plancher, donc vous ne pouvez pas l'ignorer. Mais
ceiling(x) <= x + 1
afin que vous puissiez travailler de même, certains facteurs + 1
supplémentaires qui traînent. Essayez d'utiliser leurs conseils, et ça devrait aller.
Bonne réponse. C'est autant de soutien que nous pouvons donner. –
Merci. J'essayais de montrer les points clés, mais laissez les détails pour l'affiche. Si vous pensez que je devrais donner plus ou moins de détails, s'il vous plaît faites le moi savoir. –