Über hier schlug Dave Clarke , dass, um asymptotisch Wachstum vergleichen Sie die Funktionen zur Hand zeichnen sollte. Als theoretisch begabter Informatiker bezeichne ich dieses Vodoo als eine Handlung, die niemals bewiesen werden kann. Beim zweiten Gedanken muss ich zustimmen, dass dies ein sehr nützlicher Ansatz ist, der manchmal sogar zu wenig genutzt wird. Ein Grundstück ist ein effizienter Weg, um erste Ideen zu bekommen, und manchmal ist das alles, was Sie brauchen.
Wenn ich TCS unterrichte, gibt es immer einen Schüler, der fragt: "Wofür brauche ich einen formalen Nachweis, wenn ich nur X machen kann, was immer funktioniert?" Es liegt an seinen Lehrern, auf den Irrtum hinzuweisen und ihn zu veranschaulichen. Es gibt eine brillante Reihe von Beispielen für offensichtliche Muster, die bei math.SE schließlich ausfallen , aber dies sind ziemlich mathematische Szenarien.
Wie täuschen Sie die heuristische Darstellung der Grundstückskontrolle vor? Es gibt einige Fälle, in denen Unterschiede schwer auszumachen sind, z
[ Quelle ]
Machen Sie eine Vermutung und überprüfen Sie die Quelle für die realen Funktionen. Diese sind jedoch nicht so spektakulär, wie ich es mir erhofft hätte, insbesondere, weil die tatsächlichen Beziehungen auch für Anfänger anhand der einzelnen Funktionen leicht erkennbar sind.
Gibt es Beispiele für (relatives) asymptotisches Wachstum, bei denen die Wahrheit nicht aus der Funktionsdefinition hervorgeht und die Plotprüfung für einigermaßen großes eine völlig falsche Vorstellung ergibt? Mathematische Funktionen und reale Datensätze (zB Laufzeit eines bestimmten Algorithmus) sind willkommen; Bitte verzichten Sie jedoch auf stückweise definierte Funktionen.
quelle
Antworten:
Wenn man aus Erfahrung versucht, die Wachstumsrate für eine beobachtete Funktion (z. B. Markov-Kettenmischzeit oder Laufzeit des Algorithmus) zu ermitteln, ist es sehr schwierig, Faktoren für von n b zu unterscheiden . Zum Beispiel O ( √(logn)a nb sieht ungefähr so aus wieO(n 0.6 ):O(n−−√logn) O(n0.6)
[ Quelle ]
Beispielsweise wurde in "Einige unerwartet erwartete Verhaltensergebnisse für das Packen von Behältern" von Bentley et al. Die Wachstumsrate des leeren Raums für die Algorithmen "Best Fit" und "First Fit" für das Packen von Behältern, die einheitlich auf gepackt wurden, empirisch als geschätzt n 0,6 bzw. n 0,7 . Die korrekten Ausdrücke sind n 1 / 2 log 3 / 4 n , und n 2 / 3 .[0,1] n0.6 n0.7 n1 / 2Log3 / 4n n2 / 3
quelle
Hier ist ein weiteres (zugegebenermaßen ziemlich konstruiertes) Beispiel, aber immer noch eines, das ich bemerkenswert finde. Es soll gezeigt werden, dass Parzellen zur Beurteilung des asymptotischen Wachstums sehr irreführend sein können.
Können Sie sich vorstellen, welche der Funktionen (asymptotisch) schneller wächst?
In diesem Beispiel können wir die Oszillationen demaskieren, indem wir einen Log-Log-Plot betrachten:
Natürlich hilft das im Allgemeinen nicht; Zum Beispiel könnten wir eine doppelt exponentielle Periode haben ...
quelle
Dies ist offensichtlich ein exponentieller Zeitalgorithmus im ungünstigsten Fall, da er einen nicht deterministischen Automaten annehmen und Ihnen einen deterministischen Automaten geben kann (oder noch offensichtlicher, er ruft die Teilmengenkonstruktion zweimal auf).
Dies berührt den "Plot" -Teil der "Plot-Inspektions-Heuristik" - wir müssen auswählen, welche Punkte beim Zeichnen des Plots abgetastet werden sollen, und Sie können einen naiven Plot zum Narren halten, wenn Sie Ihre Punkte nicht sorgfältig auswählen. Dies gilt auch für andere Beispiele wie Quicksort und den Simplex-Algorithmus, aber für die Pädagogik bevorzuge ich diesen Algorithmus gegenüber diesen beiden.
Der Unterschied von Quicksort ist "nur" quadratisch gegenüber logarithmisch linear, was weniger spektakulär ist als ein polynomieller / exponentieller Unterschied. Der Simplex-Algorithmus hat einen ähnlich spektakulären Unterschied, aber seine Analyse ist erheblich komplizierter als der von Brzozowski.
(Ich bin auch der Meinung, dass der DFA-Minimierungsalgorithmus von Brzozowski viel weniger bekannt ist, als er verdient, aber das ist natürlich Geschmackssache.)
quelle
Die mathematische Methode der Kurvenanpassung kann verwendet werden, um eine unbegrenzte Anzahl von Antworten auf Ihre Frage bereitzustellen. Wenn man eine Kurve und einen Bereich voraussetzt, kann man leicht ein Polynom finden, das zu jeder Genauigkeit passt. Dieses Beispiel aus Wikipedia zeigt, wie eine Sinuswelle mit einem Polynom vierter Ordnung (der blauen Kurve) ziemlich genau angepasst werden kann.
Ich könnte Polynome höherer Ordnung verwenden und die Heuristik der Diagrammprüfung noch besser täuschen als dieses Diagramm.
quelle