El famoso artículo de 1983 de H. Lenstra Integer Programming With A Fixed Number Of Variables establece que los programas enteros con un número fijo de variables pueden resolverse en el tiempo polinomial en la longitud de los datos.
Lo interpreto de la siguiente manera.
- La programación de enteros en general todavía es NP completa, pero si el tamaño de mi problema típico en cuestión (por ejemplo, alrededor de 10.000 variables, un número arbitrario de restricciones) es factible en la práctica, entonces podría construir un algoritmo que escale polinomialmente en el número de restricciones, pero no en El número de variables y restricciones.
- El resultado también es aplicable para la programación binaria, ya que puedo forzar cualquier número entero a 0-1 agregando una restricción apropiada.
¿Es correcta mi interpretación?
¿Este resultado tiene alguna implicación práctica? Es decir, ¿hay una implementación disponible o se usa en solucionadores populares como CPLEX, Gurobi o Mosek?
Algunas citas del periódico:
Esta longitud puede, para nuestros propósitos, definirse como n · m · log (a + 2), donde a denota el máximo de los valores absolutos de los coeficientes de A y b. De hecho, no es probable que exista tal algoritmo polinómico, ya que el problema en cuestión es NP-completo
[...]
Se conjeturó [5], [10] que para cualquier valor fijo de n existe un algoritmo polinómico para la solución del problema de programación lineal de enteros. En el presente trabajo demostramos esta conjetura exhibiendo dicho algoritmo. El grado del polinomio por el cual se puede limitar el tiempo de ejecución de nuestro algoritmo es una función exponencial de n.