J'essaie de trouver la relation de récurrence pour l'algorithme de Stein (algorithme GCD binaire), mais ma capacité à la tracer n'est pas à la hauteur.Quelle est la pire entrée de l'algorithme de Stein?
Je suis complètement déconcerté par les chemins multiples et les appels récursifs, ainsi que le fait que nous traitons le nombre total de bits pour représenter nos valeurs plutôt que les valeurs elles-mêmes.
est ici l'algorithme:
stein(u, v):
if either of u or v are 0: return their sum.
if either of u or v are 1: return 1.
if both u and v are even: return 2 * stein(u/2, v/2)
if u is even and v is odd: return stein(u/2, v)
if u is odd and v is even: return stein(u, v/2)
if both u and v are odd: return stein(larger-smaller/2, smaller)
J'essaie de trouver la relation de récurrence T (n) où n est le nombre total de bits nécessaires pour représenter u et v Je pense que la première étape ici. pour moi devrait être en train de travailler quand la pire des performances se produit.
Je pense que chaque opération de division réduit le nombre de bits de 1, mais c'est à peu près le maximum que je comprends jusqu'à présent.
J'ai essayé de tracer l'algorithme mais en vain. J'ai aussi lu la section pertinente de Knuth Vol. 2 mais je pense que c'est un peu en dehors de la portée actuelle de ma compréhension parce que cela n'avait pas beaucoup de sens pour moi.
2^n est toujours pair. Vous voulez quelque chose comme v '= v * 2 + 3 –
@ Jean-BernardPellerin J'ai négligé que la soustraction coûte O (n). Avec cette observation, ce cas est définitivement le pire et vous avez raison. – Patrick87