O famoso artigo de 1983 de H. Lenstra Programação inteira com um número fixo de variáveis afirma que programas inteiros com um número fixo de variáveis são solucionáveis no polinômio no tempo no comprimento dos dados.
Eu interpreto isso da seguinte maneira.
- A programação inteira, em geral, ainda é NP-completa, mas se meu tamanho típico de problema em questão (digamos cerca de 10.000 variáveis, um número arbitrário de restrições) for possível na prática, eu poderia construir um algoritmo que seja escalonado polinomialmente no número de restrições, mas não em o número de variáveis e restrições.
- O resultado também é aplicável à programação binária, pois posso forçar qualquer número inteiro para 0-1 adicionando uma restrição apropriada.
Minha interpretação está correta?
Esse resultado tem implicações práticas? Ou seja, existe uma implementação disponível ou é usada em solucionadores populares como CPLEX, Gurobi ou Mosek?
Algumas citações do artigo:
Esse comprimento pode, para nossos propósitos, ser definido como n · m · log (a + 2), onde a denota o máximo dos valores absolutos dos coeficientes de A e b. De fato, não é provável que exista um algoritmo polinomial, pois o problema em questão é NP-completo
[...]
Foi conjecturado [5], [10] que para qualquer valor fixo de n existe um algoritmo polinomial para a solução do problema de programação linear inteira. No presente artigo, provamos essa conjectura exibindo esse algoritmo. O grau do polinômio pelo qual o tempo de execução do nosso algoritmo pode ser limitado é uma função exponencial de n.