Ich bin auf viele Quellen gestoßen, die Folgendes behaupten:
Benchmarks schätzen die Laufzeit, Big O schätzt die Skalierbarkeit.
Sie erklärten die Bedeutung von "Skalierbarkeit" wie folgt:
Skalierbarkeit sagt Ihnen, wie Ihre Algorithmuslaufzeit skaliert. Das heißt, wie die Rechenzeit wächst, wenn Sie die Eingabegröße erhöhen. Für Sie verdoppeln die Größe der Eingabe und verdoppeln die Rechenzeit. Für Sie verdoppeln die Größe der Eingabe und vervierfachen die Rechenzeit und so weiter.
Das heißt, wenn Ihr Algorithmus dauert Schritte im schlimmsten Fall und , dann das Verhältnis ist gleich für ausreichend große Werte von (Sie verdoppeln die Eingabegröße und vervierfachen die Rechenzeit).
Und es machte so viel Sinn. Aber kürzlich wurde mir ein Gegenbeispiel gezeigt, das beweist, dass die obige Aussage einfach falsch ist. Betrachten Sie die Funktion . Wir können das sehen . Außerdem für diejenigen unter Ihnen, die das bemerken möchten Leute meinen normalerweise das können wir leicht beobachten sowie:
Aber skaliert nicht wie in dem Sinne, dass wir das nicht behaupten können ist gleich (sogar ungefähr) für beliebige (auch große) Werte von n. Ich meine, wenn wir das wissen und wenn wir seine Eingabegröße verdoppeln, können wir die Rechenzeit nicht einfach vervierfachen, weil es falsch ist.
Ich habe eine Handlung erstellt damit du es visualisierst:
Es sieht nicht so aus, als ob dieses Verhältnis in Richtung 4 tendiert.
Also, meine Fragen sind:
Warum erklären die Leute die Bedeutung von "Skalierbarkeit" so? Gibt es dafür einen Grund oder sind sie technisch falsch?
Was bedeutet dieses Wort "Skalierbarkeit" dann? Was genau schätzt Big O dann (wenn nicht „Skalierbarkeit“)?
Im Allgemeinen suche ich nach einer rein mathematischen Erklärung dafür. Aber machen Sie es sich bitte nicht zu schwer: Ich lerne noch eine Einvariablenrechnung. Vielen Dank an alle im Voraus!
Dieses (sehr schöne) Beispiel ist recht ungewöhnlich - in der Praxis funktioniert es die tatsächlich kommen und sind typischerweise befriedigen tendiert zu einer positiven Grenze (anstatt nur davon abgegrenzt zu werden Und ). Also die vereinfachte Version der Skalierbarkeit - - existiert und ist .
Aber selbst für Ihre Funktion gibt es immer noch einen vernünftigen Sinn für die Verdopplung , steigt im Durchschnitt um einen Faktor von . Was können wir mit „im Durchschnitt“ meinen? Nun, um einen Durchschnitt zu nehmen, müssen Sie mehr als einmal verdoppeln. Wenn Sie zweimal verdoppeln, gehen Sie aus Zu dann ist der sinnvolle durchschnittliche Skalierungsfaktor der beiden Verdopplungen das geometrische Mittel (weil Sie versuchen, sich durch geometrisches Wachstum anzunähern), dh . Nun tendiert das auch nicht zu einer Grenze, aber , dh der (geometrische) mittlere Skalierungsfaktor aus Verdopplungen, tendiert zu einer Grenze wie , welches ist .
Die Landau-Symbole kümmern sich nicht um das genaue Verhalten von Funktionen. bedeutet das für groß wir haben Waagen höchstens so schlecht wie in dem Sinne, dass ist durch ein Vielfaches von beschränkt .
Wenn die Leute es so erklären, wie Sie es erwähnt haben, vereinfachen sie es zu sehr und gehen wahrscheinlich davon aus, dass die andere Seite sonst nicht verstehen würde, wovon man spricht.
FShrike
Mathematikfreak
FShrike
Jan
Jan
Mathematikfreak
Jan
Mathematikfreak
Jan
Mathematikfreak
Jan