Was ist das meist übernommene Konzept, außer asymptotischer Komplexität (Big-O-Notation), um Algorithmen zu bewerten?Komplexität anderer Algorithmen als asymptotisch (Big-O-Notation)
Beispiel:
I Gesetzt den folgenden Algorithmus haben, der eine Funktion aufruft, func, mit Komplexität O (1). Dann hätte dieser Algorithmus die Komplexität O (N1 × N2). Aber wenn ich vorher wüsste, dass N1 begrenzt ist [1,5], dann wäre die Worst-Case-Komplexität O (5 x N2), was definitionsgemäß auch O (N2) ist.
for i in range(N1):
for j in range(N2):
func(i,j)
Im Fall kann ich auf einer andere Implementierung dieses Algorithmus ist eine Funktion func2 verwendet, wiederum mit Komplexität O (1), nun aber unterschiedlichen Außenschleifenbereich, N3 verwendet. Dieser Algorithmus würde O (N3 x N2) sein. Wenn ich jedoch wüsste, dass der Bereich von N3 [10,50] ist, dann wäre die Worst-Case-Komplexität O (50 x N2), was wiederum O (N2) ist.
for i in range(N3):
for j in range(N2):
func2(i,j)
Frage:
Also, das ist eine einfache, dass asymptotisch Notation ist nützlich zu zeigen, aber vielleicht nicht die am besten geeignete Vergleichsmethode für einige speziellere Fälle. Wie kann ich diese beiden Algorithmen vergleichen? Was sind die am häufigsten verwendeten Methoden? Wird nur die Anzahl der für den Algorithmus erforderlichen Iterationen zu einer technisch strengen Metrik?
Beliebige Referenz?
Ich stimme Ihnen vollkommen zu. Haben Sie spezielle Referenzen? – rkioji
Vielleicht sind Knuths Schriften ein guter Anfang? Er diskutiert viele dieser Aspekte ... –