De Wikipedia :
La description d'une fonction en termes de notation du grand O ne fournit généralement qu'une limite supérieure du taux de croissance de la fonction.
D'après cette description, puisque l'algorithme vide nécessite 0 temps d'exécution, il a une performance supérieure de O(0). Cela signifie qu'il est également O(1), qui se trouve être une limite supérieure plus grande.
Modifier :
Plus formellement à partir de CLR (1ed, pg 26) :
Pour une fonction donnée g ( n ), nous désignons O ( g ( n )) l'ensemble des fonctions
O ( g ( n )) = { f ( n ) : il existe des constantes positives c et n 0 telle que 0 ≤ f(n) ≤ cg ( n ) pour tous les n ≥ n 0 }
La performance en temps asymptotique de l'algorithme vide, s'exécutant en temps 0 quelle que soit l'entrée, est donc membre de O (0).
Edit 2 :
Nous sommes tous d'accord pour dire que 0 est O(1). La question est de savoir si 0 est également O(0).
Sur la base des définitions, je dis oui.
De plus, je pense que la question est un peu plus importante que ce que les réponses indiquent. En soi, l'algorithme vide est probablement dénué de sens. Cependant, chaque fois qu'un algorithme non trivial est spécifié, on peut considérer que l'algorithme vide se trouve entre les étapes consécutives de l'algorithme spécifié, ainsi qu'avant et après les étapes de l'algorithme. Il est agréable de savoir que le "néant" n'a pas d'incidence sur les performances de l'algorithme en temps asymptotique.
Edit 3 :
Adam Crume fait ce qui suit réclamation :
Pour toute fonction f ( x ), f ( x ) est dans O( f ( x )).
Preuve : let S soit un sous-ensemble de R et T soit un sous-ensemble de R * (les nombres réels non négatifs) et soit f ( x ): S -> T et c ≥ 1. Alors 0 ≤ f ( x ) ≤ f ( x ) qui conduit à 0 ≤ f ( x ) ≤ cf ( x ) pour tout x∈ S . Par conséquent, f ( x ) ∈ O( f ( x )).
Plus précisément, si f ( x ) = 0 alors f ( x ) ∈ O(0).
27 votes
@abelenky est tombée dans le panneau. ;)
0 votes
Je ne suis pas d'accord pour dire que cela apporte un éclairage sur la question. Un programme qui s'exécute en temps constant pour toute entrée n'est pas la même chose que de se demander quelle est la complexité d'un programme qui tend vers 0 lorsque l'entrée tend vers l'infini.
1 votes
@abelenky Le programme est là ; il est juste si petit que vous ne pouvez pas le voir.
1 votes
Mon Dieu, c'est une question d'une importance capitale pour le monde !
0 votes
@Rejbrand : Parfois, il est bon de comprendre pourquoi le monde tourne comme il le fait.
2 votes
@Michael Foukarakis : Bien sûr, je suis physicien. Mais cela semble plus être une question de définitions, et un cas plutôt trivial en plus.
0 votes
Dans certains langages, le fait de ne pas écrire de code n'implique pas nécessairement qu'il ne prend pas de temps à s'exécuter. Certains compilateurs peuvent toujours insérer des instructions NOP au milieu pour une raison technique quelconque (y compris le remplissage). Ainsi, en pratique, vous ne pouvez pas être certain qu'un segment de code est O(0) plutôt que O(1).