La notation Big O fournit une limite supérieure à une fonction tandis que Big Theta fournit une limite stricte. Cependant, je trouve que la notation Big O est généralement (et informellement) enseignée et utilisée quand elle signifie vraiment Big Theta.
Par exemple, "Quicksort is O (N ^ 2)" peut se transformer en énoncé beaucoup plus fort "Quicksort is Θ (N ^ 2)"
Bien que l'utilisation de Big O soit techniquement correcte, une utilisation plus répandue de Big Theta ne serait-elle pas plus expressive et conduirait à moins de confusion? Y a-t-il une raison historique pour laquelle ce Big O est plus couramment utilisé?
Wikipédia note:
De manière informelle, en particulier en informatique, la notation Big O est souvent autorisée à être quelque peu abusée pour décrire une limite étroite asymptotique où l'utilisation de la notation Big Theta Θ pourrait être plus appropriée dans les faits dans un contexte donné.
Réponses:
Parce que vous êtes généralement intéressé par le pire des cas lors de l'analyse des performances. Ainsi, connaître la limite supérieure est suffisant.
Lorsqu'il s'exécute plus rapidement que prévu pour une entrée donnée - ce n'est pas grave, ce n'est pas le point critique. Ce sont surtout des informations négligeables.
Comme l'a noté @Peter Taylor, certains algorithmes n'ont pas de limite stricte. Voir quicksort par exemple qui est O (n ^ 2) et Omega (n).
De plus, les limites strictes sont souvent plus difficiles à calculer.
Voir également:
la source
L'une des raisons est qu'il existe de nombreux cas où Θ n'est tout simplement pas connu. Par exemple, la multiplication matricielle est O (n ^ 2,376) mais il n'y a pas de limite étroite connue. Bien sûr, pour autant que je sache , il existe une limite stricte pour la multiplication matricielle, mais nous ne connaissons pas sa valeur.
la source