Tout en travaillant à travers un cours de base dans la notation asymptotique, je suis arrivé à un ensemble de problèmes dans lesquels je suis censé trouver une fonction (g (n)) de telle qu'une fonction donnée F (n) = O (g (n). ))). Après avoir travaillé par ces problèmes un peu je suis venu me demander; Toutes les fonctions ne sont-elles pas big-o d'eux-mêmes? Ils seront éventuellement liés par certains C * F (N) DONNER F (N) est la fonction d'origine. J'ai essayé de prouver cela incorrect dans Desmos en vain. p>
suis-je fondamentalement mal compris la notation Big-O? Le but est-il davantage de prouver que certains algorithmes ont définitivement moins de temps d'exécution, puis d'autres plutôt que de les être liés avec une fonction arbitraire? Toute clarification est très appréciée. Merci. P>
4 Réponses :
Vous pouvez trouver des ressources sur toutes les notations autour de la zone ici . P>
théoriquement oui, toute fonction est une grosse O de lui-même. C'est mathématiquement une tautologie. Mais à partir de ma compréhension, Big-O est généralement utilisé pour convertir une relation complexe de la taille de l'exécution de la taille d'entrée dans une estimation simple et élégante du comportement asymptotique pour de grandes tailles d'entrée. Habituellement, nous gardons uniquement les termes les plus importants et omettent les autres et les constantes. Puisque pour le grand n, seuls les termes les plus significatifs se distinguent. P>
E.g. Vous avez deux solutions à un problème, un coût t1 (n) = n ^ 2 + 100 * N + 30 * log (n) code>, les autres coûts
T2 (n) = 10000n + 40 * sqrt (n) code>. Utilisation de la notation Big-O, nous savons que
t1 (n) code> est
o (n ^ 2) code> et
t2 (n) code> est
O (n) code>, donc pour les grandes entrées, la méthode 2 pourrait être plus souhaitable car elle pousse asymptotiquement linéairement avec n. P>
Vous pouvez le prouver par la définition du Big-o. En tant que lim f (n) / f (n) code> lorsque
n code> va sur
\ \ \ \ great code> est égal à
1 code> et constante, nous pouvons dire
f (n) = \ theta (f (n)) code>, et cela signifie
f (n) = O (f (n)) code> et < Code> f (n) = \ oméga (f (n)) code>. p>
C'est ce que je pensais, merci pour la preuve aide à mettre des choses en perspective quantitative
am je suis fondamentalement mal compris la notation Big-O? P> blockQuote>
Je crains que vous soyez parce que la question "est une fonction Big-o elle-même?" em> sonne bizarre pour moi. P>
est le but davantage de prouver que certains algorithmes ont définitivement plus petit temps d'exécution puis d'autres plutôt que de les être liés avec un arbitraire fonctionner? p> blockQuote>
absolument. p>
Rappelez-vous que Big-O est une notation mathématique. Il est largement utilisé pour simplifier l'écriture d'une formule. Par exemple, une série de tyror expansion d'une fonction F (x) où nous ne voulons pas écrire la formule exacte de l'erreur d'approximation, mais je veux toujours savoir - en lisant la formule - que cette erreur se comporte comme une fonction polynomiale lorsque x tend à infini ou vers une valeur spécifique. P>
Mais la plupart du temps, nous sommes généralement intéressés par le coût dans le temps et dans l'espace d'une fonction (au sens de programmation) et nous souhaitons comparer l'efficacité de 2 algorithmes lorsque l'ensemble de données est grand. P>
C'est là que la notation Big-O est utile: nous savons que nous pouvons comparer le coût de l'algorithme A et B en comparant leurs homologues Big-O - c'est-à-dire leur complexité des coûts exprimée en polynôme, constante ou la fonction logarithmique (ou tout ce qui est plus facile à comparer) d'une variable N, où N est la taille de l'ensemble de données (taille d'un tableau, nombre d'éléments dans un ensemble ...) p>
Les réponses données ci-dessus sont superbes, mais voici un ajout qui rendrait cette page de questions complète. Je suppose que vous avez lu le lien dans la réponse ci-dessus et connaissez la notation Big-O, Theta et Omega. P>
Je suppose que ce que vous demandez est: y a-t-il un Peut-être. Mais il existe de nombreux cas où où f (n) code> tel que
f (n) = O (f (n)) code>? p>
f (n) = θ (f (n)) code>. Cela se produit lorsque
f (n) = t (f (n)) code> c'est-à-dire une fonction qui entrait un entier et des sorties un entier est défini de la même manière que la fonction temporelle. p>