Słynny artykuł H. Lenstry Integer Programowanie z ustaloną liczbą zmiennych z 1983 r. Stwierdza, że programy liczb całkowitych o ustalonej liczbie zmiennych można rozwiązać wielomianem czasowym długości danych.
Interpretuję to w następujący sposób.
- Programowanie liczb całkowitych ogólnie jest nadal NP-kompletne, ale jeśli mój typowy rozmiar problemu (powiedzmy około 10.000 zmiennych, dowolna liczba ograniczeń) jest wykonalny w praktyce, to mógłbym zbudować algorytm, który skaluje się wielomianowo pod względem liczby ograniczeń, ale nie w liczba zmiennych i ograniczeń.
- Wynik ma również zastosowanie do programowania binarnego, ponieważ mogę wymusić dowolną liczbę całkowitą na 0-1, dodając odpowiednie ograniczenie.
Czy moja interpretacja jest poprawna?
Czy ten wynik ma jakieś praktyczne implikacje? To znaczy, czy jest dostępna implementacja, czy jest stosowana w popularnych rozwiązaniach takich jak CPLEX, Gurobi lub Mosek?
Niektóre cytaty z pracy:
Dla naszych celów długość ta może być zdefiniowana jako n · m · log (a + 2), gdzie a oznacza maksimum wartości bezwzględnych współczynników A i b. Rzeczywiście, prawdopodobnie nie istnieje żaden algorytm wielomianowy, ponieważ problem, o którym mowa, jest NP-zupełny
[...]
Przypuszczano [5], [10], że dla dowolnej stałej wartości n istnieje algorytm wielomianowy do rozwiązania problemu programowania liniowego liczb całkowitych. W niniejszym artykule dowodzimy tego przypuszczenia, przedstawiając taki algorytm. Stopień wielomianu, przez który można ograniczyć czas działania naszego algorytmu, jest funkcją wykładniczą n.
źródło
Odpowiedzi:
Bieżący najszybszy algorytm ma w rzeczywistości długość liniową programu liczb całkowitych dla każdej stałej wartości . W swojej rozprawie doktorskiej Lokshtanov (2009) ładnie podsumowuje wyniki Lenstry (1983), Kannana (1987) i Franka i Tardosa (1987) według następującego twierdzenia.n
Zatem problemem jest liniowy parametr o stałym parametrze sparametryzowany liczbą zmiennych.
1) Tak, całkowite programowanie liniowe jest „nadal” NP-kompletne. Czas działania powyższego wyniku teoretycznego zależy tylko liniowo od liczby wiązań, więc ładnie skaluje się pod względem liczby wiązań. Jednak nie znam faktycznej implementacji tego algorytmu.
2) Tak, obserwowanie, jak zmienne przyjmują wartości binarne.
Aktualizacja. Zależność od można faktycznie poprawić w czasie wykonywania Integer Linear Programming. Na podstawie Clarkson (1995) i Eisenbrand (2003) (patrz komentarze poniżej) można uzyskać algorytm z czasem działania gdzie to liczba ograniczeń, a to maksymalna liczba bitów wymagana do zakodowania ograniczenia lub funkcji celu.O ( 2 n n m + 8 n n √L. ms
źródło
Oto kilka punktów dotyczących praktycznych implikacji wyników typu Lenstra oraz możliwych implementacji w CPLEX, Gurobi itp. Jednym z kluczowych kroków w większości takich algos dla IP jest rozgałęzienie w „dobrych” lub „cienkich” kierunkach, tj. hiperpłaszczyzny, wzdłuż których szerokość polytopu nie jest zbyt duża (wielomian w zmiennych i rozmiarze danych). Ale Mahajan i Ralphs ( tutaj przedruk ) pokazali, że problem wyboru optymalnego rozłączenia jest NP-zupełny. Trudno więc stworzyć praktycznie wydajne implementacje tej klasy alg.
Większość algorytmów zaimplementowanych w pakietach takich jak CPLEX można zaklasyfikować jako metody rozgałęziające. Ta rodzina technik zazwyczaj działa dobrze na instancjach IP, które są wykonalne i często są w stanie znaleźć prawie optymalne rozwiązania. Ale algos typu Lenstra koncentrują się na najgorszych przypadkach instancji IP, które na początku są niewykonalne, a celem jest udowodnienie ich całkowitej nieczytelności (i badają złożoność tego zadania). AFAIK, nie ma klasy problemów o praktycznym znaczeniu, które pasowałyby do tego opisu. Tak więc ludzie CPLEX / Gurobi prawdopodobnie nie wdrożą wkrótce algos typu Lenstra.
źródło