L'algorithme de Karmarkar est un algorithme introduit par Narendra Karmarkar en 1984 pour résoudre des problèmes de programmation linéaire . Il s'agit du premier algorithme raisonnablement efficace qui résout ces problèmes en temps polynomial . La méthode de l'ellipsoïde est également en temps polynomial mais s'est avérée inefficace en pratique.
En désignant par le nombre de variables, m le nombre de contraintes d'inégalité et le nombre de bits d'entrée de l'algorithme, l'algorithme de Karmarkar nécessite des opérations sur des nombres à -chiffres, par rapport à de telles opérations pour l'algorithme ellipsoïde. Dans les problèmes « carrés », lorsque m est dans O( n ), l'algorithme de Karmarkar nécessite des opérations sur des nombres à -chiffres, par rapport à de telles opérations pour l'algorithme ellipsoïde. Le temps d'exécution de l'algorithme de Karmarkar est donc
en utilisant la multiplication basée sur la FFT (voir la notation Big O ).
L'algorithme de Karmarkar appartient à la classe des méthodes de point intérieur : l'estimation actuelle de la solution ne suit pas la limite de l' ensemble faisable comme dans la méthode du simplexe , mais se déplace à l'intérieur de la région faisable, améliorant l'approximation de la solution optimale d'une fraction définie à chaque itération et convergeant vers une solution optimale avec des données rationnelles.
L'algorithme
Considérons un problème de programmation linéaire sous forme matricielle :
L'algorithme de Karmarkar détermine la prochaine direction possible vers l'optimalité et réduit d'un facteur 0 < γ ≤ 1. Il est décrit dans un certain nombre de sources. Karmarkar a également étendu la méthode pour résoudre des problèmes avec des contraintes entières et des problèmes non convexes.
Algorithme de mise à l'échelle affine
Comme l'algorithme actuel est plutôt compliqué, les chercheurs ont cherché une version plus intuitive de celui-ci et ont développé en 1985 la mise à l'échelle affine , une version de l'algorithme de Karmarkar qui utilise des transformations affines là où Karmarkar utilisait des transformations projectives , pour se rendre compte quatre ans plus tard qu'ils avaient redécouvert un algorithme publié par le mathématicien soviétique II Dikin en 1967. La méthode de mise à l'échelle affine peut être décrite succinctement comme suit. Bien qu'applicable aux problèmes à petite échelle, ce n'est pas un algorithme en temps polynomial.
Entrée : A, b, c, ,
critère d'arrêt , γ .
faire pendant
l'arrêt critère
non satisfait
si alors renvoyer illimité fin si fin faire
- « ← » désigne une affectation . Par exemple, « le plus grand élément ← » signifie que la valeur du plus grand élément change en valeur de l'élément .
- « return » termine l'algorithme et renvoie la valeur suivante.
Exemple

Considérons le programme linéaire
Autrement dit, il existe 2 variables et 11 contraintes associées à des valeurs variables de . Cette figure montre chaque itération de l'algorithme sous forme de points en forme de cercle rouge. Les contraintes sont représentées par des lignes bleues.
Controverse sur les brevets
À l'époque où il a inventé l'algorithme, Karmarkar était employé par IBM en tant que chercheur postdoctoral au laboratoire de recherche IBM de San Jose en Californie. Le 11 août 1983, il a donné un séminaire à l'université de Stanford expliquant l'algorithme, son affiliation étant toujours indiquée comme IBM. À l'automne 1983, Karmarkar a commencé à travailler chez AT&T et a soumis son article au Symposium ACM de 1984 sur la théorie de l'informatique (STOC, qui s'est tenu du 30 avril au 2 mai 1984) en indiquant AT&T Bell Laboratories comme son affiliation. Après avoir appliqué l'algorithme à l'optimisation du réseau téléphonique d'AT&T, ils ont réalisé que son invention pourrait avoir une importance pratique. En avril 1985, AT&T a rapidement déposé une demande de brevet sur son algorithme.
Le brevet est devenu un élément de plus dans la controverse en cours sur la question des brevets logiciels . Cela a laissé de nombreux mathématiciens mal à l'aise, comme Ronald Rivest (lui-même l'un des détenteurs du brevet sur l' algorithme RSA ), qui a exprimé l'opinion que la recherche se déroulait sur la base que les algorithmes devraient être libres. Même avant que le brevet ne soit effectivement accordé, on a fait valoir qu'il pourrait y avoir un art antérieur applicable. Des mathématiciens spécialisés dans l'analyse numérique , dont Philip Gill et d'autres, ont affirmé que l'algorithme de Karmarkar est équivalent à une méthode de barrière de Newton projetée avec une fonction de barrière logarithmique , si les paramètres sont choisis de manière appropriée. Le juriste Andrew Chin estime que l'argument de Gill était erroné, dans la mesure où la méthode qu'ils décrivent ne constitue pas un « algorithme », car elle nécessite des choix de paramètres qui ne découlent pas de la logique interne de la méthode, mais s'appuient sur des conseils externes, essentiellement de l'algorithme de Karmarkar. De plus, les contributions de Karmarkar sont considérées comme loin d'être évidentes à la lumière de tous les travaux antérieurs, y compris ceux de Fiacco-McCormick, Gill et d'autres cités par Saltzman. Le brevet a été débattu au Sénat américain et accordé en reconnaissance de l'originalité essentielle du travail de Karmarkar, sous le brevet américain 4 744 028 : « Méthodes et appareils pour une allocation efficace des ressources » en mai 1988.
AT&T a conçu un système informatique multiprocesseur vectoriel spécifiquement pour exécuter l'algorithme de Karmarkar, appelant la combinaison résultante de matériel et de logiciel KORBX, et a commercialisé ce système au prix de 8,9 millions de dollars américains. Son premier client était le Pentagone .
Les opposants aux brevets logiciels ont en outre soutenu que les brevets ont ruiné les cycles d'interaction positifs qui caractérisaient auparavant la relation entre les chercheurs en programmation linéaire et l'industrie, et plus particulièrement qu'ils ont isolé Karmarkar lui-même du réseau de chercheurs en mathématiques dans son domaine.
Le brevet lui-même a expiré en avril 2006 et l’algorithme est actuellement dans le domaine public .
La Cour suprême des États-Unis a jugé que les mathématiques ne pouvaient pas être brevetées dans l'affaire Gottschalk c. Benson [ ]. Dans cette affaire, la Cour a d'abord examiné si les algorithmes informatiques pouvaient être brevetés et a jugé qu'ils ne le pouvaient pas parce que le système des brevets ne protège pas les idées et les abstractions similaires. Dans l'affaire Diamond c. Diehr , la Cour suprême a déclaré : « Une formule mathématique en tant que telle ne bénéficie pas de la protection de nos lois sur les brevets, et ce principe ne peut être contourné en essayant de limiter l'utilisation de la formule à un environnement technologique particulier. » Dans l'affaire Mayo Collaborative Services c. Prometheus Labs., Inc. , la Cour suprême a expliqué en outre que « la simple mise en œuvre d'un principe mathématique sur une machine physique, à savoir un ordinateur, n'est pas une application brevetable de ce principe. »
Applications
L'algorithme de Karmarkar a été utilisé par l'armée américaine pour la planification logistique pendant la guerre du Golfe .
- Adler, Ilan; Karmarkar, Narendra; Resende, Mauricio GC ; Veiga, Geraldo (1989). "Une implémentation de l'algorithme de Karmarkar pour la programmation linéaire". Programmation mathématique . 44 (1–3) : 297–335. doi :10.1007/bf01587095. S2CID 12851754.
- Narendra Karmarkar (1984). « Un nouvel algorithme de temps polynomial pour la programmation linéaire », Combinatorica , Vol 4 , nr. 4, p. 373–395.