Dualité et programmation linéaire: Énoncé et guide Cours MAP 557, «Recherche Opérationnelle : aspects mathématiques et applications» Séance 2, 23 Septembre 2016 Acquisition du cours Signalons quelques résultats clés. Dans le chapitre sur la dualité, et particulièrement dans la section 2.4: - Le résultat de dualité faible. - Le résultat sur l optimalité approchée. - Le calcul du dual d un programme linéaire, et le résultat de dualité forte en programmation linéaire. (À partir de la section 2.5, il s agit de résultats de dualité plus avancés.) Dans le début du chapitre sur les flots: - La totale unimodularité de la matrice de flots - La décomposition d un flot en somme de flots associés à des chemins et à des circuits. 2.1 Meilleure approximation en norme sup Soient (x 1, y 1 ),..., (x n, y n ) des points du plan. On cherche une droite affine x ax + b minimisant la norme sup du vecteur ax + b y := (ax i + b y i ). Formuler ce problème comme un programme linéaire. Même question pour la norme l 1. 2.2 Les vertus de la médiane Montrer qu étant donnés k réels x 1,..., x k, le problème consistant à minimiser Min x x i p, x R 1 i k fournit la médiane des x i pour p = 1. (Quelle est la solution pour p = 2?) Montrer que si x 1,..., x k R n, le problème Min 1 i k peut s écrire comme un PL. x x i l1, x R n 2.3 Solutions de systèmes linéaires sous-déterminés: saurez vous reconnaître les programmes linéaires? On considère le système linéaire Ax = b avec A R p n, b R p, et p < n (cas sous-déterminé). Afin de sélectionner une solution particulière intéressante de Ax = b, on se propose de considérer les différents problèmes d optimisation: Min x i, x R n, Ax = b ; (1) Min Min x i, x R n, Ax = b ; (2) x 2 i, x R n, Ax = b ; (3) Min max x i, x R n, Ax = b ; (4) Min N(x), x R n, Ax = b (5) où N(x) := {i 1 i n, x i 0} désigne le nombre de coordonnées non-nulles de x (rappelons qu on désigne par Y le nombre d éléments d un ensemble Y ); Min ( max x i) ( min x j), x R n, Ax = b ; (6) Min x [1] + + x [k], x R n, Ax = b ; (7) où k n est fixé, et où pour tout 1 q n, x [q] désigne le q-ième plus grand nombre de la suite x 1,..., x n (par exemple, si x = ( 1, 0, 1, 7), x [1] = 7, x [2] = x [3] = 1, x [4] = 0). Pour chacun de ces problèmes, dire si oui ou non il peut être résolu par la programmation linéaire, et si oui, expliciter le programme linéaire. (Donner le cas échéant brièvement l interprétation pratique du problème). 2.4 Algorithme hongrois Cet exercice s intéresse à un algorithme dû à Kuhn et Munkres pour la résolution du problème d affectation optimale. Nous reprenons donc les notations des exercices 1.3 et 1.4 de la première planche de PC. Cet algorithme repose sur la dualité entre le problème d affectation : max x R n n et le problème suivant : i, j xij = 1, j,, i xij = 1 min y R n, z R n i, j, z j w ij w ij x ij, (8) z j. (9) 1
On dira d une solution admissible (y, z) R n R n du problème (9) qu elle est un étiquetage admissible des sommets. Etant donné un tel étiquetage, nous noterons par G (y,z) le graphe constitué des arêtes (i, j ) tel que z j = w ij. 1. Montrer qu on peut toujours trouver facilement un étiquetage admissible. 2. Montrer que si (y, z) est un étiquetage admissible, et que C est un couplage parfait dans le graphe G (y,z), alors C est un couplage optimal. Indication: on utilisera la condition des écarts complémentaires sur le problème d affectation optimale (8) et son dual (9). Le principe de l algorithme de Kuhn et Munkres est donc de construire de manière incrémentale un étiquetage admissible des sommets (y, z), et d extraire un couplage C dans le graphe G (y,z). Si ce couplage est parfait, alors d après la question précédente, c est un couplage optimal. Nous nous intéressons maintenant au cas où le couplage n est pas parfait. Etant donnés un étiquetage admissible (y, z) R n R n et un couplage C dans le graphe G (y,z), on dit qu un chemin k 1,..., k p dans le graphe G (y,z) est alterné si pour tout 1 l p 2, l arête formée des sommets k l et k l+1 est dans C si et seulement si celle formée des sommets k l+1 et k l+2 n est pas dans C. On dit que ce chemin est augmentant si de plus, les sommets k 1 et k p sont libres, au sens où ils ne sont reliés à aucun autre sommet par le couplage C. (3) Déterminer les ensembles S {1,..., n} et T {1,..., n } des sommets accessibles depuis i par un chemin alterné dans le graphe G (y,z). (4) Si un sommet de T est libre, augmenter C comme à la question 3, et retourner à l étape (2). (5) Sinon, remplacer (y, z) par l étiquetage (y, z ) construit à la question 4, et retourner à l étape (3). La correction de l algorithme résulte de manière immédiate de la question 2. 5. Prouver la terminaison de l algorithme, et donner une estimation de sa complexité en fonction de n. 3. Etant donné un chemin augmentant, comment peuton construire un couplage C de taille strictement plus grande que C? Supposons maintenant que le sommet i {1,..., n} soit libre, et qu il n existe aucun chemin augmentant partant de i dans le graphe G (y,z). Notons S l ensemble des sommets i {1,..., n} accessible depuis i par un chemin alterné. De façon analogue, soit T l ensemble des sommets j {1,..., n } accessible depuis i par un chemin alterné. 4. On pose α = min i S, j T (z j w ij ). Montrer qu en posant y i = y i α si i S, y i sinon, et z j = z j + α si j T, z j sinon pour tous 1 i, j n, le couple (y, z ) forme un étiquetage admissible satisfaisant les conditions suivantes: (i) C est un couplage dans G (y,z ), (ii) tout sommet accessible depuis i par un chemin alterné dans G (y,z) l est également dans G (y,z ), (iii) il existe un j T qui est accessible depuis i par un chemin alterné dans G (y,z ). Nous sommes maintenant prêts à formuler l algorithme de Kuhn et Munkres: (1) Construire l étiquetage admissible (y, z) de la question 1, et extraire un couplage quelconque C dans G (y,z). (2) Si le couplage C est parfait dans le graphe G (y,z), retourner C. Sinon, considérer un sommet libre i {1,..., n} de G (y,z). 2
MAP557, Recherche Opérationnelle: Aspects mathématiques et applications Guide pour la résolution des exercices Séance 2 (23 Septembre) Corrigé: Meilleure approximation en norme sup On introduit une variable supplémentaire t, et l on minimise la fonction linéaire (a, b, t) t sous les 2n contraintes ±(ax i + b y i ) t, i = 1,..., n. Une solution optimale de ce programme linéaire minimie bien la norme sup du vector ax b. Dans le cas de la norme 1, on introduit n variables supplémentaires t 1,..., t n, et l on minimise la fonction linéaire (a, b, t 1,..., t n ) t 1 + + t n sous les contraintes ±(ax i + b y i ) t i, i = 1,..., n. Plus généralement, pour toute norme polyédrale, i.e., pour toute norme dont la boule unité est un polytope, le problème consistant à minimiser ax b se ramène à un programme linéaire. Corrigé: Solutions de systèmes linéaires sous-déterminés: saurez vous reconnaître les programmes linéaires? 1. Le premier problème est syntaxiquement un programme linéaire, mais il n a aucun intérêt: la valeur est soit égale à ±, ou bien la fonction objectif est constante sur l ensemble des solutions admissibles. En effet, s il n existe pas de vecteur x tel que Ax = b, la valeur est +, s il existe x tel que Ax = b, l ensemble des solutions admissibles est un sous-espace affine x + vect((v j ) 1 j p ). Si l un des v j vérifie i v ji 0, alors la valeur est (considérer x = x ± µv j, et faire tendre µ ). Dans le dernier cas, la fonction valeur est constante, et égale à i x i. 2. Le second problème (minimisation de la norme l 1 ) peut se formuler comme un programme linéaire en introduisant des variables t i, 1 i n, Min t i, x R n, t R n, Ax = b, x i t i, x i t i, 1 i n. Le problème l 1 a des propriétés remarquables, voir notamment Candès, Rudelson, Tao, Vershynin, Error correction via linear programming, Proc. 46th IEEE Symp. On Fundations of Computer Science (FOCS), 2005, pages 295-308. 3. Le troisième problème n est autre que le problème classique des moindres carrés (la solution se calcule explicitement en considérant le Lagrangien L(x, λ) = i x2 i +λ (b Ax), la condition L/ λ = 0 conduit à 2x = A λ, et comme Ax = b, il vient λ = (AA ) 1 2b si A est de rang maximal, ce que l on peut toujours supposer, et donc x = A (AA ) 1 b). 4. Le quatrième problème peut se formuler comme un programme linéaire en introduisant une variable scalaire t, Min t, x R n, t R, Ax = b, x i t, x i t, 1 i n. 5. Le cinquième problème n est pas un PL (la fonction objectif est discontinue). Bien que difficile, il est très intéressant en pratique: cela revient à rechercher une solution la plus creuse possible. (En pratique, on résoud plutôt le problème l 1 qui a des vertus assez comparables - faire un dessin en dimension petite pour s en convaincre.) 6. Comme ( max x i) ( min x j) = max (x i x j ) le sixième problème peut se formuler comme un programme linéaire en introduisant une variable scalaire t, Min t, x R n, t R, Ax = b, x i x j t, 1 i, j n. La fonction (max x i ) (min x j ) est naturelle dans un certain nombre d applications (si x i est la richesse de l individu i dans une société, cela représente l écart maximal de revenu de la société). 7. On remarque que x [1] + + x [k] = max σ Σ k σ x (10) où Σ k désigne l ensemble des vecteurs formés de 0 et de ±1 avec précisément k coefficients non-nuls. Vérifions qu il en est bien ainsi: on a trivialement σ x x [1] + + x [k] pour tout σ Σ k, en posant en outre x [1] = x i1,..., x [k] = x ik, et en choisissant σ tel que σ ij = sgn x ij, pour 1 j k, et σ r = 0 pour r {i 1,..., i k }, il vient σ x = x [1] + + x [k]. Ceci montre (10). Le septième problème est donc équivalent au PL Min t, x R n, t R Ax = b, σ x t, σ Σ k,. Ce PL a un nombre exponentiel de contraintes, cependant, nous verrons en cours qu il peut être résolu efficacement en pratique (en rajoutant des coupes ou cutting planes de manière incrémentale) à condition de savoir décider facilement (en temps polynômial) si l une des contraintes est transgressée. C est bien le cas ici, car calculer x [1] + + x [k] revient à trier x 1,..., x n, ce qui peut se faire en temps O(n log n). L intérêt de la fonction x x [1] + + x [k] est d être une norme qui interpole entre la norme l (pour k = 1) et la norme l 1 (pour k = n). Remarquons que dans les cas (2), (4), (7) la fonction objectif est une norme dont la boule unité est un polytope. Les contraintes que l on a fait apparaître correspondent précisément aux facettes de la boule unité pour cette norme. Dans le cas (6), on a affaire à une semi-norme, et l on a une interprétation géométrique analogue. i
Corrigé: Algorithme hongrois 1. Il suffit de définir, pour tout i {1,..., n}, y i = 0, et pour tout j {1,..., n}, z j = max w ij. 2. Rappelons tout d abord la condition des écarts complémentaires du problème (8) et son dual (9). Si x et (y, z) sont respectivement des solutions admissibles des problèmes (8) et (9), on note que: w ij x ij ( ) z j = + + = w ij x ij ( y i (1 z j (1 x ij ) x ij ) x ij ( z j w ij ). z j ) D après le théorème de dualité forte (Théorème 2.47 du polycopié), la valeur des problèmes (8) et (9) coïncident. Ainsi, x et (y, z) sont simultanément optimales si et seulement leur valeur coïncident, ce qui d après le calcul précédent, équivaut à ce que la condition x ij( z j w ij ) = 0 soit réalisée. Puisque pour tout 1 i, j n, on a x ij 0 et z j w ij, la condition des écarts complémentaires se réduit à x ij ( z j w ij ) = 0 pour tout 1 i, j n. Si C est un couplage parfait dans G (y,z), soit x son vecteur indicateur (x ij = 1 si (i, j ) C, 0 sinon). Alors x est une solution admissible de (8), et pour tout (i, j) tel que x ij = 1, on a nécessairement z j = w ij. Par conséquent, x et (y, z) vérifient la condition des écarts complémentaires, et on en déduit que x est le vecteur indicateur d un couplage parfait optimal. 3. Supposons que la suite des sommets k 1, k 2,..., k p forme un chemin augmentant dans le graphe G (y,z). Supposons, sans perte de généralité, que k 1 {1,..., n}. Ainsi, si l est impair, k l {1,..., n}, tandis que si l est pair, k l {1,..., n }. De plus, comme k 1 et k p sont libres, l entier p est nécessairement pair. Si q = p/2, on notera donc i l = k 2l 1 et j l = k 2l pour tout 1 l q. Avec ces notations, (i l, j l ) C pour tout 1 l q, et (i l+1, j l ) C pour tout 1 l q 1. Considérons alors l ensemble d arêtes C défini par C = (C \ {(i l+1, j l) 1 l q 1}) {(i l, j l) 1 l q}. Vérifions que C forme un couplage. Les sommets i 1 et j q sont tous deux libres dans C. Ils ne sont donc adjacents qu à une seule arête dans C (respectivement (i 1, j 1) et (i q, j q)). De même, pour 2 l q chaque sommet i l n est adjacent qu à l arête (i l, j l ) dans C (puisque l on a retiré l arête (i l, j l 1 )). De façon analogue, si 1 l q 1, le sommet j l n est adjacent qu à l arête (i l, j l ) dans C. Enfin, le couplage C contient une arête de plus que C. On en déduit le résultat. 4. Comme suggéré dans l énoncé, introduisons α = min i S, j T ( z j w ij ). On définit alors (y, z ) de la manière suivante: pour 1 i, j n, y i = y i α si i S, y i sinon, et z j = z j + α si j T, z j sinon. Notons que α est nécessairement fini, puisque T est strictement inclus dans {1,..., n }. Si ce n est pas le cas, cela signifierait qu aucun sommet j {1,..., n } n est libre (rappelons qu on a supposé qu il n y a pas de chemin augmentant depuis i ), et donc le couplage C serait parfait, d où la contradiction. Vérifions en premier lieu que (y, z ) est un étiquetage admissible. Etant donnés 1 i, j n, il est clair que y i + z j w ij dès que i S ou j T. Maintenant, si i S et j T, alors par définition, α z j w ij, si bien que y i + z j w ij. Montrons maintenant que C est toujours un couplage dans G (y,z ). Pour cela, il suffit de montrer que C est inclus dans le graphe G (y,z ). Etant donné (i, j ) C, on peut distinguer deux cas: si j T, alors i est accessible depuis i par un chemin alterné passant par j et se terminant par l arête (i, j ), et donc i S (car i est libre). Dans ce cas, y i + z j = y i α + z j + α = w ij. si j T, alors il est impossible que i appartienne à S. En effet, il existerait k T tel que (i, k ) C (puisque i est libre), ce qui contredit le fait que C soit un couplage. Donc i S, auquel cas y i + z j = z j = w ij. On en déduit que dans les deux cas, l arête (i, j ) appartient au graphe G (y,z ). Supposons maintenant qu un sommet soit accessible par un chemin alterné dans G (y,z) depuis le sommet i. Ce chemin ne passe que par des sommets appartenant à S T, et les arêtes (i, j ) le supportant vérifient donc y i + z j = z j = w ij. Elle figurent donc dans le graphe G (y,z ). On en déduit que le sommet considéré est toujours accessible, par le même chemin alterné, dans le graphe G (y,z ). Pour terminer, considérons i S et j T tel que α = z j w ij. Comme i est libre, il existe k T tel que (i, k ) C. Donc (i, j ) ne peut pas appartenir à C. De plus, y i + z j = w ij, si bien que le graphe G (y,z ) contient l arête (i, j ). Ainsi, le sommet j est accessible depuis le sommet i par un chemin alterné passant par i, et se terminant par l arête (i, j ). 5. L algorithme est constituée de deux boucles imbriquées, la première commençant à l étape (2), et la seconde à l étape (3). A chaque retour à l étape (2), la taille du couplage C est incrémentée d une unité. La boucle extérieure ne peut donc être exécutée qu au plus n fois. De manière similaire, à chaque fois que l étape (3) est exécutée, le cardinal de l ensemble T est incrémenté, si bien que la boucle intérieure ne peut être exécutée qu au plus n fois. L algorithme termine ii
donc, et le nombre total d itérations est de l ordre de n 2 dans le cas le pire. L exécution de chaque étape peut se faire en O(n 2 ) (en particulier l étape (3) dans laquelle on peut déterminer S et T par un parcours en largeur d abord dans le graphe G (y,z) ). On peut donc borner la complexité de l algorithme par O(n 4 ). En réalité, en effectuant de manière plus subtile le calcul des ensembles S et T (en réutilisant les valeurs de S et T calculées précédemment), et en utilisant des variables auxiliaires contenant les quantités min i S ( z j w ij ) pour chaque j, on peut même optimiser l algorithme et obtenir une complexité en O(n 3 )! A titre d illustration, on pourra exécuter l algorithme pour n = 3 et la matrice de poids (w ij ) ij suivante: 1 6 4 0 8 6 0 0 1 iii