Die berühmte Arbeit von H. Lenstra aus dem Jahr 1983 über die Ganzzahlprogrammierung mit einer festen Anzahl von Variablen besagt, dass Ganzzahlprogramme mit einer festen Anzahl von Variablen zeitpolynomiell in der Länge der Daten lösbar sind.
Ich interpretiere das wie folgt.
- Ganzzahlige Programmierung ist im Allgemeinen immer noch NP-vollständig, aber wenn meine typische Problemgröße (sagen wir etwa 10.000 Variablen, eine beliebige Anzahl von Einschränkungen) in der Praxis realisierbar ist, dann könnte ich einen Algorithmus konstruieren, der polynomiell in der Anzahl von Einschränkungen skaliert, jedoch nicht in die Anzahl der Variablen und Nebenbedingungen.
- Das Ergebnis kann auch für die Binärprogrammierung verwendet werden, da ich eine beliebige Ganzzahl durch Hinzufügen einer entsprechenden Einschränkung auf 0-1 setzen kann.
Ist meine Interpretation korrekt?
Hat dieses Ergebnis praktische Auswirkungen? Gibt es also eine Implementierung oder wird sie in gängigen Solvern wie CPLEX, Gurobi oder Mosek verwendet?
Einige Zitate aus dem Papier:
Diese Länge kann für unsere Zwecke als n · m · log (a + 2) definiert werden, wobei a das Maximum der Absolutwerte der Koeffizienten von A und b bezeichnet. In der Tat ist es wahrscheinlich, dass kein derartiger Polynomalgorithmus existiert, da das fragliche Problem NP-vollständig ist
[...]
Es wurde vermutet [5], [10] dass für jeden festen Wert von n ein Polynomalgorithmus zur Lösung des ganzzahligen linearen Programmierproblems existiert. In der vorliegenden Arbeit beweisen wir diese Vermutung, indem wir einen solchen Algorithmus zeigen. Der Grad des Polynoms, durch den die Laufzeit unseres Algorithmus begrenzt werden kann, ist eine Exponentialfunktion von n.
quelle
Antworten:
Der derzeit schnellste Algorithmus ist in der Länge des ganzzahligen linearen Programms für jeden festen Wert von linear . In seiner Doktorarbeit fasst Lokshtanov (2009) die Ergebnisse von Lenstra (1983), Kannan (1987) und Frank & Tardos (1987) anhand des folgenden Theorems gut zusammen.n
Somit ist das Problem linear durch die Anzahl der Variablen fest parametrisiert.
1) Ja, die ganzzahlige lineare Programmierung ist "noch" NP-vollständig. Die Laufzeit des obigen theoretischen Ergebnisses hängt nur linear von der Anzahl der Abhängigkeiten ab, sodass die Anzahl der Abhängigkeiten gut skaliert. Ich kenne jedoch keine tatsächliche Implementierung dieses Algorithmus.
2) Ja, die Variablen binäre Werte annehmen zu lassen, ist, wie Sie gesehen haben, ganz einfach.
quelle
Hier sind einige Punkte in Bezug auf die praktischen Auswirkungen von Ergebnissen vom Typ Lenstra und mögliche Implementierungen in CPLEX, Gurobi usw. Einer der wichtigsten Schritte in den meisten solchen Algos für IP ist die Verzweigung in "gute" oder "dünne" Richtungen. dh Hyperebenen, entlang derer die Breite des Polytops nicht zu groß ist (Polynom in Variablen und Datengröße). Aber Mahajan und Ralphs (Preprint hier ) haben gezeigt , dass das Problem der Auswahl eine optimale Disjunktion ist NP-vollständig. Es erscheint daher schwierig, praktisch effiziente Implementierungen dieser Algoklasse zu erstellen.
Die meisten in Paketen wie CPLEX implementierten Algos könnten als Branch-and-Cut-Methoden klassifiziert werden. Diese Familie von Techniken eignet sich in der Regel gut für IP-Instanzen, die durchführbar sind und häufig nahezu optimale Lösungen finden. Der Fokus von Algen vom Typ Lenstra liegt jedoch auf IP-Instanzen im ungünstigsten Fall, die zunächst nicht realisierbar sind, und das Ziel besteht darin , ihre ganzzahlige Unrealisierbarkeit zu beweisen (und die Komplexität dieser Aufgabe zu untersuchen). AFAIK, es gibt keine Klasse von Problemen mit praktischer Relevanz, die zu dieser Beschreibung passen. Daher würden CPLEX / Gurobi-Leute wahrscheinlich bald keine Algen vom Typ Lenstra mehr implementieren.
quelle