Was bedeutet es, wenn wir sagen, dass ein Algorithmus asymptotisch effizienter ist als Y ?
- ist eine bessere Wahl für alle Eingänge.
- ist eine bessere Wahl für alle Eingänge außer kleinen Eingängen.
- ist eine bessere Wahl für alle Eingänge außer großen Eingängen.
- ist die bessere Wahl für kleine Eingaben.
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".
Antworten:
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.
quelle
Was Menschen normalerweise meinen, wenn sie so etwas sagen, ist:
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 .
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.)
quelle
"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.
quelle