Was bedeutet es, „asymptotisch effizienter“ zu sagen?

12

Was bedeutet es, wenn wir sagen, dass ein Algorithmus asymptotisch effizienter ist als Y ?XY

  • ist eine bessere Wahl für alle Eingänge.X
  • ist eine bessere Wahl für alle Eingänge außer kleinen Eingängen.X
  • ist eine bessere Wahl für alle Eingänge außer großen Eingängen.X
  • ist die bessere Wahl für kleine Eingaben.Y

Der Link für diese Frage ist hier.

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


Ich dachte, dass ein Algorithmus, der asymptotisch effizienter ist, für alle Eingaben funktionieren sollte, aber ich verstehe nicht den Grund für "Es funktioniert für alle Eingaben außer kleinen".

Garrick
quelle
Eine große Eingabe legt den Flaschenhals im Algorithmus frei. Ist das, was ich in technischen Begriffen ausdrücken würde.
Apiwat Chantawibul

Antworten:

14

Zunächst einmal "funktionieren" beide Algorithmen für alle Eingaben. Die Frage ist nach Leistung.

Die Antworten auf diese Frage sind irgendwie beschissen. Eine Möglichkeit zu sagen, dass ein Algorithmus asymptotisch effizienter ist als ein anderer, besteht darin, dass es eine (problemspezifische) Eingabegröße gibt, so dass der effizientere Algorithmus für jede größere Eingabegröße weniger "Rechenschritte" benötigt, normalerweise durch ein abstraktes Maß, z Anzahl der Vergleiche.

Die Idee der Antworten ist, dass ein asymptotisch effizienterer Algorithmus möglicherweise noch mehr Schritte vor dieser Eingabegröße erfordert. Es kann vorkommen , dass der asymptotisch effizientere Algorithmus weniger Schritte für alle Eingaben erfordert, dies muss jedoch nicht der Fall sein und ist in der Praxis normalerweise nicht der Fall. Ein besserer Wortlaut der "richtigen" Antwort wäre also " ist eine bessere Wahl für alle Eingaben außer möglicherweise kleinen Eingaben".X

5O(n2)O(nlgn)5cnlgn+o(nlgn)co(nlgn)in diesem Beispiel - macht den Algorithmus mit ziemlicher Sicherheit für praktisch jedes echte Problem völlig unmöglich. Was meine ich mit "völlig unmöglich"? Ich meine, der Hitzetod des Universums wird ein Vielfaches passieren, bevor dieser Algorithmus abgeschlossen ist. Trotzdem ist es für geeignet "große" Eingaben schneller als die Blasensortierung. Mein Punkt ist, dass es physikalisch mit ziemlicher Sicherheit nicht möglich ist, eine "angemessen große" Eingabe aufzuschreiben, geschweige denn darauf zu rechnen.

XY

cc

Derek Elkins verließ SE
quelle
2

Was Menschen normalerweise meinen, wenn sie so etwas sagen, ist:

TATBABTAo(TB)

X

Insbesondere folgt keine der Aussagen, die Sie vorschlagen, obwohl die Leute oft vorschlagen, dass die zweite dies tat.

Leider befürwortet die breitere Gemeinschaft von Menschen, die sich mit Algorithmen befassen, der Einfachheit halber eine Terminologie, die an Leere grenzt. (Es ist schwierig, präzise und hilfreiche Aussagen über Algorithmen zu treffen!)

Sie könnten an unseren Referenzfragen interessiert sein .


Ein Algorithmus X gilt als asymptotisch besser als Y, wenn X für alle Eingangsgrößen n, die größer als ein Wert n0 sind, wobei n0> 0 ist, eine kleinere Zeit als y benötigt.

TA(n)=n+1TB(n)=n

Ich empfehle Ihnen, Informatik aus CS-Ressourcen zu lernen, nicht von Programmierern, die einmal über Wikipedia gelesen haben. (Ja, das ist hart, aber ich habe zu viele Unwahrheiten in Programmierkreisen gesehen, sogar auf SO.)

Raphael
quelle
2

"Asymptotisch effizienter" bedeutet "effizienter für alle Probleme ab einer bestimmten Größe". Es sagt nicht, was die "bestimmte Größe" ist, und es sagt nicht, was vor dieser "bestimmten Größe" passiert.

Alle Antworten außer der zweiten sind eindeutig falsch, da "asymptotisch effizienter" überhaupt nichts über kleine Eingabegrößen aussagt. Der zweite ist aber auch problematisch.

103010301040

1015

gnasher729
quelle