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.