Professional Documents
Culture Documents
- notes de cours -
Jerome Galtier et Alexandre Laugier
12 mars 2010
Table des mati`eres
1 Quelques notions dalgorithmique et complexite elementaire 3
1.1 Strutures de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 La liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 La pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.3 La le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.4 Graphes et arbres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Chemins Euleriens et Hamiltoniens . . . . . . . . . . . . . . . . . . . . . . . 8
2 Modelisation de la complexite 10
2.1 Machines de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Les classes P et NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Le probl`eme SAT et le theor`eme de Levin-Cook . . . . . . . . . . . . . . . . 12
2.4 Autres probl`emes NP-Complets . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.1 3-SAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.2 VERTEX COVER . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.3 CYCLE HAMILTONIEN . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Un algorithme polynomial pour la programmation lineaire 19
3.1 La methode de Khachiyan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4 Le probl`eme de separation 22
5 Approximation des probl`emes 25
5.1 Classication des algorithmes dapproximation . . . . . . . . . . . . . . . . . 25
5.2 La programmation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.3 Approximation de multi-ot . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1
Figure 1: Puissance de calcul du meilleur ordinateur mondial au l des ans.
Lalgorithmique est une discipline sous-jacente `a une partie immense de leconomie au-
jourdhui. Le monde du travail a ete radicalement transforme pour laisser une large place ` a
lactivite assistee par ordinateur.
la complexite est en quelque sorte la matrise de lalgorithmique. Cette science vise
` a determiner, sous un certain nombre de conditions, quel sont les temps de calcul et es-
pace memoire requis pour obtenir un resultat donne. Une bonne matrise de la com-
plexite se traduit par des applications qui tournent en un temps previsible et sur un espace
memoire controle. A linverse, une mauvaise comprehension de la complexite debouchent
sur des latences importantes dans les temps de calculs, ou encore des debordements memoire
consequents, qui au mieux, gelent les ordinateurs (swap sur le disque dur) et au pire
font carrement planter la machine.
Sur la Fig. 1 on constate avec une echelle logarithmique la puissance considerable quont
acquis les ordinateurs modernes. On voit que les machines en lespace de cinquante ans, ont
ameliore leur capacites de calcul de moins dun million doperations ottantes par seconde,
` a plus dun million de milliards doperations ottantes par seconde. Cette revolution oblige
` a un changement profond de comprehension des algorithmes qui precisemment commandent
ces machines.
En eet, un raisonnement simpliste pourrait consister ` a penser que la puissance de calcul
est pratiquement innie. De fait, beaucoup de programmes peuvent sexecuter rapidement
sur ces supercalculateurs, voire meme sur les ordinateurs que nous cotoyons tous les jours.
Cependant, la plupart des calculs que lont peut imaginer ne sont pas, loin sen faut, simples.
Par exemple, beaucoup doperations sur une liste font intervenir lordre de la liste en question.
Or le nombre dordres possibles pour une liste de n elements, note n!, crot excessivement
vite. Par exemple, supposons que nous voulions faire sur le meilleur calculateur existant
aujourdhui, au cours dune seconde, une operation ottante sur toutes les listes ordonnees
possibles `a n elements. Alors malheureusement, malgre toute notre puissance de calcul, il
nous faudrait nous limiter aux listes ` a 17 elements ou moins (17! = 3, 55 10
14
)!
Par ailleurs meme si la puissance de calcul va croissant, le co ut requis par operation
2
Figure 2: Une liste doublement chanee.
ottante a tendance ` a stagner. Cela fait que la consommation energetique due aux calculs
devient phenomenale. On a estime que la puissance energetique totale consommee par les
ordinateurs dans le monde etait en 2005 de 200 TWh, ce qui correspond ` a la production
dune trentaine de tranches de centrales nucleaires `a 800 MWatt chacune, ou encore, en
termes dempreinte carbone, de 30 million dautomobiles. Lordinateur le plus puissant du
monde en 2009, le Cray Jaguar, consomme 7 MWatt pour une puissance de calcul mesuree
de 1,759 TFlops. Ce co ut demande par lorganisation Top500 nest quun co ut partiel de
calcul. Les specialistes du calcul haute performance estiment que tr`es bientot les co uts
energetiques totaux dun supercalculateur seraient de lordre de 100 MWatt. Tout cela a un
co ut phenomenal, tant en termes de ressources nanci`eres que planetaires et humaines.
En resume, les ressources de calcul daujourdhui sont loin detre innies, et il convient
de les estimer avec precision. Ce cours donne les bases dune bonne analyse des temps de
calcul et donne plusieurs exemples marquants de calcul complexes realises dans un temps
matrise.
1 Quelques notions dalgorithmique et complexite elementaire
1.1 Strutures de calcul
Un calcul bien mene utilise les structures appropriees. Nous examinons ici plusieurs struc-
tures simples qui permettent une analyse relativement facile.
1.1.1 La liste
La liste peut se voir comme une suite nie dobjets a
1
, . . . , a
n
. Elle permet notamment:
linsertion, la supression delements ` a toute place (en O(1)),
la recherche dun element donne (en O(n)),
la creation, le test si la liste est vide ou non (en O(1)).
Une mise en uvre simple de ce type de structure consiste ` a utiliser une liste doublement
chanee, cest-` a-dire une liste o` u on garde la memoire de lelement precedent et suivant de la
liste. Dans lexemple de la Fig. 2, cela donnera:
3
Figure 3: Liste de la Fig. 2 modiee.
Figure 4: Une le placee dans un tableau.
Case 0 1 2 3 4 5 6
Valeur (racine) Souris Chat Chien Vache
Suivant 3 6 4 2
Precedent 4 0 3 2
Si on ajoute une valeur, par exemple comme indique sur la Fig. 3, alors le tableau de la
liste deviendra:
Case 0 1 2 3 4 5 6
Valeur (racine) Cheval Souris Chat Chien Vache
Suivant 3 2 6 4 1
Precedent 4 1 0 3 2
Cette mani`ere de proceder a lavantage de pouvoir inserer un element avant ou aor`es un
autre (avant souris ou apr`es chien dans notre exemple) sans se preoccuper de savoir
precisemment dans quelle liste ces elements gurent.
1.1.2 La pile
La pile est une structure o` u on ins`ere les elements dun seul et meme cote. On parle souvent
de pile LIFO (pour last-in rst-out): le dernier entre est le premier `a ressortir.
4
Figure 5: Un graphe non-oriente. Figure 6: Un graphe oriente.
1.1.3 La le
La le est une structure o` u lon peut inserer et supprimer de cotes opposes. Une application
courante est la le FIFO (pour rst-in rst-out). On parle aussi de le bilat`ere pour men-
tionner cette propriete dinsertion et de suppression des deux cotes. Ces structures servent
souvent en tant que tampon (ou buer en anglais). Sur la Fig. 4 on voit deux etats clas-
siques dune le rangee dans un tableau. Sur le haut de la gure le pointeur de debut d se
trouve avant le pointeur de n f, ce qui signie que la liste (en hachure) se trouve au milieu.
Sur le bas de la gure, cest la situation inverse qui apparat, avec une position des elements
de la le aux extremites du tableau.
1.1.4 Graphes et arbres
Les graphes sont des structures tr`es courantes en algorithmique. Il sont formes dentites
elementaires que lon appelle nuds ou sommets. On rajoute entre ces sommets des connex-
ions qui lient deux sommets, soit de mani`ere non-orientee (on parle alors darete, et le graphe
est dit non-oriente, voir Fig. 5), soit speciquement dun sommet vers un autre (dans ce cas
la connexion est appelee arc, et le graphe est un graphe oriente, encore appele digraphe, voir
Fig. 6).
Un graphe est dit connexe sil existe toujours un chemin dun sommet ` a un autre (on
sautorise, dans le cas des digraphes, `a prendre des arcs ` a rebrousse-poil). Un digraphe est
fortement connexe si il existe toujours un chemin dun sommet vers un autre en respectant le
sens des arcs. Un cycle est un chemin qui, partant dun certain sommet, parcours un certain
nombre dautres sommets et revient au point de depart.
Un arbre est un graphe connexe sans cycle. On peut distiguer dans un graphe une racine
qui est un sommet unique. Lexistence dune racine permet dorienter toutes les aretes du
graphes de mani`ere naturelle: on oriente larete depuis la racine vers les extremites de larbre.
5
1.2 Tri
Un algorithme de base pour le calcul de la complexite est le tri. Supposins quune liste ` a trier
se trouve sous la forme dune liste doublement chanee, comme explique au paragraphe 1.1.1.
Une premi`ere methode consiste `a parcourir toute la liste, selectionner lelement maximal, le
supprimer de la liste courante, puis de linserer en tete dune liste ` a trier. Cette methode
demande n operations de recherche sur la liste courante de taille n, puis une operation de
suppression, et enn une operation dinsertion. Soit n + 2 operations pour passer dune
liste de taille n` a une liste de taille n 1. Le temps total de calcul est alors, en nombre
doperations, de:
(n + 2) + (n + 1) + (n) + (n 1) +.. + 3 =
i=n
i=1
i + 2 =
n
2
+ 5n
2
.
Une methode alternative consiste `a utiliser un tas. Le tas se forme sur une structure
darbre particuli`ere appelee arbre binaire quasi-complet.
Soit G un arbre non-oriente et muni dune racine. Appelons p`ere le voisin dun sommet
qui se trouve du cote de la racine, et ls ses autres voisins. Designons par feuille un sommet
qui na pas de ls. Appelons niveau dun sommet la distance, en termes de longueur de
chemin, qui le separe de la racine.
Un arbre binaire complet est un arbre dote dune racine, dont toutes les feuilles sont au
meme niveau, et dont tous les autres sommets ont exactement deux ls. Un arbre binaire
quasi-complet est un arbre complet auquel on a eventuellement supprime un certain nombre
de feuilles, mais uniquement en bas ` a droite (voir la Fig. 7). Alors quun arbre binaire
complet poss`ede 2
h+1
1 sommets, o` u h represente le niveau des feuilles, un arbre binaire
quasi-complet peut avoir un nombre quelconque de feuilles. On ajoute un sommet en placant
une feuille ` a la position inoccupee la plus ` a gauche sur le dernier niveau incomplet (et
eventuellement en commacant un nouveau niveau si necessaire. On retire un sommet en
supprimant le sommet le plus ` a droite du dernier niveau. La Fig. 8 donne toutes les topologies
darbres binaires quasi-complets de 1 `a 16 sommets.
Munissons maintenant chaque sommet de larbre dune valeur numerique. On dira que
larbre est bien ordonne si la valeur dun p`ere est toujours inferieure `a celle de ses ls. Un
tas est un arbre binaire quasi-complet bien ordonne (voir Fig. 9). Le tas est une structure
qui permet pour un ensemble de n elements
(1) dajouter un nouvel element en O(log(n) operations,
(2) dextraire le minimum du tas en O(log(n) operations.
Pour inserer un nouvel element dans un tas, on sautorise dans un premier temps ` a violer
la r`egle de bien-ordonnancement pour obtenir un un arbre binaire quasi-complet ayant le
bon nombre de sommets. Par exemple, si on introduit un nouveau sommet ayant la valeur
7 ` a larbre de la Fig. 9, on obtient dans un premier temps larbre de la Fig. 10, qui est
quasi-complet. Ensuite, on retablit le bon-ordonnancement en partant du sommet introduit
et en lechangeant avec son p`ere si la valeur du p`ere est superieure. Cette operation retablit
6
Figure 7: Un arbre binaire quasi-complet:
on part dun arbre binaire complet, et on
supprime des feuilles en bas `a droite (ici,
5 feuilles).
Figure 8: Topologies des arbres binaires
quasi-complets de 1 ` a 16 sommets.
Figure 9: Un tas.
7
Figure 10: Arbre binaire quasi-complet
resultant de laddition de la valeur 7.
Figure 11: Tas obtenu apr`es laddition de
la valeur 7.
le bon-ordre sur le lien p`ere/ls mais peut eventuellement introduire une violation de la r`egle
de bien-ordonnancement sur le lien grand-p`ere/p`ere. On echange dans ce cas les sommets
p`ere/grand-p`ere, et ainsi de suite eventuellement jusqu` a la racine. Dans le cas le pire, on
remonte le chemin jusqu`a la racine, soit O(log(n)) operations. Dans notre exemple, les
sommets des valeurs 7 et 14 sont dabord echanges, puis les sommets des valeurs 8 et 7, pour
donner le tas de la Fig. 11.
Lautre operation majeure est lextraction de la valeur minimale. La valeur minimale
se trouve ` a la racine. Dans un premier temps, comme le montre la Fig. 12, on maintient
simplement la structure darbre binaire quasi-complet en depla cant le contenu de la derni`ere
feuille (en bas ` a droite) sur la racine. Cette derni`ere feuille est donc supprimee. On retablit
ensuite le bon-ordonnancement de la mani`ere suivante: le contenu du sommet `a mettre ` a jour
est compare `a ses deux ls, et est echange avec son ls de valeur minimale. On deplace alors
le probl`eme dordonnancement au ls choisi pour lechange et sa descendance. On continue
` a echanger les valeur de ce sommet avec le plus petit de ses ls jusqu` a ce que larbre soit
ordonne, comme le montre la Fig. 13. Loperation se fait en O(log(n)).
Au nal, le tri par tas sur une liste de n element commence par n insertions, suivies de
n extractions de la valeur minimale, pour un total de O(nlog(n)) operations.
1.3 Chemins Euleriens et Hamiltoniens
Le probl`eme du chemin dit Eulerien est apparu en rapport avec la ville de K onigsberg
(aujourdhui Kaliningrad), dont une carte sommaire est donne en Fig. 14. La question
etait de savoir sil existait une promenade passant une et une seule fois par tous les ponts
(representes en brun).
Leonhard Euler a resolu cette question en 1735 en demontrant quune telle promenade
dexistait pas. Sa demonstration repose sur une representation en graphe du probl`eme
(Fig. 15). Il sagit alors de trouver un chemin ou un cycle qui passe une et une seule
fois par toutes les aretes, moyennant un passage eventuel plusieurs fois par le meme som-
met. La demonstration dEuler repose sur la constatation que (1) si un tel chemin ou cycle
8
Figure 12: Arbre binaire quasi-complet
resultant de lextraction de la valeur 3.
Figure 13: Tas obtenu apr`es lextraction
de la valeur 3.
Figure 14: Topographie de la ville de Konigsberg (au-
jourdhui Kaliningrad).
Figure 15: Graphe correspon-
dant au probl`eme dEuler.
9
Figure 16: Un graphe
leg`erement modie.
Figure 17: Un chemin
eulerien.
Figure 18: Un chemin
hamiltonien.
existe, alors tous les sommets sauf eventuellement les sommets de depart et darrivee ont un
nombre pair daretes adjacentes. De plus, (2) tous les sommets non-isoles sont alors dans la
meme composante connexe du graphe. Euler a demontre que les conditions (1) et (2) etaient
egalement susantes pour sexistence dun tel chemin. Ainsi, la Fig.15 na pas de chemin
eulerien puisque quatre sommets ont un nombre impair daretes adjacentes.
Une variante de ce probl`eme concerne lexistence dun chemin ou dun cycle hamiltonien:
il sagit dun cycle ou chemin sur le graphe qui passe une et une seule fois par tous les
sommets. Nous montrons sur un graphe leg`erement modie (Fig. 16) un chemin eulerien
(Fig. 17) et un chemin hamiltonien (Fig. 18). Nous allons voir dans la suite quen depit des
apparences, le probl`eme qui consiste ` a trouver un chemin eulerien est considerablement plus
simple que celui du chemin hamiltonien.
2 Modelisation de la complexite
Cette partie du cours sinspire essentiellement de [4].
2.1 Machines de Turing
Une machine de Turing est un mod`ele simplie dordinateur qui per-
met devaluer ce qui est faisable en mati`ere de calcul. Bien que tr`es
elementaire, elle represente une premi`ere approche fondamentale pour la
theorie de la complexite.
La machine, comme indique sur la Fig. 19, est un ordinateur qui lit et
ecrit des symboles sur une bande enregistreuse de longueur innie, et le
fait `a la position du curseur o` u elle se trouve. La machine lit et ecrit un
seul symbole ` a la fois en suivant des r`egles precises. Ces r`egles dependent dun etat dans
lequel se trouve la machine, ainsi que du symbole qui est lu. La machine poss`ede un nombre
ni detats.
Formellement, on se donne donc, pour denir la machine de Turing:
un ensemble Q detats,
un ensemble de symbole,
10
Figure 19: Une machine de Turing.
un etat initial ,
un symbole distingue . (appele le symbole blanc),
un ensemble detats naux / Q,
une fonction de transition , de Q dans Q1, +1. Son sens est le suivant:
si la machine est dans letat q
0
et quelle lit le symbole
0
` a la position courante du
curseur, et en ecrivant (q
0
,
0
) = (q
1
,
1
,
1
), alors la machine va ecrire ` a lemplacement
du curseur le symbole
1
, passe ` a letat q
1
. Par ailleurs, elle avance le curseur sur la
bande dune case si
0
= +1 et le recule dune case si
0
= 1.
Dans le cas dune machine de Turing deterministe, le fonctionnement est le suivant.
On fournit ` a la machine le probl`eme initial, par exemple le graphe sur lequel un chemin
eulerien ou hamiltonien doit etre calcule, ce qui est exprime avec un certain encodage sur
les cases 0 `a n de la bande de la machine de Turing, et la machine eectue son calcul, et on
se demande si on peut garantir que la machine va au bout dun certain temps repondre par
VRAI ou FAUX sur la nature de probl`eme, par exemple `a la question existe t-il un chemin
eulerien ou hamiltonien, va t-elle repondre VRAI ou FAUX dans un temps determine.
Si par contre on sinteresse ` a une machine de Turing non-deterministe, alors on
sautorise, une fois que le probl`eme a ete ecrit, ` a rajouter des cases magiques par exemple
avant la case 0, qui encode une solution devinee du probl`eme. Dans le cas dune question
sur lexistence dun chemin, on pourra fournir lencodage complet dun chemin donnant la
solution du probl`eme. La machine verie que les cases magiques fournissent bien une solution
au probl`eme, et repond par VRAI ou FAUX. La question est de savoir si, etant donne un
probl`eme ayant une solution, il existe au moins une aectation des cases magiques qui atteste
de lexistence de cette solution en un temps determine. Par exemple, si un chemin eulerien
ou hamiltonien existe dans le graphe, si on fournit `a la machine sur sa bande lencodage du
graphe et dun chemin valide, la machine peut-elle en un temps determine attester la validite
de ce chemin?
Dans les deux cas, lorsque la machine est dans un etat nal (q /), elle sarrete.
11
2.2 Les classes P et NP
La classe P est lensemble des probl`emes pour lesquels une machine de Turing deterministe
peut trouver une solution en un temps polynomial. La classe NP est lensemble des
probl`emes pour lesquels une machine de Turing non-deterministe peut trouver une solution
en temps polynomial.
2.3 Le probl`eme SAT et le theor`eme de Levin-Cook
Le probl`eme SAT est un probl`eme de decision. On se donne une liste de variables booleennes
(i.e. prenant la valeur VRAI ou FAUX) X
1
, . . . , X
p
, et une certaine expression Exp(X
1
, . . . , X
d
)
` a satisfaire, composee uniquement des variables X
1
, . . . , X
d
, des operations binaires ET (note
), et OU (note ), et de loperateur unitaire NON (note ). Pour la clarte des expressions,
on notera aussi les parenth`eses. Le probl`eme est le suivant:
SAT: Existe t-il une assignation des variables
(X
1
, . . . , X
d
) dans (V RAI, FAUX)
d
telle que
Exp(X
1
, . . . , X
d
) soit vraie?
Par exemple la formule (X) Y demande que soit X =FAUX, soit Y =VRAI. On
designe souvent cette relation par X implique Y (notee X = Y ): si X est VRAI, alors
necessairement Y est VRAI. Un certain nombre de relations elementaires de logique meritent
detre rappelees. Si A, B et C sont des expressions booleennes, alors les relations suivantes
sont vraies.
(i) (A B) = (A) (B),
(ii) (A B) = (A) (B),
(iii) (A B) C = (A C) (B C),
(iv) (A B) C = (A C) (B C).
Usant de ces relations, il est possible de mettre lexpression Exp(X
1
, . . . , X
p
) dans une
forme canonique, o` u loperateur dominant est ET, et loperateur intermediaire est OU, et
loperateur domine est NON. En eet, il sut dans un premier temps, si une forme (AB)
ou (A B) apparat dans la formule, dappliquer respectivement (i) ou (ii). Puis, dans un
deuxi`eme temps, si une forme (A B) C apparat dans lexpression, on peut la remplacer
en utilisant (iii).
On obtient aussi une formule sous la forme de conjonction (AND) de clauses. Chaque
clause est formee de disjonctions de variables ou de negation de variables. Cest cette forme
canonique qui sert de reference pour calculer la taille de lexpression Exp(X
1
, . . . , X
d
).
Denition 2.1 Une instance de SAT Exp(X
1
, . . . , X
d
) est de taille n si la somme du nom-
bre de variables qui apparat par clause est egal `a n.
Denition 2.2 On dit quun probl`eme T est NP-complet sil est lui-meme NP et que tout
probl`eme NP se reduit `a T en temps polynomial.
12
Theor`eme 2.1 (Levin-Cook) SAT est NP-complet
Preuve. On se donne la liste de variables suivante:
Variable Signication Nombre de
variables
S
i,j,k
Vrai si la case i de la bande contient le symbole j ` a
letape k du calcul
O(p(n)
2
)
H
i,k
Vrai si la tete de lecture/ecriture de la machine est sur
la case i de la bande ` a letape k
O(p(n)
2
)
Q
q,k
Vrai si la machine est dans letat q ` a letape k du calcul O(n(p))
Lexpression du probl`eme booleen de SAT comprendra alors une premi`ere partie de
clauses qui garantiront les conditions generales de fonctionnement de la machine:
Clauses Conditions Interpretation Nombre de
Clauses
S
i,j,0
La case i des
donnees dentree
contient le sym-
bole j
Contenu initial de la bande O(p(n))
Q
,0
Etat initial de la machine 1
H
0,0
Position initiale de la tete de lec-
ture/ecriture
1
_
j
S
i,j,k
Au moins un symbole existe sur
chaque case de la bande ` a letape
k
O(p(n)
2
)
S
i,j,k
S
i,j
,k
j ,= j
t
Un seul symbole par case de la
bande `a letape k
O(p(n)
2
)
_
i
H
i,k
La tete de lecture est au moins ` a
un emplacement `a letape k
O(p(n)
2
)
H
i,k
H
i
,k
i ,= i
t
La tete de lecture ne peut etre
qu` a un emplacement au plus ` a
letape k
O(p(n))
_
q
Q
q,k
La machine est au moins dans un
etat ` a letape k
O(p(n)
2
)
Q
q,k
Q
q
,k
q ,= q
t
La machine est au plus dans un
etat ` a letape k
O(p(n))
S
i,j,k
H
i,k
S
i,j,k+1
Une case de la bande qui nest pas
sous la tete de lecture/ecriture
reste inchangee
O(p(n)
2
)
_
f,
Q
f,p(n)
La machine doit nir dans un etat
terminal
O(1)
Il reste ensuite ` a garantir le fonctionnement de la machine elle-meme sur la bande. Cela
se fait par les conditions suivantes, qui parcourent toutes les valeurs possibles de i, j, k, q
13
pour i p(n), . . . , 0, . . . , p(n), j , k 0, . . . , p(n), et q Q. On pose par ailleurs
(i, j) = (q
t
, j
t
, ). les clauses suivantes apparaissent alors, devenant actives si et seulement
si `a letape k, la machine est dans letat q en position i et lit le symbole j.
Clauses Eet si `a letape k, la machine est dans
letat q en position i et lit le symbole j
Nombre
de
Clauses
H
j,k
Q
q,k
S
i,j,k
H
j+,k+1
la tete se deplace de ` a letape k + 1 O(p(n)
2
)
H
j,k
Q
q,k
S
i,j,k
Q
q
,k+1
la machine passe `a letat q
t
` a letape
k + 1
O(p(n)
2
)
H
j,k
Q
q,k
S
i,j,k
S
i,j
,k+1
la case i de la bande contient le symbole
j
t
` a letape k + 1
O(p(n)
2
)
En conclusion, si il est possible de valider une solution dun probl`eme sans connatre les
cases magiques, alors le prbl`eme SAT decrit ci-dessus nous donnera les valeurs de ces cases
pour trouver une solution. Donc tout probl`eme de NP (veriable par une machine de Turing
non-deterministe) peut se ramener ` a un probl`eme SAT en temps polynomial.
Si par ailleurs il existait un algorithme polynomial pour resoudre SAT, alors on pourrait,
en connaissant la machine de Turing qui verie la solution, retrouver une solution valide au
probl`eme initial.
2.4 Autres probl`emes NP-Complets
Nous donnons dans ce qui suit une serie de reductions fondamentales vers des probl`emes
NP-complets majeurs.
2.4.1 3-SAT
Un probl`eme 3-SAT est un probl`eme SAT o` u toutes les clauses ont exactement trois termes.
Theor`eme 2.2 3-SAT est NP-complet.
Preuve. Il sut de montrer quon peut ransformer un probl`eme SAT en un probl`eme
3-SAT en temps polynomial. Soient C
1
, . . . , C
k
les clauses du probl`eme SAT. On ajoute
pour chaque clause C
i
, [[C
i
[ 3[ nouvelles variables, notees Y
i,j
pour j 1, . . . , [[C
i
[ 3[.
Si [C
i
[ = 1, alors on cree pour le probl`eme 3-SAT les clauses
K
1
i
= C
i
Y
i,1
Y
i,2
K
2
i
= C
i
Y
i,1
Y
i,2
K
3
i
= C
i
Y
i,1
Y
i,2
K
4
i
= C
i
Y
i,1
Y
i,2
.
Si [C
i
[ = 2, alors on cree pour le probl`eme 3-SAT les clauses
K
1
i
= C
i
Y
i,1
K
2
i
= C
i
Y
i,1
.
14
Si [C
i
[ = 3, alors K
1
i
= C
i
.
Si [C
i
[ > 3, notons C
i
= Z
1
. . . Z
p
o` u Z
j
est un litteral ou une inversion de litteral, et
on forme:
K
1
i
= Z
1
Z
2
Y
i,1
K
2
i
= Y
i,1
Z
3
Y
i,2
.
.
.
K
j+1
i
= Y
i,j
Z
j+2
Y
i,j+1
.
.
.
K
p2
i
= Y
i,p3
Z
p1
Z
p
.
Au nal, la conjonction des clauses K
j
i
denit notre probl`eme 3-SAT.
2.4.2 VERTEX COVER
Denition 2.3 Soit G = (V, E) un graphe non-oriente. Un vertex cover S V est un
ensemble intersectant toutes les aretes, cest-`a-dire
e E S e ,= .
Le probl`eme VERTEX COVER est le suivant: etant donnes un graphe G et un entier k,
existe t-il un VERTEX COVER S tel que [S[ k?
Theor`eme 2.3 VERTEX COVER est un probl`eme NP-complet.
Preuve. Le probl`eme VERTEX COVER est evidemment NP, car si on nous donne un
ensemble S V de taille k repute etre la solution du probl`eme, il est facile de le verier en
temps polynomial.
On se donne un probl`eme 3-SAT, compose des litteraux X
1
, . . . , X
n
, et des clauses
C
1
, . . . , C
m
et on montre quon peut construire ` a partir de cette instance un graphe G et un
entier k tels que la resolution du probl`eme VERTEX COVER entrane la resolution de notre
probl`eme initial en temps polynomial.
Le graphe G que nous construisons pour cela, illustre sur la Fig. 20 aura les 2n + 3m
sommets suivants: u
0
i
, u
1
i
, pour i 1, . . . , n et v
1
j
, ,v
2
j
, v
3
j
, pour j 1, . . . , m. Par
ailleurs, son ensemble daretes sera
E =
_
i1,...,n
u
0
i
, u
1
i
_
i1,...,n
v
1
j
, v
2
j
, v
1
j
, v
3
j
, v
2
j
, v
3
j
_
j1,...,m
W
j
.
et nous precisons W
j
dans ce qui suit.
Notons par x
1
j
, x
2
j
, x
3
j
les indices des litteraux presents dans la clause C
j
et notons z
1
j
= 1
si le premier terme est une negation du litteral, z
1
j
= 0 sinon. De meme pour z
2
j
et z
3
j
pour
les litteraux dindice x
2
j
et x
3
j
. On pose alors:
W
j
= u
z
j
x
j
, v
=1,2,3
.
15
Figure 20: Construction dun VERTEX COVER ` a partir de 3-SAT.
Fixons maintenant k = n + 2m. Comme pour chaque i, larete u
0
i
, u
1
i
, necessairement
ou u
0
i
ou u
1
i
est dans S, soit au minimum n sommets. De meme, on peut voir que pour chaque
j, deux des sommets v
1
j
, v
2
j
, v
3
j
sont dans S, soit au minimum 2m sommets. Donc si [S[ =
n + 2m, il contient necessairement pour chaque i 1, . . . , n un et un seul sommet parmi
u
0
i
, u
1
i
et pour chaque j 1, . . . , m, deux et seulement deux sommets dans v
1
j
, v
2
j
, v
3
j
.
Le sommet qui nest pas pris dans v
1
j
, v
2
j
, v
3
j
represente le litteral qui est verie dans
la clause. Laectation des sommets u
0
i
, u
1
i
garantit lunicite de la valeur VRAI ou FAUX
pour un litteral donne. Ainsi, un VERTEX COVER de taille n+2m fournit bien une solution
` a 3-SAT.
2.4.3 CYCLE HAMILTONIEN
Le probl`eme est le suivant: etant donne un graphe non-oriente G existe t-il un cycle hamil-
tonien parcourant G?
Theor`eme 2.4 CYCLE HAMILTONIEN est un probl`eme NP-complet.
Preuve. Il est une fois de plus evident que si on nous propose un certain chemin sur un
graphe, on sait verier en temps polynomial que cest un cycle et quil est bien hamiltonien.
Donc CYCLE HAMILTONIEN est NP.
Pour etablir la completude du probl`eme, on se donne un certain graphe G = (V, E) et un
entier k correspondants ` a un probl`eme de VERTEX COVER, et on montre que ce probl`eme
16
Figure 21: Un gadget pour le cycle hamiltonien.
Figure 22: Un parcours possible du gadget.
Figure 23: Un autre parcours possible du gadget.
Figure 24: Un dernier parcours possible du gadget.
17
Figure 25: Construction pour un sommet v V . Les sommets adjacents de v sont ici u1,
u2, u3, u4 et u5.
18
peut se ramener en temps polynomial `a un probl`eme de cycle hamiltonien. Pour comprendre
cela, on etudie un certain gadget, dans ce cas un sous-graphe, donne sur la Fig. 21. On
suppose que ce gadget fait partie du graphe `a construire, et les seuls sommets ayant une
arete avec le reste du graphe sont les quatre sommets des extremites. Par une etude de cas,
on comprend que les seuls chemins internes qui permettent une couverture par un chemin
hamiltonien sont ceux donnes par les Fig 22, 23, et 24.
Le nouveau graphe ( = (1, c), construit pour le probl`eme du cycle hamiltonien, est
construit comme suit. Le nombre de sommets [1[ est egal ` a k +12[E[. Pour chaque arete de
E, 12 sommets de ( sont introduits formant un gadget. Ensuite, pour un sommet v E, on
relie tous les gadgets correspondant aux aretes adjacentes `a V en serie comme indique sur la
Fig. 25. On peut ainsi associer `a chaque sommet v non-isole de G deux extremites: entree
du premier gadget en serie et la sortie du dernier, comme indique sur la gure.
On cree ensuite k sommets f
1
, . . . , f
k
de ( que lon relie chacun ` a toutes les extremites
de v V .
Si un cycle hamiltonien existe dans ce graphe, il va necessairement passer par chacun
de ses k sommets. Pour passer dun sommet f
i
` a un autre, note f
j
, il doit necessairement
choisir une extremite dun certain v V et sortir par lautre. Au total un ensemble S de k
sommets de V sera choisi pour parcourir tous les f
1
, . . . , f
k
. Pour que tous les gadgets soient
parcourus, il faut necessairement que les sommets de S couvrent toutes les aretes de E.
3 Un algorithme polynomial pour la programmation
lineaire
Nous avons vu au cours precedent comment determiner si un syst`eme dinegalites lineaires a
une solution mais nous avons neglige deux questions : peut-on determiner si un poly`edre est
vide en temps polynomial de la dimension de lespace ? Comment trouver loptimum dune
fonction objective sur un poly`edre, peut-on le faire en temps polynomial ? La question de
la complexite des probl`emes a ete soulevee par J. Edmonds dans [3], article dans lequel il
parle de probl`emes pour lesquels il existe des algorithmes mieux que nis.
D`es 1910, C. de la Vallee Poussin,[2], sinteressant au probl`eme dapproximation de Cheby-
shev qui consiste `a trouver le minimum de | Ax b |
a
t
Da
D
t
=
n1
n
2
1
_
D
2
n1
Daa
t
D
a
t
Da
_
de plus
vol(E
)
vol(E)
< e
1
2n+2
.
Etant donne un poly`edre P R
n
on denit la facette-complexite de P, , comme etant
le plus petit entier n tel quil existe un syst`eme dinegalites lineaires ` a coecients
rationels Ax b decrivant P et dont chacune des lignes a une taille bornee par . La
taille dune ligne est la longueur du plus grand numerateur ou denominateur des coecients
qui la composent. On denit un param`etre semblable pour les sommets : la complexite
sommets comme etant le plus petit entier n tel quil existe des vecteurs ` a composantes
rationelles x
1
, . . . , x
k
, y
1
, . . . , y
l
chacun de taille au plus et tels que P = conv(x
1
, . . . , x
k
)+
c oney
1
, . . . , y
l
. De plus on a 4n
2
et 4n
2
.
La methode des ellipsodes travaille en plusieurs temps : tout dabord on sassure quun
poly`edre est non vide et si tel est le cas elle donne un point interieur de ce poly`edre. Ensuite
on calcule un point x
<
optimal `a pr`es. Enn on transforme le point interieur x
<
en
un sommet x
optimal. Pour la clarte de lexpose nous supposons dans ce qui suit que
le poly`edre P est borne et de pleine dimension et que nous pouvons eectuer tout calcul
aussi precisement que requis. Dans la premi`ere etape qui consiste ` a determiner un point
interieur du poly`edre la methode va construire une suite dellipsodes de volume decroissant
jusqu` a ce quun dentre eux ait son centre dans le poly`edre. Pour initialiser la methode
le premier ellipsode est la boule de rayon 2
, P x[ | x | 2
. Donc le centre de
20
ce premier ellipsode est z
0
= 0 et la matrice associee est D
0
= 2
2
Id, Id designant la
matrice identite. Supposons maintenant que nous soyons rendus `a letape i, alors P E
i
qui est un ellipsode de param`etres (z
i
, D
i
). Si z
i
P alors nous avons trouve un point
de P, sinon supposons que z
i
viole linegalite a
j
0
x b
j
0
appartenant au syst`eme qui deni
P. Si E
i+1
est le plus petit ellipsode contenant E
i
x[ a
t
j
0
x a
t
j
0
z
i
. Alors etant donne
que P est contenu tant dans E
i
que dans le demi-espace x[ a
t
j
0
x a
t
j
0
z
i
on peut dire que
P E
i+1
. Nous avons vu au theor`eme 3.1 comment determiner (z
i+1
, D
i+1
) les param`etres
de E
i+1
. Nous avons vu que les ellipsodes E
i
et E
i+1
ont des volumes dont le rapport est
inferieur `a e
1
2n+2
, par ailleurs nous savons que le volume de lellipsode initial est inferieur
` a 4
n
aussi par recurrence nous pouvons dire que vol(E
i+1
) 4
n
e
i+1
2n+2
. Etant donne que
nous avons suppose que P est borne et quil est de pleine dimension nous pouvons dire quil
existe n+1 vecteurs anement independant x
0
, . . . , x
n
tels que P = conv(x
0
, . . . , x
n
) aussi
vol(P) vol(conv(x
0
, . . . , x
n
)) 2
2n
. Supposons que nous ayons execute un nombre I
diterations de la methode, on a alors :
2
2n
vol(P) vol(E
I
) < 4
n
e
I
2n+2
Nous voyons bien que la proposition ci-dessus ne tient plus si on prend un nombre diterations
susamment grand, I 16
n
2
= (
p
1
q
1
, . . . ,
p
n
q
n
)
t
. La dierence de ces deux
vecteurs est alors donnee par le terme generique :
x
i
x
i
= (p
i
q
i
q
i
p
i
)
_
j,=i
q
j
q
j
_
_
n
j=1
q
j
q
j
_
1
Ceci permet de dire quil existe <
1
2
et un vecteur u entier dont chaque composante
dindice i verie [u
i
[ < tel que x
x =
u
. Par hypoth`ese x
x) = c
t
0
u
=
1
(c
t
n
u +
n
i=1
i1
u
i
) 0
Etant donne que [U
i
[ < on a :
i=1
i1
u
i
( 1)
n
i=1
i1
n
1
. Comme
n
c
t
u
n
i=1
i1
u
i
et que c
t
u est un entier relatif il vient que c
t
u 0. Aussi a-t-on etabli que
quelque soit le sommet x on a c
t
x
c
t
x, ce qui montre que x
x) ,= 0, ce qui
montre que x
23
et prenons m
0
= 2
et M
0
= 2
le polaire de P = x R
n
[ Ax 0, alors par denition P
= y
R
n
[ y
t
A 0 ; ainsi peut-on dire que si P est decrit par un ensemble dinegalites de taille
maximum il en va de meme pour P
0 et reciproquement y
0
P
si et seulement si Miny
t
0
x[x P 0.
Ainsi peut-on voir que si on sait optimiser en temps polynomial sur le poly`edre P alors on
sait separer en temps polynomial sur son polaire P
; lexistence de lalgorithme O
suit alors.
Les corollaires 4.1 et 4.2 nous permettent denoncer le resultat suivant qui etablit lequivalence
entre les probl`emes de separation et doptimisation.
Corollaire 4.3 (Gr otschel, Lovasz, Schrijver) Pour tout poly`edre rationnel P le probl`eme
de separation peut etre resolu en temps polynomial si et seulement si le probl`eme doptimisation
peut etre resolu en temps polynomial.
Corollaire 4.4 Si P est un poly`edre rationnel et P
;
3. il existe un algorithme polynomial pour resoudre le probl`eme de separation sur P;
4. il existe un algorithme polynomial pour resoudre le probl`eme de separation sur P
.
24
5 Approximation des probl`emes
Nous donnons dans cette section quelques idees marquantes du concept dapproximation des
probl`emes.
5.1 Classication des algorithmes dapproximation
Le fait quun probl`eme est NP-complet ne signie pas que les seules solutions `a ce probl`emes
sont purement heuristiques. Dordinaire on classe les reponses possibles en algorithmique
par trois grandes denominations:
APX cest une classe qui contient les probl`emes approximables ` a un facteur multiplicatif
constant pr`es en temps polynomial. Autrement dit, il exite un programme qui cal-
cule en temps polynomial une solution qui est au plus `a un facteur K de la solution
mathematiquement optimale.
PTAS Le terme PTAS (pour polynomial-time approximation scheme) designe une famille
de programmes dapproximation qui obtiennent une solution `a un facteur multiplicatif
constant pr`es aussi proche que lon veut de 1. En dautres termes, pour tout > 0, il
existe un programme qui calcule en temps polynomial une approximation `a 1 + pr`es
de la valeur optimale.
FPTAS Le terme PTAS (pour fully polynomial-time approximation scheme) designe un
programme PTAS dont la complexite est non seulement polynomiale en la taille du
probl`eme, mais aussi en 1/.
Par extension, le terme APX-complet est utilise pour parler de la classe des probl`emes
APX pour lesquels il existe un PTAS qui les reduit ` a nimporte quel autre probl`eme dAPX.
Par APX-dicile on entend quune instance du probl`eme en question est APX-compl`ete.
Pour les probl`emes mentionnes dans le document, on sait
1
faire la classication suivante:
Probl`eme Approximation sur Statut
Tri P
Programmation lineaire P
Chemin Eulerien P
SAT Nombre de clauses maximum satisfaites APX-complet
3-SAT Nombre de clauses maximum satisfaites APX-complet
CYCLE HAMILTONIEN Trouver le plus long chemin APX-complet
VERTEX COVER Nombre de sommets necessaires APX mais pas de PTAS
5.2 La programmation dynamique
La programmation dynamique est une methode tabulaire o` u lon cherche ` a obtenir les
meilleurs resultats possibles par un tableau T. Le probl`eme classique pour la programmation
dynamique est le sac-` a-dos. Soit un sac dans lequel on peut mettre n objets dencombrement
1
http://www.csc.kth.se/ viggo/problemlist/
25
respectifs c
1
, . . . , c
n
et de valeur v
1
, . . . , v
n
. Etant donnee une capacite de sac K, on cherche
lensemble S 1, . . . , n tel que
jS
c
j
K,
et qui maximise
jS
v
j
.
On initialise donc le tableau T ` a 0 pour toutes des valeurs de 1 `a K; puis pour chaque
indice i de 1 ` a n on eectue les operations suivantes:
Pour j decrementant de Kc
i
` a 0, si T[j +c
i
] < T[j] +v
i
alors T[j +c
i
] := T[j] +v
i
.
Cette methode utilise Kn pas de calcul et obtient, pour chaque k 1, . . . , K, la
meilleure valeur possible obtenue avec un sac de capacite k.
Cette methode est assez deconcertante car le probl`eme du sac-`a-dos est NP-complet.
Lexplication de ce paradoxe vient du fait que les cas diciles du probl`eme du sac-` a-dos
sont ceux o` u les valeurs c
i
et v
i
sont exponentielles en fonction de n, et donc K est une
exponentielle de n. Cette methode montre que la precision avec laquelle on veut repondre
` a une question est un point determinant pour levaluation dun algorithme. Le paragraphe
suivant tient compte de cette perspective pour ameliorer la complexite dun probl`eme de la
classe P.
5.3 Approximation de multi-ot
Pour plus dinformations sur ce th`eme nous renvoyons le lecteur ` a [7, chapitre 19]. Le
probl`eme du ot multi-commodites peut secrire comme suit:
Probl`eme 5.1 Etant donne G = (V, E) un digraphe, une fonction de capacite u : E N,
et un ensemble de requetes H V V , on note n = [V [, m = [E[ et k = [H[.
Trouver (x
f
)
fH
o` u
x
f
est un s t ot pour chaque f = (s, t) H,
e E
fH
x
f
(e) u(e),
la valeur
fH
value(x
f
), notee OPT(G, H, u), est maximum.
Traduit en programme lineaire, ce probl`eme admet une formulation tr`es elegante. Soit
T lensemble des s t chemins, pour (s, t) H. On cherche
OPT(G, H, u) = max
_
P1
y(P) : y 0 et e E
P1, eP
y(P) u(e)
_
. (1)
Ce programme mathematique admet un dual qui secrit de la mani`ere suivante:
26
OPT(G, H, u) = min
_
z u : z 0 et P T
eE
z(e) 1
_
. (2)
On se donne un facteur dapproximation > 0 petit. On propose pour ce probl`eme
lalgorithme / suivant:
(1) P T y(P) := 0
:= (n(1 +))
|
(1 +)
e E z(e) :=
(2) Soit P tel que z(P) =
eP
z(e) soit minimum. Si z(P) 1, aller en (4).
(3) := min
eP
u(e)
y(P) := y(P) +
e P z(e) := z(e)(1 +
u(e)
)
(4) := max
eE
1
u(e)
P1 : eP
y(P)
P T y(P) :=
y(P)
2
km(m+nlog(n)) log(n)).
Preuve. Tout dabord remarquons que la complexite de lalgorithme est bien celle an-
noncee. La condition darret (en (2)) fait quun chemin ne peut pas emprunter un arc de
poids superieur `a 1 sauf dans la derni`ere etape de lalgorithme. Donc pour tout arc e, on
a z(e) 1 + . Soit t le nombre diterations, cest-`a-dire le nombre dexecutions de letape
(3). Une iteration demande k calculs de plus court chemin (Dijkstra), soit O(k(m+nlog(n))
etapes de calcul. Au cours de chaque iteration, au moins un arc voit augmenter son poids
dun facteur 1 + . Comme la valeur de larc crot de ` a 1 + , cela limite le nombre de
telles augmentations possibles pour un arc ` a log
1+
(1/)| + 1. Etant donne quil ny a que
m arcs, on a necessairement t m(log
1+
(1/)| + 1), do` u la complexite de lalgorithme.
Ensuite, notons que le calcul en (4) garantit bien la faisabilite de la solution en termes
de respect des capacites.
Designons dans ce qui suit z
(i)
la valeur du vecteur z apr`es la i
`eme
iteration, ainsi que
P
i
et
i
les valeurs respectives du chemin P et du scalaire choisis au cours de literation i.
z
(0)
designe par prolongement naturel le vecteur de R
E
uniformement egal ` a .
Par ailleurs, soit e larc qui determine la valeur de , et designons par i
1
, . . . , i
p
les indices
des iterations o` u cet arc est augmente. Nous avons alors =
Pe
y(P) =
i
1
+ +
ip
. Les
27
multiplications sur la valeur de z(e) de cet arc sont de 1 +
i
j
u(e)
et linegalite 1 +x (1 +)
x
pour 0 x 1 permet decrire:
1 + z(e) (1 +)
i
1
++
ip
.
En somme, nous obtenons
log
1+
_
1 +
_
. (3)
Regardons maintenant comment le vecteur z evolue au cours des iterations. En observant
les calculs eectues, on peut facilement etablir la relation suivante:
z
(i)
u = z
(i1)
u +
i
eP
i
z
(i1)
(e).
Si on note maintenant (x) la fonction qui au vecteur positif x R
E
+
associe min
P1
eP
x(e),
alors:
(z
(i)
z
(0)
) u =
j=i
j=1
i
(z
(j1)
). (4)
Remarquons maintenant dapr`es (2) que
OPT(G, H, u) = min
_
x u
(x)
: x R
E
+
_
.
En combinant cette equation avec (4) on obtient:
((z
(i)
) n)OPT(G, H, u) OPT(G, H, u)(z
(i)
z
(0)
) (z
(i)
z
(0)
) u.
Il vient
(z
(i)
) n +
n
j=i
j=1
j
(z
(j1)
). (5)
Montrons maintenant par recurrence que
n +
n
j=i
j=1
j
(z
(j1)
) ne
OPT(G,H,u)
P
j=i
j=1
j
. (6)
o` u e designe lexponentielle de 1. Le resultat est evident pour i = 0. Considerons maintenant
i 1. Nous avons
n +
n
j=i
j=1
j
(z
(j1)
)
= n +
n
j=i1
j=1
j
(z
(j1)
) +
n
i
(z
(i1)
) en separant le dernier terme,
n +
n
j=i1
j=1
j
(z
(j1)
) +
n
i
_
n +
n
j=i1
j=1
j
(z
(j1)
)
_
par (5),
(1 +
n
i
)
_
n +
n
j=i1
j=1
j
(z
(j1)
)
_
par factorisation,
(1 +
n
i
)ne
OPT(G,H,u)
P
j=i1
j=1
j
par recurrence,
ne
OPT(G,H,u)
P
j=i
j=1
j
en utilisant 1 +x (1 +)
x
pour x [0, 1].
28
Le crit`ere darret de lalgorithme combine ` a (5) et (6) implique que
1 (z
(t)
) ne
OPT(G,H,u)
P
j=t
j=1
j
,
donc
i=t
i=1
i
OPT(G,H,u)
ln(1/(n)).
Finalement, lalgorithme retourne une solution de valeur
1
i=t
i=1
i
) et nous avons, en
utilisant (3),
1
i=t
i=1
i
OPT(G, H, u) ln(1/(n))
log
1+
_
1+
_
OPT(G, H, u)
1 +
.
References
[1] G.B. Dantzig. Maximization of a linear function of variables subject to linear inequalities.
Proceedings of Linear Programming Conference, June 20-24, 1949, pages 359373, 1951.
[2] C de la Vallee Poussin. Sur la methode de lapproximation minimum. Annales de la societe
scientique de Bruxelles, 1910.
[3] J. Edmonds. Paths,Trees, and Flowers. Canadian Journal of Mathematics, 17:449467, 1965.
[4] M.R. Garey and D.S. Johnson. Computers and Intractability. W.H. Freeman and Company,
1979.
[5] M. Grotschel, L. Lovasz, and A. Schrijver. The ellipsoid method and its consequences in
combinatorial optimization. Combinatorica, 1:169197, 1981.
[6] R.M. Karp and C.H. Papadimitriou. On linear characterizations of combinatorial optimization
problems. SIAM Journal on Computing, 11:620632, 1982.
[7] B. Korte and J. Vygen. Combinatorial Optimization. Springer, 2000.
[8] J.F Maurras. Complexite et LP-Reduction. Manuscript, 1997.
[9] G.L. Nemhauser and L.A. Wolsey. Integer and Combinatorial Optimization. Wiley Interscience,
Series in Discrete Mathematics and Optimization, 1988.
[10] A. Schrijver. Theory of linear and integer programming. Wiley Interscience, Series in Discrete
Mathematics and Optimization, 1986.
[11] N.Z. Shor. Utilization of the operation of space dilation in the minimization of convex functions.
Cybernetics, vol 6:715, 1970.
[12] N.Z. Shor. Cut-o method with space extension in convex programming problems. Cybernetics,
vol 13:9496, 1977.
29