Comment discuter des coefficients en notation big-O

10

Quelle notation est utilisée pour discuter des coefficients des fonctions en notation big-O?

J'ai deux fonctions:

  • F(X)=7X2+4X+2
  • g(X)=3X2+5X+4

Évidemment, les deux fonctions sont , en effet , mais cela ne permet pas une comparaison plus approfondie. Comment puis-je discuter des coefficients 7 et 3. Réduire le coefficient à 3 ne change pas la complexité asymptotique, mais cela fait quand même une différence significative dans l'utilisation du runtime / de la mémoire.Θ ( x 2 )O(X2)Θ(X2)

Est-il faux de dire que est et est ? Y a-t-il une autre notation qui prend en compte les coefficients? Ou quelle serait la meilleure façon d'en discuter?O ( 7 x 2 ) g O ( 3 x 2 )FO(7X2)gO(3X2)

Raphael
la source
Ce n'est pas faux, c'est juste redondant, car . O(7X2)=O(X2)
Voir aussi notre question de référence .
Raphael

Réponses:

9

notations Big- et big- masquent les coefficients du terme principal, donc si vous avez deux fonctions qui sont toutes les deux vous ne pouvez pas comparer leurs valeurs absolues sans regarder les fonctions elles-mêmes. Ce n'est pas faux en soi de dire que , mais ce n'est pas informatif car est également vrai (et, en fait, c'est pour toute constante positive ).Θ Θ ( n 2 ) 7 x 2 + 4 x + 2 = Θ ( 7 x 2 ) 7 x 2 + 4 x + 2 = Θ ( 3 x 2 ) Θ ( k x 2 ) kOΘΘ(n2)7X2+4X+2=Θ(7X2)7X2+4X+2=Θ(3X2)Θ(kX2)k

Il existe d'autres notations que vous pouvez utiliser à la place. Par exemple, la notation est une revendication beaucoup plus forte que big- :ΘΘ

F(X)g(X)limXF(X)g(X)=1

Par exemple, , mais la revendication serait fausse. Vous pouvez considérer la notation tilde comme une notation qui préserve les principaux coefficients, ce qui semble être ce que vous recherchez si vous vous souciez du coefficient principal du terme de croissance dominant. 7 x 2 + 4 x + 2 3 x 2 Θ7X2+4X+27X27X2+4X+23X2Θ

templatetypedef
la source
La notation tilde est ce que je recherche. J'étais sûr qu'il y avait quelque chose dont je ne pouvais tout simplement pas me rappeler comment cela s'appelait et les recherches s'avérèrent infructueuses. Merci!
6

Le tilde est une approche. Si vous voulez rester avec , vous pourriez direO

F(X)=7X2+O(X) et

g(X)=3X2+O(X) .

Raphael
la source
Encore mieux: disons f (x) = 7x ^ 2 + o (x ^ 2), en utilisant la notation petit-o pour préciser que ce qui reste est asymptotiquement plus petit que x ^ 2.
templatetypedef
2
O (x) est strictement inférieur à o (x ^ 2), donc l'utiliser serait moins clair que d'utiliser big-O. D'un autre côté, l'utilisation de little-o est certainement plus courante lorsque vous voulez dire que vous avez le bon premier terme, car alors vous n'avez pas à vous soucier du prochain terme. (Et si nous voulons être complètement clairs, nous aurions besoin d'expliquer pourquoi nous ne nous contentons pas d'écrire 7x ^ 2 + 4x + 2 en premier lieu, car c'est exactement correct.
Vous avez absolument raison ... mes excuses!
templatetypedef
Notez que la manière rigoureuse d'écrire ceci serait " avec ". Dans tous les cas, cela est très utile si vous souhaitez fixer plus que la "première" constante; vous pouvez dire " " ce que vous ne pouvez pas faire avec . g ( x ) O ( x ) f ( x ) = 7 x 2 + 4 x + O ( 1 ) f(x)=7x2+g(x)g(x)O(x)f(x)=7x2+4x+O(1)
Raphael