Vous avez raison. Notez que le terme abuse légèrement de la notation classique big-O , qui est définie pour les fonctions dans une variable. Cependant, il existe une extension naturelle pour plusieurs variables.O(n+m)
En termes simples, depuis
vous pouvez en déduire que et sont des bornes supérieures asymptotiques.
12(m+n)≤max{m,n}≤m+n≤2max{m,n},
O(n+m)O(max{m,n})
D'autre part, est différent de , car si vous définissez , vous obtenezO(n+m)O(min{n,m})n=2m
Je pense qu’il est intéressant de noter qu’ils écrivent dans l’abstrait: "Nous montrons qu’il est impossible de définir la notation big-O pour des fonctions sur plusieurs variables d’une manière qui implique les propriétés couramment utilisées dans l’analyse par algorithme. Nous démontrons également que les définitions communes n'impliquent pas ces propriétés même si les fonctions de la notation big-O se limitent à être strictement non décroissantes ".
Croyez-le ou non, il semble (selon mon expérience) que beaucoup d'algorithmes n'ont pas réellement réfléchi à ce que la grande notation O signifie officiellement, et lorsqu'on vous le demande, vous pouvez obtenir plusieurs réponses différentes. Certaines questions sont abordées dans l'article sur la notation asymptotique à variables multiples par Rodney R. Howell.
Curieusement, il semble également que la plupart des cours d’initiation aux algorithmes passent beaucoup de temps à être très formels à propos de la grande notation O avec une seule variable, puis que les semaines à venir utilisent avec bonheur la notation pour les algorithmes de graphes à plusieurs variables de manière informelle, sans discuter de la notation signifie en réalité.
Le lien dans ma réponse renvoie à l'article de Howell, qui est en effet un traitement intéressant sur cette question.
A.Schulz
1
@ A.Schulz: En effet, je tapais ma réponse simultanément pour vous.
Kristoffer Arnsfelt Hansen
1
Je suis un partisan de la prudence avec les termes de Landau, donc je suis d’accord, mais cela contient trop de discours pour une bonne réponse.
Raphaël
4
@Raphael: La réponse n'est pas conçue comme une diatribe, mais peut-être aurait-elle pu être formulée plus précisément. Le problème est que, fondamentalement, la question est de savoir quel est le sens du gros O avec plus d’un paramètre. La réponse est que cela devrait signifier tout ce qui fait consensus dans la communauté des algorithmes, ce qui est enseigné dans les cours d'algorithmes, etc. Mon point est qu'il n'y a apparemment pas un tel consensus sur ce que la notation signifie précisément.
Réponses:
Vous avez raison. Notez que le terme abuse légèrement de la notation classique big-O , qui est définie pour les fonctions dans une variable. Cependant, il existe une extension naturelle pour plusieurs variables.O(n+m)
En termes simples, depuis vous pouvez en déduire que et sont des bornes supérieures asymptotiques.
D'autre part, est différent de , car si vous définissez , vous obtenezO(n+m) O(min{n,m}) n=2m
la source
Croyez-le ou non, il semble (selon mon expérience) que beaucoup d'algorithmes n'ont pas réellement réfléchi à ce que la grande notation O signifie officiellement, et lorsqu'on vous le demande, vous pouvez obtenir plusieurs réponses différentes. Certaines questions sont abordées dans l'article sur la notation asymptotique à variables multiples par Rodney R. Howell.
Curieusement, il semble également que la plupart des cours d’initiation aux algorithmes passent beaucoup de temps à être très formels à propos de la grande notation O avec une seule variable, puis que les semaines à venir utilisent avec bonheur la notation pour les algorithmes de graphes à plusieurs variables de manière informelle, sans discuter de la notation signifie en réalité.
la source