Soit le pire temps d'exécution d'un problème sur une entrée de taille n . Faisons un peu bizarre le problème en fixant f ( n ) = n 2 pour n = 2 k mais f ( n ) = n pour n = 2 k .
Alors, quelle est la limite inférieure du problème? La façon dont je l'ai compris n'est que la borne inférieure de . Mais nous savons que f ( n ) = Ω ( n 2 ) implique qu'il existe une constante k , n 0 telle que pour tout n > n 0 , f ( n ) > k n 2 , ce qui n'est pas vrai. Il semble donc que l'on ne puisse dire que f ( n ) = Ω ( n ). Mais généralement, nous appellerons le problème a une limite inférieure de , non?
En supposant que , ce qui signifie qu'il existe une constante k , n 0 telle que pour tout n > n 0 , g ( n ) > k n 2 . Supposons également qu'un problème ait le temps d'exécution g ( n ) . Si nous pouvons réduire ce problème pour tous les nombres premiers n à un autre problème (avec la même taille d'entrée), pouvons-nous dire que le temps d'exécution de l'autre problème a une borne inférieure de Ω ( n ?
Réponses:
La bonne définition de est qu'il existe certains k > 0 tels que pour infiniment n , f ( n ) ≥ k n 2 . La définition infiniment fréquente des limites inférieures gère vos problèmes et comment nous les utilisons dans la pratique.f(n)=Ω(n2) k>0 n f(n)≥kn2
J'ai écrit un article à ce sujet en 2005.
Certains manuels ont cette bonne définition, d'autres non.
la source
Avec la définition de Knuth , vous ne pouvez affirmer que . Comme vous le constatez, cela n'est pas intuitif et se produit pour les fonctions que Vitányi et Meertens appellent «sauvages». Ils proposent de définirf(n)∈Ω(n)
(C'est la même chose que la définition de Lance.) Avec cette définition .f(n)∈Ω(n2)
la source
Je ne connais pas le plus utilisé, mais je crois que je connais le plus ancien usage (pour l'informatique de toute façon).
Dans l'article de 1965 de Hartmanis & Stearns "Sur la complexité de calcul des algorithmes", le corollaire 2.1 est:
Corollary 2.2 is the reciproral of the above and uses limit supremum, but still has these requirements. I guess as algorithms got more complex by the years, it is possible that the requirements have been relaxed.
la source
Je pense que nous devons distinguer deux choses:
Pour les fonctions, lorsque nous fixons un ordre, la définition de limite inférieure / supérieure en découle. Si la relation d'ordre est une majorisation asymptotique (en ignorant les facteurs constants)
alors la définition est la définition habituelle deO et Ω . Les deux sont largement utilisés dans d'autres domaines comme la combinatoire.
But when we talk about a lowerbound for a problem (an algorithm) what we really want to say is that the problem requires certain amount of resources (for running the algorithm solving the problem). Often the complexity classes are parametrized by functions likeTime(t(n)) , and we simple say that the problem is lower bounded by a function, but this only works for nice functions (e.g. the running time of the algorithm is monotone, etc.). What we want to say in these cases is that we need n2 running time to solve the problem, i.e. less than n2 running time is not sufficient, which formally becomes Lance's definition that the running time of the algorithm is not in o(t(n)) .
la source