Es gibt zwei Möglichkeiten, die Effizienz eines Algorithmus zu analysieren
- eine asymptotische Obergrenze für die Laufzeit zu setzen, und
- um es auszuführen und experimentelle Daten zu sammeln.
Ich frage mich, ob es bekannte Fälle gibt, in denen eine signifikante Lücke zwischen (1) und (2) besteht. Damit meine ich, dass entweder (a) die experimentellen Daten eine engere Asymptotik nahelegen oder (b) Algorithmen X und Y existieren, so dass die theoretische Analyse nahelegt, dass X viel besser als Y ist und die experimentellen Daten nahelegen, dass Y viel besser als Y ist X.
Da Experimente normalerweise das Verhalten von Durchschnittsfällen aufzeigen, erwarte ich, dass sich die interessantesten Antworten auf die Durchschnittsobergrenzen beziehen. Ich möchte jedoch möglicherweise interessante Antworten nicht ausschließen, die über verschiedene Grenzen sprechen, wie beispielsweise Noams Antwort zu Simplex.
Datenstrukturen einbeziehen. Bitte geben Sie ein Algo / ds pro Antwort ein.
quelle
Antworten:
Das eklatanteste Beispiel ist natürlich die Simplex-Methode, die in der Praxis schnell abläuft und Mehrfachzeit suggeriert, theoretisch aber exponentielle Zeit in Anspruch nimmt. Dan Spielman hat gerade den Nevanlinna-Preis für die Erklärung dieses Geheimnisses erhalten.
Im Allgemeinen können viele Instanzen der Integer-Programmierung mit Standard-IP-Solvern recht gut gelöst werden, z. B. könnten kombinatorische Auktionen für die meisten Distributionen, die mit Eingaben von beträchtlicher Größe versucht wurden, gelöst werden - http://www.cis.upenn.edu/~mkearns /teaching/cgt/combinatorial-auctions-survey.pdf
quelle
Groebner Basen . Die Laufzeit im ungünstigsten Fall ist doppelt exponentiell (in der Anzahl der Variablen). In der Praxis sind jedoch insbesondere bei gut strukturierten Problemen die Algorithmen F4 und F5 wirksam (dh sie enden ziemlich schnell). Es ist immer noch ein aktives Forschungsgebiet, herauszufinden, was die richtige Vermutung für die durchschnittliche oder erwartete Laufzeit sein sollte. Es wird vermutet, dass es irgendwie mit dem Volumen des Newton-Polytops des zugrunde liegenden Ideals zusammenhängt.
quelle
Ein großes und wenig bekanntes Beispiel für dieses Phänomen ist der Graphisomorphismus . Der bekannteste Algorithmus benötigt so etwas wie Zeit, aber der Graph-Isomorphismus ist in der Praxis in der Regel recht schnell lösbar.O ( 2( ( n l o gn )√))
Ich weiß nicht, ob es ein formales Ergebnis gibt, das die Komplexität des Problems durchschnittlich / geglättet hat, aber ich erinnere mich, dass ich gelesen habe, dass eines existiert hat - vielleicht kann jemand anderes ein formales Ergebnis nennen. Natürlich gibt es viele experimentelle Beweise und viele schnelle Löser. Ich bin auch neugierig, ob sich diese Eigenschaft auf andere Mitglieder der GI-complete-Familie erstreckt.
quelle
Von David Johnson, eine Diskrepanz zwischen theoretischem und experimentellem Näherungsverhältnis: Das Problem des Handlungsreisenden: Eine Fallstudie zur lokalen Optimierung, DS Johnson und LA McGeoch . In dieser Arbeit geben sie experimentelle Beweise für Asymptotika (da die Experimente bis zur Größe N = 10.000.000 laufen!), Die den theoretischen Asymptotika trotzen: Jon Bentleys "Greedy" - oder "Multi-Fragment" -Algorithmus (Worst-Case-Approximationsverhältnis mindestens logN / loglogN) schlägt Nearest Insertion und Double MST, die beide Worst-Case-Näherungsverhältnisse von 2 haben.
quelle
Ein anderes Beispiel, das bis vor kurzem nicht gut verstanden wurde, ist die Laufzeit des Lloyd's k-means-Algorithmus , der (vom praktischen Standpunkt aus) seit mehr als 50 Jahren der Clustering-Algorithmus der Wahl ist. Erst vor kurzem, im Jahr 2009, wurde (von Vattani ) bewiesen, dass der Lloyd-Algorithmus im schlimmsten Fall eine Anzahl von Iterationen erfordert, die in Bezug auf die Anzahl der Eingabepunkte exponentiell sind. Andererseits ergab eine geglättete Analyse (von Arthur, Manthey und Röglin ), dass die geglättete Anzahl der Iterationen nur polynomisch ist, was die empirische Leistung erklärt.
quelle
Die Traversal-, Deque- und Split-Folgerungen der dynamischen Optimalitätsvermutung für Spreizbäume sind Beispiele für solche Lücken. Experimente stützen die Behauptung der linearen Zeit, aber es gibt keinen bekannten Beweis.
quelle
Es gibt ein kleines Problem mit der Frage. Es gibt in der Tat mehr als zwei Möglichkeiten, einen Algorithmus zu analysieren, und eine der theoretischen Möglichkeiten, die vernachlässigt wurde, ist die erwartete Laufzeit und nicht die Laufzeit im schlimmsten Fall. Es ist wirklich dieses durchschnittliche Fallverhalten, das für die Durchführung von Experimenten relevant ist. Hier ist ein sehr einfaches Beispiel: Stellen Sie sich vor, Sie haben einen Algorithmus für eine Eingabe der Größe n, der für jede mögliche Eingabe der Größe n Zeit n benötigt, mit Ausnahme einer bestimmten Eingabe jeder Länge, die Zeit 2 ^ n benötigt. Hören Sie, dass die Laufzeit im ungünstigsten Fall exponentiell ist, der Durchschnittsfall jedoch [(2 ^ n -1) n + (2 ^ n) 1] / (2 ^ n) = n - (n-1) / 2 ^ n ist Grenzen zu n. Es ist klar, dass die beiden Analysetypen sehr unterschiedliche Antworten geben. Dies ist jedoch zu erwarten, da wir unterschiedliche Mengen berechnen.
Selbst wenn wir das Experiment einige Male ausführen, wird immer noch nur ein kleiner Teil des Bereichs möglicher Eingaben abgetastet, und wenn harte Instanzen selten sind, werden wir sie wahrscheinlich verpassen .
Es ist relativ einfach, ein solches Problem zu konstruieren: Wenn die ersten n / 2 Bits alle Null sind, lösen Sie die 3SAT-Instanz, die mit den letzten n / 2 Bits codiert ist. Ansonsten ablehnen. Wenn n groß wird, hat das Problem im schlimmsten Fall ungefähr die gleiche Laufzeit wie der effizienteste Algorithmus für 3SAT, wobei die durchschnittliche Laufzeit garantiert sehr niedrig ist.
quelle
Die Inferenz vom Damas-Milner-Typ ist nachweislich für die Exponentialzeit vollständig, und es gibt leicht konstruierte Fälle mit exponentiellem Aufblähen in der Größe eines Ergebnisses. Nichtsdestotrotz verhält es sich bei den meisten Eingaben in der realen Welt effektiv linear.
quelle
Das PTAS für Steiner-Baum in planaren Graphen hat eine lächerliche Abhängigkeit von epsilon. Es gibt jedoch eine Implementierung , die in der Praxis eine überraschend gute Leistung zeigt.
quelle
Paarung von Heaps aus [1] - Sie implementieren Heaps, bei denen Einfügen und Zusammenführen die Komplexität von O (log n) amortisiert haben, aber als O (1) angenommen werden. In der Praxis sind sie äußerst effizient, insbesondere für Benutzer von Merge.
Ich habe sie erst heute beim Lesen von Sec entdeckt. 5.5 von C. Okasakis Buch "Rein funktionale Datenstrukturen", daher dachte ich, ich sollte Informationen darüber austauschen.
[1] Fredman, ML, Sedgewick, R., Sleator, DD und Tarjan, RE 1986. Der Paarungshaufen: eine neue Form des sich selbst anpassenden Haufens. Algorithmica 1, 1 (Januar 1986), 111-129. DOI = http://dx.doi.org/10.1007/BF01840439
quelle
Verwandt ilyaraz Bemerkung über Zweig und gebunden, Pataki et al. zeigen, dass die Reduzierung von Verzweigung und Bindung plus Gitterbasis fast alle zufälligen IPs in polytime lösen kann.
quelle
Die Lin-Kernighan-Heuristik für den TSP ("Eine effektive Heuristik für das Problem des Handlungsreisenden", Operations Research 21: 489–516, 1973) ist in der Praxis sehr erfolgreich, es fehlt jedoch immer noch eine Durchschnittsfall- oder geglättete Analyse, um die Leistung zu erklären . Demgegenüber gibt es eine geglättete Analyse der 2-Opt-Heuristik für den TSP von Matthias Englert, Heiko Röglin und Berthold Vöcking (Algorithmica, erscheint).
quelle
In der Praxis gibt es viele sehr schnelle und effiziente Verzweigungs- und gebundene Algorithmen für verschiedene NP-schwierige Probleme, die wir nicht genau analysieren können: TSP, Steinerbaum, Behälterpackung und so weiter.
quelle