On dit qu'une fonction f de la variable n est grande-Oh d'une fonction g de la variable n - souvent notée f (n) = O (g (n)), ou f dans O (g) - s'il y a existe un n0 tel que pour tout n supérieur à n0, f (n) < = g (n). Supposons que le temps d'exécution de notre algorithme soit grand - Oh de certaines fonctions g de n. Alors il y a un n0 tel que pour n> n0, l'exécution de notre algorithme est inférieure ou égale à g (n). Choisissons un n '> n0 fixe et considérons ce que cela signifie: cela signifie que sur l'entrée n', notre algorithme est garanti pour se terminer dans les étapes g (n '). Nous devons avoir que g (n ') est un nombre; appelons ça t '. Donc, pour l'entrée n ', notre boucle ne peut pas prendre plus de t étapes. Mais ceci est manifestement faux, puisque - en supposant qu'une itération de boucle entière prenne une étape - la probabilité d'itération pour plus de t étapes est finie mais non nulle (en supposant que le RNG est un vrai RNG). C'est une contradiction, donc notre supposition que le temps d'exécution est grand - Oh de g était faux - c'est-à-dire qu'il n'y a pas de limite supérieure pour l'exécution.
Il est tentant de dire que c'est O (1) en termes de n, puisque la condition de la boucle ne dépend pas de n, mais cela est techniquement incorrect, compte tenu de l'analyse ci-dessus. Il n'y a vraiment pas de limite supérieure ici.
Le RNG génère-t-il des entiers ou des flottants? –
Cela ressemble à des devoirs. Quelles sont vos pensées jusqu'à présent? – Chris