Zeitkomplexität des Bellman-Held-Karp-Algorithmus für TSP, Take 2


16

In einer aktuellen Frage wurde der heute klassische dynamische Programmieralgorithmus für TSP erörtert, der unabhängig von Bellman und Held-Karp entwickelt wurde . Es wird allgemein berichtet, dass der Algorithmus in O(2nn2) -Zeit ausgeführt wird. Wie einer meiner Studenten kürzlich betonte, erfordert diese Laufzeit möglicherweise ein unangemessen leistungsfähiges Rechenmodell.

Hier ist eine kurze Beschreibung des Algorithmus. Die Eingabe besteht aus einem gerichteten Graphen G=(V,E) mit n Eckpunkten und einer nicht negativen Längenfunktion :ER+ . Für alle Scheitelpunkte s und t und jede Teilmenge X von Scheitelpunkten, die s und t , bezeichnen L(s,X,t) die Länge des kürzesten Hamilton-Pfades von s nach tim induzierten Teilgraphen G[X{s,t}] . Der Bellman-Held-Karp-Algorithmus basiert auf der folgenden Wiederholung (oder, wie Ökonomen und Kontrolltheoretiker es gerne nennen, „Bellman-Gleichung“):

L(s,X,t)={(s,t)if X=minvX (L(s,X{v},v)+(v,t))otherwise

Für jeden Scheitelpunkt ist die Länge des optimalen Verkäufer Tour reisen . Da der erste Parameter in allen rekursiven Aufrufen konstant ist, gibt es verschiedene Unterprobleme, und jedes Unterproblem hängt von höchstens anderen ab. Somit läuft der dynamische Programmieralgorithmus in der Zeit .L ( s , V { s } , s ) s Θ ( 2 n n ) n O ( 2 n n 2 )sL(s,V{s},s)sΘ(2nn)nO(2nn2)

Oder doch ?!

Das standardmäßige Ganzzahl-RAM-Modell ermöglicht die zeitkonstante Manipulation von Ganzzahlen mit -Bits. Zumindest für arithmetische und logische Operationen müssen jedoch größere Ganzzahlen in wortgroße Blöcke aufgeteilt werden. (Andernfalls können seltsame Dinge passieren.) Gilt dies nicht auch für den Zugriff auf längere Speicheradressen? Wenn ein Algorithmus Superpolynomraum verwendet, ist es vernünftig anzunehmen, dass Speicherzugriffe nur konstante Zeit erfordern?O(logn)

Insbesondere für den Bellman-Held-Karp-Algorithmus muss der Algorithmus die Beschreibung der Teilmenge in die Beschreibung der Teilmenge für jedes umwandeln , um auf die Notizentabelle zuzugreifen. Wenn die Teilmengen durch Ganzzahlen dargestellt werden, benötigen diese Ganzzahlen Bits und können daher nicht in konstanter Zeit bearbeitet werden. Wenn sie nicht durch ganze Zahlen dargestellt werden, kann ihre Darstellung nicht direkt als Index in der Memoization-Tabelle verwendet werden.X { v } v nXX{v}vn

Also: Was ist die tatsächliche asymptotische Laufzeit des Bellman-Held-Karp-Algorithmus?


Ihr Link zu "seltsamen Dingen" ist unterbrochen.
Tyson Williams

Ich habe den Link repariert.
Jeffs

Antworten:


12

Dies ist weniger eine mathematische als eine philosophische Antwort, aber ich ziehe ein RAM-Modell vor, das eine zeitlich konstante Manipulation von Ganzzahlen mit einer Anzahl B von Bits ermöglicht, die unbekannt, aber mindestens so groß wie , wobei S ist ist die Menge an Speicherplatz, die der Algorithmus benötigt. Denn wenn die ganzen Zahlen nicht so groß wären, wie könnten Sie dann überhaupt Ihr Gedächtnis ansprechen? Für polynomielle Zeit- und Raumalgorithmen ist es dasselbe wie für O (log n) Bits, aber für exponentielle Raumalgorithmen vermeidet es das Problem.log2S

Wenn S die tatsächlich vorhandene Speicherkapazität überschreitet, wird Ihr Algorithmus natürlich überhaupt nicht ausgeführt. Oder es wird ausgeführt, indem Informationen in und aus dem Speicher ausgelagert werden, und Sie sollten ein Speicherhierarchiemodell anstelle des RAM-Modells verwenden.


Ich bin an die Idee gewöhnt, dass das Maschinenmodell von der Eingabegröße abhängen sollte , aber es ist ein wenig verzwickt, das Maschinenmodell vom Algorithmus abhängen zu lassen. Möchten Sie wirklich, dass Ihr Computer ein Problem in PSPACE in konstanter Zeit löst, solange Sie bereits exponentiellen Speicherplatz verwenden? n
Jeffs

3
Für mich geht es weniger darum, das Modell je nach Algorithmus zu variieren, sondern vielmehr darum, ein Modell zu haben, das fest ist, aber nicht alle Algorithmen ausführen kann (weil der Speicherplatz knapp wird). Das hört sich für mich nicht so anders an als bei echten Computern.
David Eppstein

1
Davids Antwort überzeugt mich nicht. Hier gibt es zwei Probleme. Einer ist theoretisch, der andere praktisch. In der Theorie ist es natürlicher, das Modell genau zu betrachten und die Laufzeit angemessen zu analysieren. In der Praxis ist es nicht einfach zu erkennen, ob in einem bestimmten Fall tatsächlich nicht genügend Speicher vorhanden ist, da bei der Implementierung des Algorithmus verschiedene Optimierungen vorgenommen werden können (und teilweise Speicherung usw.) wie wir die Sets speichern und indizieren Das obige Modell hilft in dieser Hinsicht nicht.
Chandra Chekuri

8

In dem kürzlich erschienenen Buch von Fedor V. Fomin und Dieter Kratsch " Exakte Exponentialalgorithmen ", in dem sie die Laufzeit im Stückkosten-RAM-Modell und im Protokollkosten-RAM-Modell ( - die maximale Entfernung) angeben, wird dieses Problem diskutiert zwischen den Städten und wenn ):f ( n ) = O * ( g ( n ) ) f ( n ) = O ( g ( n ) p o l y ( n ) )Wf(n)=O(g(n))f(n)=O(g(n)poly(n))

2 n logW n O ( 1 ) 2 n logW n O ( 1 ) O * ( 2 n )O(2n) und (Anmerkung, ).2nlogWnO(1)2nlogWnO(1)O(2n)


1
Sie umgehen das Problem, indem sie den Polynomfaktor verbergen. Ich möchte wissen, was der Polynomfaktor ist!
Jeffs

3
Sie nehmen an, dass der Polynomfaktor (siehe den Link in meinem Kommentar). n2
Oleksandr Bondarenko
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.