Ich frage mich, gibt es eine Methode zur automatischen Laufzeitanalyse, die zumindest für eine relevante Teilmenge von Algorithmen funktioniert (Algorithmen, die analysiert werden können)?
Ich googeln „Automatische Algorithmus Analyse“ , die mir gegeben haben dies aber es ist zu Mathy. Ich möchte nur ein einfaches Beispiel im Pseudocode, das ich verstehen kann. Könnte zu spezifisch sein, aber ich dachte, es wäre einen Versuch wert.
Antworten:
Das COSTA- Tool tut genau dies, obwohl es in vielen Fällen, wie Sie sich vorstellen können, aufgrund von Berechenbarkeitsproblemen fehlschlägt . Es gibt viele Papiere darüber; Die Kostenanalyse von Java-Bytecode durch E. Albert, P. Arenas, S. Genaim, G. Puebla und D. Zanardini ist ein guter Ausgangspunkt.
Der Ansatz besteht darin, aus dem Javabyte-Code eine Laufzeitwiederholung abzuleiten und diese in eine geschlossene Form zu konvertieren. Das Tool berechnet auch die Speicherplatznutzungsgrenzen.
quelle
Kein Algorithmus kann entscheiden, ob ein bestimmter Algorithmus jemals angehalten wird oder nicht, so dass insbesondere kein Algorithmus die Komplexität eines bestimmten Algorithmus genau analysieren kann.
quelle
Ich kenne einen Ansatz zur (halb-) automatisierten durchschnittlichen Fallanalyse, nämlich MaLiJAn ¹. Es ähnelt stark der Art der Analyse, die Knuth in TAoCP verwendet. Die Kernidee ist zu
Beachten Sie, dass nur additive Kostenmaße (z. B. Vergleiche, "Zeit") funktionieren und nur der erwartete Wert genau ist (unter der Annahme perfekter Wahrscheinlichkeitsfunktionen). Höhere Momente können nicht abgeleitet werden.
Alle Schritte außer der Extrapolation sind streng [2], und es wurde gezeigt, dass die Methode bekannte Ergebnisse mit hoher Präzision reproduziert - natürlich bei geeigneten Zufallsstichproben. Obwohl es keinen Beweis oder gar keine Annäherungsgarantie für die Ergebnisse gibt (der Extrapolationsschritt ist bislang rein heuristisch), dienen die mit dem Tool erhaltenen Ergebnisse gut dazu, mit schwer zu analysierenden Algorithmen zu experimentieren und Hypothesen zu formulieren [3,4].
quelle
Natürlich sollte man, wie Yuval Filmus bemerkte, keine allgemeine Lösung für solche Probleme erwarten. Aber wie gewöhnlich können Lösungen für interessante Teilmengen des allgemeinen Falls gefunden werden.
Ich bin in keiner Weise Experte oder in diesem Bereich sogar sehr gut informiert, da ich zufällig von einer Arbeit dieser Art weiß. Es handelt sich um eine automatische Analyse der durchschnittlichen Komplexität, und die Arbeit wurde von Philippe Flajolet und seinen Kollegen durchgeführt.
Ein Artikel, den ich im Internet gefunden habe, ist ein Artikel aus dem Jahr 1990: Automatische Durchschnittsanalyse von Algorithmen von Philippe Flajolet, Paul Zimmermann und Bruno Salvy .
Ich würde erwarten, dass spätere Arbeiten diese Arbeit erweitert haben, aber ich weiß es nicht wirklich. Die Arbeit wurde ziemlich häufig zitiert, und das Durchsuchen des Webs nach ihr sollte zu neueren Arbeiten zum gleichen Thema führen.
Jetzt befürchte ich, dass die Arbeit von Flajolet und seinen Kollegen sehr mathematisch war, und ich würde nicht viel einfaches Lesen erwarten.
quelle