Le célèbre article de 1983 de H. Lenstra Integer Programming With A Fixed Number Of Variables indique que les programmes entiers avec un nombre fixe de variables peuvent être résolus dans le polynôme temporel dans la longueur des données.
J'interprète cela comme suit.
- La programmation entière en général est toujours NP-complète mais si ma taille de problème typique à portée de main (disons environ 10.000 variables, un nombre arbitraire de contraintes) est faisable dans la pratique, alors je pourrais construire un algorithme qui évolue polynomialement dans le nombre de contraintes mais pas dans le nombre de variables et de contraintes.
- Le résultat est également applicable à la programmation binaire car je peux forcer n'importe quel entier à 0-1 en ajoutant une contrainte appropriée.
Mon interprétation est-elle correcte?
Ce résultat a-t-il des implications pratiques? Autrement dit, y a-t-il une implémentation disponible ou est-elle utilisée dans des solveurs populaires comme CPLEX, Gurobi ou Mosek?
Quelques citations du journal:
Cette longueur peut, pour notre propos, être définie comme n · m · log (a + 2), où a désigne le maximum des valeurs absolues des coefficients de A et b. En effet, un tel algorithme polynomial est peu susceptible d'exister, car le problème en question est NP-complet
[...]
On a supposé [5], [10] que pour toute valeur fixe de n, il existe un algorithme polynomial pour la solution du problème de programmation linéaire entier. Dans le présent article, nous prouvons cette conjecture en présentant un tel algorithme. Le degré du polynôme par lequel le temps d'exécution de notre algorithme peut être borné est une fonction exponentielle de n.