Je complexités comprends que le temps d'un algorithme T(n)
peut être limitée par O(g(n))
par la définition:Je suis vraiment confus au sujet du temps
T(n) is O(g(n)) iff there is a c > 0, n0 > 0, such that for all n >= n0:
pour chaque entrée de la taille n,
A prend au plus c * g(n)
étapes. T(n)
est le temps le plus long de toutes les entrées de taille n.
Cependant, ce que je ne comprends pas est la définition de Ω(g(n))
. La définition est que pour certains entrée de taille n, A prend au moins c * g(n)
étapes.
Mais si c'est la définition pour Ω
alors je ne pourrais pas trouver une limite inférieure pour tout algorthm qui est la même que la limite supérieure? Par exemple, si le tri prend dans le pire des cas O(nlogn)
alors ne serais-je pas en mesure de montrer facilement Ω(nlogn)
ainsi que comment il doit y avoir au moins une mauvaise entrée pour toute taille n qui prendrait nlogn
étapes? Supposons que nous parlons de heapsort
. Je ne suis pas vraiment sûr de ce qui me manque ici parce que chaque fois que l'on m'apprend un nouvel algorithme, le temps pour une certaine méthode est soit Ɵ(g(n)) or O(g(n))
, mais aucune explication n'est fournie pour savoir pourquoi c'est Ɵ or O
.
J'espère que ce que j'ai dit était assez clair sinon demandez à ce que vous avez mal compris. J'ai vraiment besoin de cette confusion éclaircie. Je vous remercie.
damn vous la complexité! – FUD
Je travaille dans l'industrie du logiciel depuis 10 ans et la seule chose qui ait jamais été faite est la notation O ... – Bill
Cette définition de "pour une entrée de taille n" compte aussi pour Big-O, si je vous avez raison. Cela signifie fondamentalement que pour un nombre bas n il pourrait être au-dessus/en dessous de vos limites, on suppose généralement un point n_0 après quoi il aura toujours raison. Cependant, vous n'aurez probablement besoin que des autres limites tout en étudiant, Big-O est le plus important et celui que vous verrez tout au long de votre vie. – jorey