Evidemment, il y a chaînes binaires de longueur . Pour parcourir le binaire, un algorithme doit visiter chaque nœud une fois, c'est-à-dire qu'il doit faire
étapes. 2 n 2 n ∑ i = 0 2 i = 2 2 n + 1 - 1 = O ( 4 n )4n2 n
∑i = 02 n2je= 22 n + 1- 1 = O ( 4n)
Prenons un algorithme récursif qui traverse l'arbre que vous avez décrit, mais compte le nombre de uns et de zéros sur son chemin, c'est-à-dire qu'il ne traversera que la bonne partie de l'arbre.
Mais combien de ces chaînes binaires avec 0 et 1 existe-t-il? Nous choisissons 1 pour nos chaînes de longueur et utilisons la formule de Stirling à l'étape 2:
n n 2 n ( 2 nnnn2 n
( 2nn) =( 2 n ) !( n ! )2= 4nπn---√( 1 + O ( 1 / n ) )
EDIT
Grâce aux commentaires de Peter Shor, nous pouvons également analyser le nombre d'étapes nécessaires au deuxième algorithme, qui compte les 1 et les 0. Je cite son commentaire ci-dessous:
Nous voulons trouver toutes les séquences binaires avec exactement 0 et 1. Nous traversons l'arbre binaire où chaque nœud est une séquence d'au plus 0 et 1. Nous n'avons pas besoin de visiter un nœud avec plus de 0 ou plus de 1. combien de nœuds devons-nous visiter? Il y a chaînes avec 0 et 1. En sommant cela sur tout donne . Maintenant, nous devons visiter chacun de ces nœuds à un coût moyen constant par nœud. Nous pouvons le faire en visitant chaque enfant gauche en premier et chaque enfant droit en second.n 2 n n nnn2 nnn iji,j≤n∑n i = 0 ∑n j = 0( i+ jje)jeji , j ≤ n∑ni = 0∑nj = 0( i+ jje) = ( 2n+2n + 1) -1
En utilisant à nouveau la formule de Stirling, nous obtenons
comme durée d'exécution du nouvel algorithme.
( 2n+2n + 1) -1=4n + 11n + 1-----√( 1 + O ( 1 / n ) ) - 1 = O ( 4nn--√)