У відомому документі H. Lenstra Integer програмування з фіксованою кількістю змінних 1983 р. Зазначено, що цілі програми з фіксованою кількістю змінних можуть бути вирішені за часом у поліномії по довжині даних.
Я тлумачу це так.
- Програмування цілочисень загалом все ще є NP-повним, але якщо мій типовий розмір проблеми (наприклад, про 10 000 змінних, довільне число обмежень) є практичним, тоді я міг би побудувати алгоритм, який поліноміально масштабує за кількістю обмежень, але не для кількість змінних і обмежень.
- Результат застосовний також для двійкового програмування, оскільки я можу примусити будь-яке ціле число до 0-1, додавши відповідне обмеження.
Чи правильно моє тлумачення?
Чи має цей результат якісь практичні наслідки? Тобто, чи є реалізація, чи вона використовується у популярних рішеннях, таких як CPLEX, Gurobi чи Mosek?
Деякі цитати з паперу:
Для наших цілей ця довжина може бути визначена як n · m · log (a + 2), де a позначає максимум абсолютних значень коефіцієнтів A і b. Дійсно, такого поліноміального алгоритму, ймовірно, не існує, оскільки проблема, про яку йде мова, не є повною
[...]
[5], [10] було припущено, що для будь-якого фіксованого значення n існує поліноміальний алгоритм рішення цілочисельної задачі лінійного програмування. У цій роботі ми доводимо цю гіпотезу, демонструючи такий алгоритм. Ступінь многочлена, на який можна обмежити час роботи нашого алгоритму, є експоненціальною функцією n.