Qu'est-ce que cela signifie en disant «Asymptotiquement plus efficace»?

12

Qu'est-ce que cela signifie lorsque nous disons qu'un algorithme est asymptotiquement plus efficace que ?XOui

  • X sera un meilleur choix pour toutes les entrées.
  • X sera un meilleur choix pour toutes les entrées sauf les petites entrées.
  • X sera un meilleur choix pour toutes les entrées sauf les grandes entrées.
  • Oui sera un meilleur choix pour les petites entrées.

Le lien pour cette question est ici.

http://quiz.geeksforgeeks.org/algorithms-analysis-of-algorithms-question-16/


Je pensais qu'un algorithme plus efficace asymptotiquement devrait fonctionner pour toutes les entrées, mais je ne comprends pas pourquoi "il fonctionne pour toutes les entrées sauf les petites".

Garrick
la source
une entrée importante expose le goulot de la bouteille dans l'algorithme. C'est ce que je mettrais en termes d'ingénierie.
Apiwat Chantawibul

Réponses:

14

Tout d'abord, les deux algorithmes "fonctionnent" pour toutes les entrées. La question concerne les performances.

Les réponses à cette question sont un peu merdiques. Une façon de dire qu'un algorithme est asymptotiquement plus efficace qu'un autre est s'il y a une taille d'entrée (spécifique au problème) de telle sorte que pour toute taille d'entrée plus grande, l'algorithme plus efficace prendra moins "d'étapes de calcul", généralement par une mesure abstraite, par exemple nombre de comparaisons.

X

5O(n2)O(nlgn)5cnlgn+o(nlgn)co(nlgn)dans cet exemple - rend l'algorithme presque certainement totalement infaisable pour pratiquement n'importe quel problème réel. Qu'est-ce que j'entends par "totalement infaisable"? Je veux dire que la mort thermique de l'univers se produira plusieurs fois avant que cet algorithme ne se termine. Néanmoins, pour des entrées convenablement "grandes", ce sera plus rapide que le tri à bulles. Ce que je veux dire, c'est qu'il n'est presque certainement pas physiquement possible d'écrire par quelque moyen que ce soit une entrée "convenablement grande", et encore moins de la calculer.

XOui

cc

Derek Elkins a quitté SE
la source
2

Ce que les gens veulent généralement dire lorsqu'ils disent quelque chose comme ceci, c'est:

TUNETBUNEBTUNEo(TB)

X

En particulier, aucune des déclarations que vous proposez ne suit, même si les gens suggèrent souvent que la seconde l'a fait.

Malheureusement, la communauté plus large de personnes traitant des algorithmes adopte une terminologie qui frise le vide pour des raisons de simplicité. (Il est difficile de faire des déclarations précises et utiles sur les algorithmes!)

Vous pouvez être intéressé par nos questions de référence .


Un algorithme X est dit asymptotiquement meilleur que Y si X prend plus de temps que y pour toutes les tailles d'entrée n supérieures à une valeur n0 où n0> 0.

TUNE(n)=n+1TB(n)=n

Je vous recommande d'apprendre l'informatique à partir de ressources CS, pas de programmeurs qui ont lu des choses sur Wikipédia une fois. (Oui, c'est dur, mais j'ai vu trop de mensonges se propager dans les cercles de programmeurs, même sur SO.)

Raphael
la source
2

"Asymptotiquement plus efficace" signifie "plus efficace pour tous les problèmes au-dessus d'une certaine taille". Il ne dit pas ce qu'est la "certaine taille" et il ne dit pas ce qui se passe avant cette "certaine taille".

Donc, toutes les réponses, à l'exception de la seconde, sont clairement fausses, car "Asymptotiquement plus efficace" ne dit rien du tout sur les petites tailles d'entrée. Mais le second est également problématique.

dix30dix30dix40

dix15

gnasher729
la source