Dans CLRS (aux pages 49-50), quelle est la signification de l'énoncé suivant:
n'est qu'une seule fonction anonyme (de ), mais n'est pas la même chose que, qui n'a pas vraiment d'interprétation. "
asymptotics
landau-notation
kesari
la source
la source
Réponses:
Depuis1+2+⋯+n=O(n2) , il est tentant de suggérer que O(1)+O(2)+⋯+O(n)=O(n2) ... mais ce n'est en fait pas valable. La raison en est qu'il peut y avoir une constante différente pour chaque terme dans la somme.
Un exemple
Laissez-moi vous donner un exemple. Considérez les sommesS(1)=12 , S(2)=12+22 , S(3)=12+22+32 , S(4)=12+22+32+42 , etc. Notez que12∈O(1) , 22∈O(2) , 32∈O(3) , 42∈O(4) , et ainsi de suite pour chaque terme de la somme. Par conséquent, il serait raisonnable d'écrireS(j)=12+⋯+j2 sous la forme S(j)=O(1)+⋯+O(j) . Pouvons-nous donc conclure queS(j)=O(j2) ? Nan. En réalité,S(n)=n(n+1)(2n+1)/6 , donc S(n)=Θ(n3) .
Si cela n'aide pas, essayons le développement mathématique plus précis suivant:
Une formalisation
Rappelons que l'interprétation de, disons,O(n2) c'est qu'il s'agit d'un ensemble de fonctions non négatives f(n) (à savoir, l'ensemble des fonctions f(n) de telle sorte qu'il existe des constantes c≥0,d≥0 tel que f(n)≤c⋅n2 pour tous n≥d ).
Au plus près nous pouvons arriver à une interprétation deO(1)+O(2)+⋯+O(n) c'est que c'est l'ensemble des fonctions de la forme f1(n)+f2(n)+⋯+fn(n) tel que f1(n)∈O(1) , f2(n)∈O(2) , ..., fn(n)∈O(n) .
Mais maintenant, les constantes pour chaquefi peut être différent. Ainsi, chaquefi est une fonction non négative fi de telle sorte qu'il existe des constantes ci≥0,di≥0 avec fi(n)≤ci⋅i pour tous n≥di .
Maintenant, étant donné cela, que pouvons-nous direg(n)=f1(n)+f2(n)+⋯+fn(n) ? Pas très utile. Nous savons qu'il existe une constanted=max(d1,d2,…,dn) tel que g(n)≤c1⋅1+c2⋅2+⋯+cn⋅n pour tous n≥d . Maintenant, que pouvons-nous dire de cette somme? Eh bien, la réponse est que nous ne pouvons rien dire du tout. Il pourrait être arbitrairement important. Il est tentant de laisserc=max(c1,c2,…,cn) et dis ça g(n)≤c⋅(1+2+⋯+n)≤c⋅n2=O(n2) ... mais ce n'est pas vraiment correct, car nous avons besoin d'une seule valeur constante de c qui fonctionne pour tous n et la valeur max(c1,c2,…,cn) est fonction de n , pas une constante.
Donc, il pourrait ne pas y avoir de constantec tel que g(n)≤c⋅(1+2+⋯+n) ; il pourrait ne pas y avoir de constantec tel que g(n)≤c⋅n2 . Rien ne garantit queg(n)∈O(n2) .
Pour plus de lecture
Voir https://math.stackexchange.com/q/86076/14578 et les termes Sums of Landau revisités pour d'autres questions qui traitent de ce problème général.
la source
La raison pour laquelle le commentaire de CLRS prête à confusion est que, techniquement,∑ni=1O(i) est défini commeO(1)+O(2)+…O(n) . Ce qui se passe vraiment, c'est que CLRS abuse de la notation par souci de simplicité:
Au lieu de cela, le CLRS voudrait donc que vous interprétiez∑ni=1O(i) comme ∑ni=1f(i) où la fonction générique f(i)∈O(i) . Par exemple, ils écriraient que∑ni=13i−5 est ∑ni=1O(i) , ou O(n2) .
la source