Th´eorie des graphes - R´esum´e Juin 2010
Dubuc Xavier
26 mai 2010
Table des mati`eres
1 Th´eorie de la complexit´e 3
1.1 Lesprobl`emes........................................... 3
2 efinitions de base 5
3 Parties de graphes 5
4 Connexit´e 6
4.1 Composantesconnexes...................................... 6
4.2 Composantes fortement connexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5 Graphes particuliers 7
6 Les structures de donn´ees 8
6.1 Construction de la liste des pr´ed´ecesseurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
7 ecomposition d’un graphe en niveaux 9
8 Exploration de graphes 9
8.1 Parcoursenlargeur(DFS).................................... 10
8.2 Parcours en profondeur (BFS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
9 etection de circuit 10
10 Arbres et Arborescences 11
10.1 Arbre recouvrant de poids minimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
10.1.1 AlgorithmedePrim ................................... 11
10.1.2 AlgorithmedeKruskal.................................. 11
10.1.3 Comparaison des 2 algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
10.1.4 Am´elioration de l’algorithme de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . 12
10.1.5 AlgorithmedEdmonds ................................. 13
11 Chemins optimaux 13
11.1AlgorithmedeDijkstra...................................... 14
11.1.1 Algorithmedebase.................................... 14
11.1.2 Versionavectas ..................................... 14
11.1.3 Algorithmes`abuckets .................................. 15
11.2AlgorithmedeBellman...................................... 16
11.2.1 Algorithmedebase.................................... 17
11.2.2 AlgorithmeFIFO..................................... 17
11.2.3 Algorithme d’Esopo et Pape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
11.2.4 Graphessanscircuits................................... 18
11.3AlgorithmedeFloyd....................................... 18
12 Ordonnancement et plus longs chemins 19
1
13 Parcours 19
14 Probl`emes de coloration 21
14.1Colorationdesarˆetes....................................... 21
14.2Colorationdessommets ..................................... 21
14.2.1 M´ethode heuristique equentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
14.3DSatur............................................... 22
14.4M´ethodeexacte:Bactrack.................................... 22
15 Probl`emes de flots 23
15.1 Algorithme de Ford & Fulkerson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
15.2Probl`emedeotcompatible................................... 25
15.3 Probl`eme de flot de coˆut minimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
16 Probl`eme de couplage 28
2
1 Th´eorie de la complexit´e
La premi`ere id´ee qui vient `a l’esprit pour ´evaluer et comparer des algorithmes est de les programmer,
puis de mesurer leurs dur´ees d’ex´ecution. En fait, le temps de calcul est une mesure imparfaite car elle
d´epend trop de la machine, du langage de programmation, du compilateur et des donn´ees. On pr´ef`ere
en pratique compter le nombre d’op´erations caract´eristiques de l’algorithme `a ´evaluer : ce nombre est
ind´ependant de la machine et du langage. Evalu´e dans certaines conditions, on l’appelle complexit´e de
l’algorithme. La complexit´e d’un algorithme Aest une fonction non d´ecroissante fA(k), donnant le nombre
d’instructions caract´eristiques ex´ecut´ees par Adans le pire cas, pour une donn´ee de taille k. La taille
d’une donn´ee est la quantit´e de m´emoire pour la stocker. Pour ˆetre rigoureux, il faudrait la mesurer
en nombre de bits. On se limitera `a compter le nombre de mots-m´emoire n´ecessaires. La nature de la
fonction fA(k), et particuli`erement son comportement asymptotique, donne une indication importante
sur la mani`ere dont l’algorithme Apermet de r´esoudre le probl`eme consid´er´e. Selon que fA(k) est de type
(ou d’ordre) polynomial en kou exponentiel en k, le temps de calcul de A´evoluera de mani`ere totalement
diff´erente.
Il apparaˆıt illusoire de r´esoudre de mani`ere exacte un probl`eme de tr`es grande dimension pour lequel le
meilleur algorithme connu (complexit´e d’un probl`eme) aurait une complexit´e en temps non polynomiale.
La distinction polynomiale ou non reste donc essentielle pour analyser l’´evolution du temps de r´esolution
d’un algorithme en fonction de la dimension du probl`eme. Une classification grossi`ere mais reconnue
distingue les algorithmes polynomiaux, des autres, dits exponentiels. Un bon algorithme est polyno-
mial. La puissance de la machine ne r´esoud rien pour des complexit´es exponentielles. En particulier, il
faut se m´efier des m´ethodes ´enum´eratives consistant `a ´enum´erer tous les cas possibles. Elles conduisent `a
des algorithmes exponentiels. Le caract`ere, pire cas, de la th´eorie de la complexit´e ne donne pas toujours
une image fid`ele de l’efficacit´e r´eelle d’un algorithme. Malgr´e cette faiblesse, ce type d’analyse pr´esente
deux avantages : elle fournit une borne sup´erieure du temps de r´esolution et elle est ind´ependante des
donn´ees de l’exemple `a traiter. Une complexit´e moyenne serait plus difficile `a calculer, il faudrait se livrer
`a une analyse probabiliste.
1.1 Les probl`emes
Un probl`eme d’optimisation combinatoire consiste `a chercher le minimum sd’une application f, le
plus souvent `a valeurs enti`eres ou r´eelles, sur un ensemble fini S.fest la fonction ´economique ou fonction
objectif :
f(s) = min
sS{f(s)}
Un probl`eme d’existence (ou probl`eme de d´ecision) consiste `a chercher dans un ensemble fini Ss’il
existe un ´el´ement s v´erifiant une certaine propri´et´e P. Les probl`emes d’existence peuvent toujours ˆetre
formul´es par un ´enonc´e et une question `a r´eponse Oui-Non. Les probl`emes d’existence peuvent ˆetre
consid´er´es comme des probl`emes d’optimisation particuliers : on d´efinit la fonction objectif :
f:S7→ {0,1}
f(s)=0sv´erifie P(en minimisation)
Il existe aussi un probl`eme d’existence associ´e `a tout probl`eme d’optimisation. Il suffit d’ajouter `a la
donn´ee Set fun entier k. La propri´et´e Pest alors f(s)k. Un probl`eme d’optimisation est au moins
aussi difficile que le probl`eme d’existence associ´e ; mais pas beaucoup plus ! Si le probl`eme d’existence
associ´e `a un probl`eme d’optimisation est difficile, le probl`eme d’optimisation l’est alors au moins autant. Si
on dispose d’un algorithme efficace pour le probl`eme d’existence, on peut l’utiliser un nombre polynomial
de fois pour r´esoudre le probl`eme d’optimisation, par dichotomie sur k.
On connaˆıt pour certains probl`emes d’optimisation combinatoire des algorithmes efficaces, c’est-`a-dire
polynomiaux. Ces probl`emes sont dits faciles.
Pour d’autres probl`emes, on n’a pas r´eussi `a trouver d’algorithmes polynomiaux. On ne dispose pour les
r´esoudre de mani`ere optimale que d’algorithmes exponentiels, sortes d’´enum´erations compl`etes am´elior´ees.
Ces probl`emes sont dits difficiles.
La th´eorie de la complexit´e ne traite que des probl`emes d’existence, car leur r´eponse Oui-Non, Vrai-
Faux a permis de les ´etudier avec des outils de la logique math´ematique. Ceci n’est pas tr`es gˆenant car,
comme tout probl`eme d’optimisation est au moins aussi difficile que son probl`eme d’existence associ´e, tout
r´esultat ´etablissant la difficult´e d’un probl`eme d’existence concerne `a fortiori le probl`eme d’optimisation.
3
La classe Pest form´ee de l’ensemble des probl`emes d’existence qui admettent des algorithmes
d´eterministes polynomiaux. Cette classe inclut tous les probl`emes d’existence associ´es aux probl`emes
d’optimisation faciles.
Un algorithme d´eterministe est une s´equence d’op´erations `a ex´ecuter dans un ordre d´etermin´e ; un tel al-
gorithme c’est donc rien d’autre qu’un programme informatique constitu´e d’une suite finie d’instructions
correspondant `a des op´erations ´el´ementaires. La th´eorie de la complexit´e se concentre sur les probl`emes
d’existence qui ont une importance pratique. Le crit`ere de praticabilit´e retenu est de pouvoir v´erifier en
temps polynomial une proposition de r´eponse Oui.
La classe N P est celle des probl`emes d’existence dont une proposition de solution Oui est v´erifiable
polynomialement. On dit ´egalement que la classe N P est celle des probl`emes d’existence pour lesquels
il existe un algorithme non d´eterministe de temps polynomial. Tout probl`eme d’existence avec un algo-
rithme polynomial est dans P, et donc dans N P.N P inclut donc la classe P.
Pour un probl`eme d’existence sans algorithme efficace, il faut faire les choses suivantes pour prouver
l’appartenance `a N P :
proposer un codage de la solution (certificat) ;
proposer un algorithme qui va v´erifier la solution au vu des donn´ees et du certificat ;
montrer que cet algorithme a une complexit´e polynomiale.
Exemple :
Consid´erons le probl`eme d’empilement : ´etant donn´e un ensemble Sde nnombres entiers et un entier
b, existe-t-il un sous-ensemble Tde Sdont la somme des ´el´ements soit ´egale `a b? On ne connaˆıt pas
d’algorithme polynomial pour r´esoudre ce probl`eme. Il n’empˆeche qu’il est dans N P. Un certificat de
solution Oui peut ˆetre une liste des ´el´ements trouv´es pour T. L’algorithme de v´erification consiste `a
v´erifier que les entiers de cette liste correspondent effectivement `a des entiers de S, et `a v´erifer que leur
somme vaut bien b. Cette v´erification est possible polynomialement : le probl`eme est bien dans N P. Les
probl`emes qui ne sont pas dans N P existent, mais ne pr´esentent qu’un inerˆet th´eorique pour la plupart.
Des exemples sont fournis par des jeux comme les ´echecs, les dames et le go.
Un probl`eme d’existence P1se transforme polynomialement en un autre P2s’il existe un algorithme
polynomial Atransformant toute donn´ee pour P1en une pour P2, en conservant la r´eponse Oui ou Non.
On note une telle relation P1tpP2; elle est r´eflexive et transitive, et constitue un pr´eordre. Al’´evidence,
si P1tpP2, le probl`eme P2est au moins aussi difficile que le probl`eme P1. Plus pr´ecis´ement :
P1tpP2P2∈ P P1∈ P
P1tpP2P16∈ P P26∈ P
De ce pr´eordre, on d´eduit une relation d’´equivalence : P1est ´equivalent (du point de vue complexit´e
en temps) `a P2si et seulement si P1tpP2et P2tpP1. Sur les classes d’´equivalence engendr´ees par cette
relation, il existe donc un ordre. La classe Pforme la classe d’´equivalence des probl`emes les plus simples
au sein de N P. Les probl`emes N P-complets sont les probl`emes les plus difficiles de N P, le ”noyau
dur” en quelque sorte. La classe des probl`emes N P-complets est la classe d’´equivalence qui est l’´el´ement
maximal selon l’ordre induit par tp, c’est-`a-dire form´ee des probl`emes les plus difficiles (du point de
vue complexit´e en temps) au sein de N P. Un probl`eme N P-complet est un probl`eme de N P en lequel
se transforme polynomialement tout autre probl`eme de N P. La classe des probl`emes N P-complets est
not´ee N PC. Dans la litt´erature on rencontre le terme N P-difficile pour les probl`emes d’optimisation : un
probl`eme d’optimisation combinatoire est N P-difficile si le probl`eme d’existence associ´e est N P-complet.
La technique utilis´ee pour prouver qu’un probl`eme Xde N P est N P-complet consiste `a montrer qu’un
probl`eme N P-complet connu Ypeut se transformer polynomialement en X(et pas le contraire !).
Cook a montr´e en 1971 que le probl`eme de satisfiabilit´e est N P-complet : tout autre probl`eme de N P
peut s’y transformer polynomialement. Le probl`eme de satisfiabilit´e s’´enonce comme suit : Les donn´ees
du probl`eme consistent en nvariables bool´eennes xiet un ensemble de mclauses Ci(unions de variables
compl´ement´ees ou non, comme x1¯x3x7). La question `a se poser est donc : peut-on affecter `a chaque
variable une valeur (vrai ou faux) de fa¸con `a rendre vraies toutes les clauses ?
Une question cruciale est de savoir si les probl`emes N P-complets peuvent ˆetre r´esolus polynomiale-
ment, auquel cas P=N P, ou bien si on ne leur trouvera jamais d’algorithmes polynomiaux, auquel cas
P 6=N P. Cette question n’est pas d´efinitivement trancee. la d´ecouverte d’un algorithme polynomial
pour un seul probl`eme N P-complet permettrait de les r´esoudre facilement tous. Comme des centaines de
probl`emes N P-complets r´esistent en bloc `a l’assaut des chercheurs, on conjecture que P 6=N P. La preuve
de cette conjecture n´ecessitera probablement l’invention de nouvelles math´ematiques.Dans l’ensemble des
4
probl`emes N P, on trouve les classes d’´equivalences extrˆemes Pet N PC. Entre les deux s’´etend le marais
des probl`emes `a statut ind´etermin´e. Un exemple de probl`eme du marais est celui de l’isomorphisme de 2
graphes. Deux graphes Get Hsont isomorphes si on peut transformer l’un en l’autre par renum´erotation
des sommets. Personne n’a r´eussi `a montrer que ce probl`eme est N P-complet.
A un probl`eme d’existence P, il est possible d’associer un probl`eme d’existence compl´ementaire ¯
Pen
«inversant»la question pos´ee, c’est-`a-dire en s’interrogant sur la non-existence d’une solution admissible
v´erifiant une certaine propri´et´e. La classe CoN P des probl`emes d’existence est form´ee des probl`emes P
dont le compl´ement ¯
Pappartient `a la classe N P. Si un probl`eme appartient `a CoN P, il existe donc un
algorithme non d´eterministe de temps polynomial pour v´erifier que sa r´eponse est non.
2 D´efinitions de base
Un graphe orient´e est d´efini par un couple G= (X, U) de 2 ensembles : Xest un ensemble fini de
sommets et Uest une famille de couples ordonn´es de sommets app´el´es arcs (ou fl`eches).
Un graphe orient´e simple (ou 1-graphe) est un graphe qui poss`ede au plus un arc dans chaque sens
entre deux sommets, un graphe orient´e multiple (ou p-graphe) est un graphe qui peut poss´eder
plusieurs arcs dans le mˆeme sens. Dans un p-graphe, un couple de sommets ne peut apparaˆıtre plus
de pfois.
Un graphe pond´er´e ou valu´e est muni de poids ou coˆuts sur ses arcs par application C:U7→ R.
On le note G= (X, U, C).
Un poids peut repr´esenter toute valeur num´erique associ´ee `a un arc : distance kilom´etrique, coˆut
de transport, temps de parcours, ...
Une boucle est un arc reliant un sommet `a lui mˆeme.
Soit un arc u= (x, y) : xest l’origine et yest l’extr´emit´e, on dit aussi que yest successeur de
xet xest pr´edecesseur de y. On dit ´egalement que uest incident inerieurement `a yet incident
ext´erieurement `a x; deux arcs sont adjacents s’ils ont au moins un sommet en commun. On intro-
duit ´egalement les notations suivantes :
Notation S´emantiques
w+(x)l’ensemble des arcs incidents ext´erieurement `a x
w(x)l’ensemble des arcs incidents int´erieurement `a x
w(x)l’ensemble des arcs incidents `a x
d+(x)le nombre d’arcs incidents ext´erieurements `a x(demi-degr´e ext´erieur)
d(x)le nombre d’arcs incidents int´erieurements `a x(demi-degr´e int´erieur)
d(x)le degr´e de xtel que d(x) = d+(x) + d(x)
La densit´e d’un graphe orient´e simple est le quotient du nombre d’arcs du graphe par le nombre
maximal d’arcs th´eoriquement possible. Ce nombre peut varier de 0 `a 1, il est souvent exprim´e en
pourcents. Les graphes sont g´en´eralement peu denses.
Un graphe non-orient´e est d´efini par un G= (X, E) telle que Xest un ensemble fini de sommets
et Eest une famille de couples de sommets appel´es arˆetes. On ne distingue plus les successeurs
des pr´ed´ecesseurs, on parle `a pr´esent de voisins et le degr´e d’un sommet devient le nombre d’arˆetes
incidentes `a ce sommet.
Un graphe non-orient´e simple est un graphe qui poss`ede au plus une arˆete entre deux sommets et
ne poss`ede pas de boucle. Un graphe non-orient´e multiple (ou multigraphe) est un graphe qui peut
poss´eder plusieurs arˆetes entre deux sommets.
3 Parties de graphes
Soit un graphe oriene G= (X, U), soit un ensemble AXde sommets et un ensemble VUd’arcs,
alors on dit :
Le sous-graphe de Gengendr´e par Aest le graphe poss´edant commes sommets ceux de l’ensemble
Aet comme arcs les arcs dont les deux extr´emit´es sont dans A.
Le graphe partiel de Gengendr´e par Vest le graphe G0= (X, V ).
5
1 / 29 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !