Vous êtes sur la page 1sur 305

Thorie des Graphes

Jean-Charles Rgin, Arnaud Malapert

Thorie des Graphes - 2015/2016


Remerciements
2

Didier MAQUIN (voir son site web)


Didier MULLER

Thorie des Graphes - 2015/2016


Livres
3

Claude Berge : Graphes


Michel Gondran et Michel Minoux : Graphes et
Algorithmes
Christian Prins : Algorithmes de Graphes
Eugene Lawler : Combinatorial Optimization
Ahuja, Magnanti et Orlin Network Flows
R. Tarjan : Data Structures and Network Algorithms

Thorie des Graphes - 2015/2016


Introduction

Thorie des Graphes - 2015/2016


Graphes : 3 aspects
5

Communiquer / Visualiser
Dfinir des problmes
Raisonner

Pas que des algos : aussi des problmes

Thorie des Graphes - 2015/2016


Histoire
6

Thorie des Graphes - 2015/2016


Histoire
7

Thorie des Graphes - 2015/2016


Dfinitions

Thorie des Graphes - 2015/2016


Graphe : dfinitions
9

Un Graphe Orient (ou Digraph (directed graph)) G=(X,U) est


dtermin par la donne :
dun ensemble de sommets ou nuds X
dun ensemble ordonn U de couples de sommets appels arcs.
Le nombre de sommets dun arc est lordre du graphe
Si u=(a,b) est un arc de G alors
a est lextrmit initiale de u
b lextrmit terminale de u.
b est le successeur de a
a et b sont adjacents
Les arcs ont un sens. Larc u=(a,b) va de a vers b.
Ils peuvent tre munit dun cot, dune capacit etc

Thorie des Graphes - 2015/2016


Graphe
10

Thorie des Graphes - 2015/2016


Graphe
11

On note par (i) : lensemble des arcs ayant i comme


extrmit
On note par +(i) : lensemble des arcs ayant i comme
extrmit initiale = ensemble des arcs sortant de i
On note par -(i) : lensemble des arcs ayant i comme
extrmit terminale = ensemble des arcs entrant dans i
(i) : ensemble des successeurs de i
d+(i) : degr sortant de i (nombre de successeurs)
d-(i) : degr entrant de i (nombre de sommets pour lesquels i
est un successeur)

Thorie des Graphes - 2015/2016


Graphe non orient
12

Un Graphe non orient G=(X,E) est dtermin par la


donne :
dun ensemble de sommets ou nuds X
Dun ensemble E de paires de sommets appeles artes

Les artes ne sont pas orientes

Thorie des Graphes - 2015/2016


Graphe non orient
13

Thorie des Graphes - 2015/2016


Graphe : dfinitions
14

Deux sommets sont voisins sils sont relis par un arc ou


une arte
N(i) : ensemble des voisins de i : ensemble des sommets j
tels quil existe un arte contenant i et j

Thorie des Graphes - 2015/2016


Graphe complet
15

Thorie des Graphes - 2015/2016


Exercices
16

Reliez le nombre dartes et les degrs


Montrez quun graphe simple a un nombre pair de
sommets de degr impair
Montrez que dans une assemble de n personnes, il y en
a toujours au moins 2 qui ont le mme nombre damis
prsents
Est-il possible de relier 15 ordinateurs de sorte que
chaque appareil soit reli exactement 3 autres ?

Thorie des Graphes - 2015/2016


Exercices (suite)
17

Essayez dexprimer (et non ncessairement de rsoudre)


en termes de graphes les problmes suivants :
Peut-on placer quatre dames sur un chiquier 4x4 sans

quaucune delles ne puisse en prendre une autre ?


Un cavalier peut-il se dplacer sur un chiquier en

passant sur chacune des cases une fois et une seule ?


Combien doit-on placer de dames sur un chiquier 5x5
afin de contrler toutes les cases ?

Thorie des Graphes - 2015/2016


Reprsentation des graphes en machine

Thorie des Graphes - 2015/2016


Reprsentation des graphes
19

3 types de reprsentation qui ont chacune leur


avantage et inconvnient
Liste
de successions
Matrice dadjacence

Matrice dincidence

Thorie des Graphes - 2015/2016


Liste de succession
20

Thorie des Graphes - 2015/2016


Matrice dadjacence
21

Thorie des Graphes - 2015/2016


Matrice dadjacence
22

Thorie des Graphes - 2015/2016


Matrice dadjacence
23

Thorie des Graphes - 2015/2016


Matrice dincidence
24

INVERSE

Thorie des Graphes - 2015/2016


Matrice dincidence
25

Thorie des Graphes - 2015/2016


Exercices
26

Pour chacune des reprsentations, calculer le cot des


oprations suivantes
Est-ceque i et j sont relis ?
Combien i a-t-il de voisins ?

Quels sont les voisins de i ?

Supprimer larc (a,b)

Supprimer le premier voisin de i

Thorie des Graphes - 2015/2016


Exercices
27

Tracer la matrice dadjacence du graphe

On a calcul ci-dessous les matrices M2 et M3 (M est la


matrice ci-dessus). Pour chacune de ces matrices, quoi
correspondent les nombres obtenus ?

Thorie des Graphes - 2015/2016


Chemins, chanes, cycles et circuit

Thorie des Graphes - 2015/2016


Chane
29

Thorie des Graphes - 2015/2016


Cycle
30

Thorie des Graphes - 2015/2016


Chemin
31

Thorie des Graphes - 2015/2016


Exercice : matrice dadjacence
32

On considre un graphe G = (E, U ) avec E=(A, B, C, D, E) et M


sa matrice associe.
Tracer le graphe reprsentatif de cette matrice.

Dterminer la matrice dincidence de ce graphe.



Calculer , i {1, 2, 3}. Rappeler la signification des
coefficients non nuls de ces matrices.
2 3 4
Calculer = + + + + . Donner une
interprtation de A. 0 1 0 1 0
0 0 1 0 0
0 0 0 0 1
0 0 1 0 1
0 0 0 0 0

Thorie des Graphes - 2015/2016


Exercice : matrice dadjacence
33

0 0 2 0 1 0 0 0 0 2
0 0 0 0 1 0 0 0 0 0 4 = 0
2 = 0 0 0 0 0 3 = 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

1 1 2 1 3
+ + 2 + 0 1 1 0 1
3 + 4 = 0 0 1 0 1
0 0 1 1 2
0 0 0 0 1

Thorie des Graphes - 2015/2016


Exercice: jeu des allumettes
34

Deux joueurs disposent de deux tas de trois allumettes,


tour de rle chaque joueur peut enlever une ou deux
allumettes dans un des tas. Le joueur qui retire la dernire
allumette perd la partie.
Modliser le jeu laide dun graphe.

Que doit jouer le premier joueur pour gagner coup sr ?

Thorie des Graphes - 2015/2016


Graphe dtat
35

Chaque tat est reprsent par un sommet (x,y)


indiquant le nombre dallumettes de chaque tas.
On limine les symtries entre les tats (xy).
Il existe un arc entre deux sommets A et B sil est
possible de passer de ltat A a ltat B par une
transition valide (enlever une ou deux allumettes
dans un des tas).
Notez que la transition entre (2,0) est (0,0)
correspond un suicide, alors quon peut jouer un
coup gagnant.

Thorie des Graphes - 2015/2016


Stratgie gagnante
36

Il faut retirer deux allumettes dun tas.


Quel que soit le coup jou par
ladversaire, on peut jouer un coup
gagnant.

Thorie des Graphes - 2015/2016


Exercice : Die Hard !
37

On souhaite prlever 4 litres de liquide dans un tonneau.


Pour cela, nous avons notre disposition deux rcipients
(non gradus !), lun de 5 litres, lautre de 3 litres...
Comment doit-on faire ?

Thorie des Graphes - 2015/2016


Exercice : Die Hard !
38

Chaque tat est reprsent par un sommet (x,y)


indiquant le nombre de litres dans la grande et la
petite bouteille.
Il existe un arc entre deux sommets A et B sil est
possible de passer de ltat A a ltat B par une
transition valide :
vider une bouteille (V);
remplir une bouteille (R);
transvaser le contenu de la bouteille A dans la bouteille B jusqu
ce que la bouteille A soit vide ou la bouteille B soit pleine (T).
Solution : (0,0) R (5,0) T (2,3) V (2,0) T (0,2) R (5,2) T (4,3)

Thorie des Graphes - 2015/2016


Exercice : dnombrement de chemins
39

Supposons une grille de


dimensions n x m (par ex. 4x4).
Quelle est la longueur dun
plus court chemin entre A et B ?
Comment pouvez-vous
reprsenter un tel chemin ?
Combien y a t-il de plus courts
chemins entre A et B ?

Thorie des Graphes - 2015/2016


Exercice : dnombrement de chemins
40

Supposons une grille de


dimensions n x m (par ex. 4x4).
Combien y a t-il de plus courts
chemins entre A et B ?

Thorie des Graphes - 2015/2016


Exercice 2 : dnombrement de chemins
41

#AB est le nombre de plus courts


chemins entre A et B.
#AB = 2*(#AC*#CB + #ADB)
#AB = 2*(C(1, 3+1)^2 + 1)
#AB = 2*(16+1)=34

Thorie des Graphes - 2015/2016


Graphes eulriens

Thorie des Graphes - 2015/2016


Chane et cycle eulrien
43

Thorie des Graphes - 2015/2016


Existence chane eulrienne
44

Thorie des Graphes - 2015/2016


Trouver une chane eulrienne
45

Thorie des Graphes - 2015/2016


Trouver une chane eulrienne
46

Thorie des Graphes - 2015/2016


Exercices
47

Les graphes suivants sont-ils eulriens ?

Est-il possible de tracer une courbe, sans lever le crayon,


qui coupe chacun des 16 segments de la figure suivante
exactement une fois ?

Thorie des Graphes - 2015/2016


Exercices
48

Le degr de A,B et D est 5


Le degr de E et C est 4
Le degr de A1, A2, B1,
B2, C1, C2, D1, E1 et E2
est 9.
Il est impossible de tracer une
courbe, sans lever le crayon,
qui coupe les 16 segments
car il y a plus de deux
sommets de degr impair.
Thorie des Graphes - 2015/2016
Exercices
49

Soit G un graphe non eulrien. Est-il toujours possible de rendre


G eulrien en lui rajoutant un sommet et quelques artes ?
On considre des dominos dont les faces sont numrotes 1, 2, 3,
4 ou 5.
En excluant les dominos doubles, de combien de dominos dispose-t-on ?
Montrez que lon peut arranger ces dominos de faon former une
boucle ferme (en utilisant la rgle habituelle de contact entre les
dominos).
Pourquoi nest-il pas ncessaire de considrer les dominos doubles ?
Si lon prend maintenant des dominos dont les faces sont numrotes de
1 n, est-il possible de les arranger de faon former une boucle
ferme ?

Thorie des Graphes - 2015/2016


Correction : rendre un graphe eulrien
50

Soit G un graphe non eulrien. Est-il toujours possible de


rendre G eulrien en lui rajoutant un sommet et quelques
artes ?
On ajoute un nouveau sommet que lon relie tous les
sommets de degr impair. Ces sommets ont maintenant un
degr pair dans le graphe modifi.
Dans le graphe original, il y avait un nombre pair de
sommets de degr impair, le nouveau sommet a donc un
degr pair.
Ainsi, tous les sommets ont maintenant un degr pair et le
graphe est eulrien.
Thorie des Graphes - 2015/2016
Correction : dominos
51

Si lon prend maintenant des dominos dont les faces sont


numrotes de 1 n, est-il possible de les arranger de faon
former une boucle ferme ?
Les sommets du graphes sont les nombres de 1 n.
Chaque sommet est reli a tous les autres sommets. Chaque
arc (i,j) reprsente un domino.
En fait, le graphe est complet. Le degr dun sommet est n-1.
Si n est paire, tous les sommets ont un degr impair et le
graphe nest pas eulrien.
Si n est impaire, tous les sommets ont un degr pair et le
graphe est eulrien.
Thorie des Graphes - 2015/2016
Chemin et circuit eulrien
52

Soit un graphe oriente G=(X, A).


Un chemin dans un graphe orient est dit eulrien sil
passe exactement une fois par chaque arc.
Un graphe orient est dit eulrien sil admet un circuit
eulrien.

Thorie des Graphes - 2015/2016


Chemin et circuit eulrien
53

Thorie des Graphes - 2015/2016


Chemin hamiltonien

Thorie des Graphes - 2015/2016


Chemin hamiltonien
55

Thorie des Graphes - 2015/2016


Traveling Salesman Problem (TSP)
56

Donnes : une liste de villes et leurs distances deux


deux.
Question : trouver le plus petit tour qui visite chaque
ville exactement une fois.

Reformulation plus mathmatique :


Etant donn un graphe complet pondr, trouver un cycle
hamiltonien de poids minimum

Thorie des Graphes - 2015/2016


TSP
57

Chaque ville est visite une et une seule fois

Un seul tour (pas de sous-tour)

Thorie des Graphes - 2015/2016


TSP
58

Chaque ville est visite une et une seule fois

Un seul tour (pas de sous-tour)

Thorie des Graphes - 2015/2016


TSP
59

Certains problmes sont quivalents au problme du TSP.


Exemple : problme dordonnancement : trouver lordre dans
lequel on doit construire des objets avec des presses
hydrauliques
La version pure du TSP nest pas frquente en pratique.
On a souvent des problmes qui sont
Non euclidiens
Asymtriques
Recouvrement de sous-ens de nuds et non pas de tous les nuds
Ces variations ne rendent pas le problme plus facile.
Problme assez commun
Vehicle routing (time windows, pickup and delivery)
Thorie des Graphes - 2015/2016
60

ProcterThorie
and Gamble Contest
des Graphes 1962
- 2015/2016
61

USA 13,509 cities. Solved in 1998


Thorie des Graphes - 2015/2016
German Tour
62

Le 20 Avril 2001, David Applegate, Robert Bixby, Vaek


Chvtal, et William Cook ont anonc la rsolution du
TSP pour les 15 112 villes dAllemagne.
Rseau de 110 processeurs (550 Mhz) luniversit de
Rice et de Princeton.
Le temps total dutilisation des ordinateurs a t de 22.6
annes.

Thorie des Graphes - 2015/2016


63

Germany 15,112 cities. Solved in 2001


Thorie des Graphes - 2015/2016
64

Sweden 24,978 cities. Solved in 2004


Thorie des Graphes - 2015/2016
65

VLSI 85,900. Solved in 2006


Thorie des Graphes - 2015/2016
TSP
66

Il existe plusieurs solveurs


Le plus connu est Concorde de William Cook (gratuit)

Thorie des Graphes - 2015/2016


Chemin hamiltonien
67

Thorie des Graphes - 2015/2016


Exercice
68

Huit personnes se retrouvent pour un repas de mariage. Le


graphe ci-dessous prcise les incompatibilits dhumeur entre
ces personnes (une arte reliant deux personnes indique
quelles ne se supportent pas).

Proposez un plan de table (la table est ronde) en vitant de


placer cte cte deux personnes incompatibles.

Thorie des Graphes - 2015/2016


Exercice
69

On cherche un cycle hamiltonien


dans le graphe de compatibilit.

Thorie des Graphes - 2015/2016


Connexit

Thorie des Graphes - 2015/2016


Connexit
71

Thorie des Graphes - 2015/2016


Connexit
72

Thorie des Graphes - 2015/2016


Forte connexit
73

Thorie des Graphes - 2015/2016


Graphe Rduit
74

Thorie des Graphes - 2015/2016


Rduction
75

Thorie des Graphes - 2015/2016


Exercices
76

Donner lensemble des successeurs et des


prdcesseurs de chaque sommet.
Calculer les demi-degrs intrieurs et
extrieurs de chaque sommet.
Donner un exemple de chemin simple
mais non lmentaire.
Existe-t-il un circuit hamiltonien dans G?
Tracer le graphe non orient dduit de
G.
G est-il connexe ? Fortement connexe?
Thorie des Graphes - 2015/2016
Arbre et arborescence

Thorie des Graphes - 2015/2016


Cycle et nombre cyclomatique
78

Thorie des Graphes - 2015/2016


Nombre cyclomatique
79

Soit G un graphe avec n sommets, m artes (ou arcs) et


p composantes connexes
La dimension de la base de cycle est v(G) = m n +p

Thorie des Graphes - 2015/2016


Arbre
80

Un arbre est un graphe connexe sans cycles.


Une fort est un graphe dont chaque composante est un
arbre

Thorme. G=(X,A) est un arbre si et seulement si il


existe une unique chane reliant toute paire de sommet.
Preuve:
Si2 chaines alors on aurait un cycle
connexe quivaut il existe toujours une chaine entre toute
paire de sommet
Thorie des Graphes - 2015/2016
Arbre
81

Thorme : Soit H=(X,U) un graphe dordre 2; les


proprits suivantes sont quivalentes pour caractriser un
arbre
H est connexe et sans cycle
H est sans cycle et admet n-1 arcs
H est connexe et admet n-1 arcs
H est connexe et en ajoutant un arc on cre un cycle (et un seul)
H est sans cycle et si on supprime un arc quelconque , il nest plus
connexe
Tout couple de sommets est reli par une chane et une seule

Preuve : voir Berge


Thorie des Graphes - 2015/2016
Graphe fortement connexe
82

Thorme : Pour un graphe G avec au moins un arc, les


conditions suivantes sont quivalentes :
G est fortement connexe
Par tout arc passe un circuit

Preuve : voir Berge

Thorie des Graphes - 2015/2016


Arborescence
83

Dans un graphe G=(X,U), on appelle racine, un point a


tel que tout autre sommet du graphe puisse tre atteint
par un chemin issu de a. Une racine nexiste pas toujours.
Une arborescence est un arbre muni dune racine
Un graphe G est dit quasi-fortement connexe si pour
tout couple de sommet x et y, il existe un sommet z do
partent la fois un chemin allant en x et un chemin
allant en y

Thorie des Graphes - 2015/2016


Cheminement

Thorie des Graphes - 2015/2016


Arbre
85

Thorie des Graphes - 2015/2016


Arbre
86

La racine r de l'arbre est l'unique nud ne possdant pas


de parent

Tout sommet x qui nest pas la racine a


un unique parent, not parent(x) (appel pre parfois)
0 ou plusieurs fils. fils(x) dsigne lensemble des fils de x
Si x et y sont des sommets tels que x soit sur le chemin de r
y alors
x est un anctre de y
y est un descendant de x
Un sommet qui na pas de fils est une feuille

Thorie des Graphes - 2015/2016


Arbre
87

1 est la racine
9,10,6,3,11,12,8 sont les feuilles
11 est un descendant deThorie
4, maisdes
pas de 2 - 2015/2016
Graphes
2 est un anctre de 10
Arbre
88

Quand il ny a pas dambigut, on regarde les artes


dun arbre comme tant orient de la racine vers les
feuilles

La profondeur dun sommet (depth) est dfinie


rcursivement par
prof(v) = 0 si v est la racine
prof(v) = prof(parent(v)) + 1

Thorie des Graphes - 2015/2016


Arbre
89

1 est la racine
2,3,4 sont la profondeur 1
5,6,7,8 la profondeur 2
Thorie des Graphes - 2015/2016
La hauteur de 2 est 2, celle de 9 est 4, celle de 3 est 2, celle de 1 est 1.
Exemple darbre : dictionnaire
90

Larbre ci-contre reprsente un dictionnaire


contenant les 5 mots suivants: arbre, arc, arete,
graphe, graphie.
Ajouter le mot arborer au dictionnaire.
Proposez un algorithme pour linsertion dun mot.
Ajouter le mot are dans le dictionnaire. Que
constatez-vous ? Proposez une solution ?
Proposez un algorithme dterminant si un mot
appartient au dictionnaire.
Quel est le nombre de sommets maximum dn
dictionnaire de profondeur p ?

Thorie des Graphes - 2015/2016


Arbre : parcours
91

Parcours (tree traversal) : on traverse lensemble des


sommets de larbre

Parcours en largeur dabord


Parcours en profondeur dabord
Prfixe

Infixe (arbre binaire seulement)


Postfixe

Thorie des Graphes - 2015/2016


Arbre : parcours en largeur dabord
92

Largeur dabord (bfs = breadth-first search)


On visite la racine, puis on rpte le processus suivant
jusqu avoir visit tous les sommets :
visiter un fils non visit du sommet le moins rcemment
visit qui a au moins un fils non visit

On visite tous les sommets la profondeur 1, puis tous


ceux la profondeur 2, puis tous ceux la profondeur
3 etc
Thorie des Graphes - 2015/2016
Arbre
93

Largeur dabord: ordre de visite


1, 2 ,3 ,4 ,5, 6 , 7, 8, 9 , 10 ,11 ,12
Thorie des Graphes - 2015/2016
Arbre : parcours en largeur dabord
94

Bfs(T) : array
r racine(T)
crer un file F et ajouter r dans F
i0
tant que (F nest pas vide)
x premier(F); supprimer x de F
array[i] x
i++
pour chaque fils y de x
ajouter y dans F
fin pour
fin tant que

Thorie des Graphes - 2015/2016


Arbre : largeur dabord avec passes
95

Bfs(T) : array
r racine(T)
crer deux files F1 et F2 et ajouter r dans F1
i0
faire
tant que (F1 nest pas vide)
x premier(F1); supprimer x de F1
array[i] x
i++
pour chaque fils y de x
ajouter y dans F2
fin pour
fin tant que
F1 F2 // fin dune passe dbut de la nouvelle : la
F2 devient vide // profondeur change
tant que F1 nest pas vide

Thorie des Graphes - 2015/2016


Arbre : parcours en largeur dabord
96

Largeur dabord: ordre de visite


Passe 1 : 1
Passe 2 : 2,3,4
Passe 3 : 5,6,7,8
passe 4 : 9,10,11,12

Thorie des Graphes - 2015/2016


Arbre : parcours en profondeur dabord
97

Profondeur dabord (dfs = depth-first search)

Dfini de faon rcursive


visit(sommet x)
previsit(x)
pour chaque fils y de x
visit(y)
postvisit(x)
Premier appel : visit(racine(T))
Thorie des Graphes - 2015/2016
Arbre : parcours en profondeur dabord
98

Ordre prfix ou postfix dpend des fonction previsit


et postvisit
Si previsit(x) : met x dans le array et incremente i alors
array contient lordre prfix
Si cest postvisit qui le fait alors array contiendra lordre
postfix

Thorie des Graphes - 2015/2016


Arbre: parcours en profondeur dabord
99

ordre de visite prfix


On marque quand on atteint le nud.
1, 2, 5, 9, 10, 6, 3, 4, 7, 11, 12, 8
ordre de visite postfix
On marque quand on quitte le nud.
9, 10, 5, 6, 2, 3, 11, 12, 7, 8, 4, 1

Thorie des Graphes - 2015/2016


Arbre : parcours en profondeur dabord
100

Dfs(T) : array
r racine(T)
crer une pile P et ajouter r dans P
i0
tant que (P nest pas vide)
x premier(P); supprimer x de P
array[i] x
i++
pour chaque fils y de x
ajouter y dans P
fin pour
fin tant que

Thorie des Graphes - 2015/2016


Arbre : implmentation
101

Reprsentation des fils


Par une liste :
Le parent possde un premier fils
Chaque sommet possde un pointeur vers son frre suivant (liste
chane des fils)
Par un tableau si le nombre de fils est connu lavance
(arbre k-aire)
Dans le cas binaire, le parent possde le fils gauche et le fils
droit

Thorie des Graphes - 2015/2016


Exercice : parcours darbre
102

Effectuez un parcours en largeur/profondeur dabord en partant de 1.


Vous devez visitez les successeurs dun nud dans leur ordre naturel.
Thorie des Graphes - 2015/2016
Cheminement dans un graphe
103

Les algorithmes que lon a vu pour les arbres (DFS et


BFS) peuvent sappliquer aux graphes
Il faut faire un peu attention
On ne doit pas visiter deux fois le mme sommet

Thorie des Graphes - 2015/2016


Graphe: largeur dabord
104

0 1 0

1 2 4
2
9 4 5 9 10

5 7
10
11 6 7 8 11
8
6 Arbre BFS
Graphe G

Thorie des Graphes - 2015/2016


Graphe : largeur dabord
105

Bfs(G,s) : array
rs
pour tous les sommets x marque[x] faux
crer un file F; enfiler(F,r); marque[r] vrai
i0
tant que (F nest pas vide)
x premier(F); defiler(F)
array[i] x
i++
pour chaque voisin y de x
si marque[y] est faux
alors marque[y] vrai
enfiler(F,y)
fin pour
fin tant que

Thorie des Graphes - 2015/2016


Graphe : profondeur dabord
106

0
1

0 1 4

2
2
9 4
5
5 7 9
10
11 11
8 6 7
6
10
Graphe G 8

Arbre DFS

Thorie des Graphes - 2015/2016


Graphe : profondeur dabord
107

Dfs(G,s) : array
rs
pour tous les sommets x marque[x] faux
crer un pile P; push(P,r); marque[r] vrai
i0
tant que (P nest pas vide)
x top(P); pop(P);
array[i] x
i++
pour chaque voisin y de x
si marque[y] est faux
alors marque[y] vrai
push(P,y)
fin pour
fin tant que

Thorie des Graphes - 2015/2016


Exercice : parcours de graphe
108

Effectuez un parcours en
largeur/profondeur dabord en
partant de 1.
Prcisez :
larbre du parcours
la liste des prdcesseurs
lordre prfixe/postfixe
Visitez les successeurs dun nud
dans lordre :
naturel (croissant).
ante-naturel (dcroissant)

Thorie des Graphes - 2015/2016


Exercice : parcours de graphe orient
109

Effectuez un parcours en
largeur/profondeur dabord
en partant de 5.
Prcisez :
larbre du parcours
la liste des prdcesseurs
lordre prfixe/postfixe
Visitez les successeurs dun
nud dans lordre :
naturel (croissant).
ante-naturel (dcroissant)

Thorie des Graphes - 2015/2016


Recherche de connexit

Thorie des Graphes - 2015/2016


Graphe connexe
111

Ecrire un algorithme qui dtermine si un graphe est


connexe
Ecrire un algorithme qui calculent les composantes
connexes dun graphe

Thorie des Graphes - 2015/2016


Composantes fortement connexes
112

Ecrire un algorithme qui teste si un graphe est fortement


connexe
En crire un meilleur !

Thorie des Graphes - 2015/2016


Composantes fortement connexes
113

On calcule G le graphe inverse (transpose graph)


On marque non marqu tous les sommets
Dbut: On prend un sommet s non marqu
On calcule tous les sommets que lon peut atteindre dans G
et dans G partir de s
On marque marqu tous les sommets atteints deux fois
ainsi que s
On retourne en Dbut tant quil reste des sommets non
marqus

Complexit ? En thorie ? En pratique ?

Thorie des Graphes - 2015/2016


Composantes fortement connexes
114

Algorithme de R.E Tarjan


Premieralgorithme linaire : complexit en O(n+m)
ICS 161: Design and Analysis of Algorithms, D. Eppstein.

Algorithme de Kosaraju
Kosaraju's algorithm, Wikipedia.
Algorithme de Gabow (Path-based strong component
algorithm)

Thorie des Graphes - 2015/2016


DFS types darcs
115

On visite v, on atteint w
w na jamais t atteint
w est un anctre de v dans la DFS

w est a dj t totalement visit

Ide : on marque les nuds avec un indice que lon


augmente. On regarde quel est lindice minimal que lon
peut atteindre partir d un nud.

Thorie des Graphes - 2015/2016


Algorithme de Tarjan
116

num := 0; P := pile vide; partition := ensemble vide


pour chaque sommet v de G
si v.num n'est pas dfini
parcours(G, v)
renvoyer partition
fin de fonction

Thorie des Graphes - 2015/2016


Function parcours(sommet v)
117

v.num := num
v.numAccessible := num
num := num + 1
P.push(v), v.dans_P := oui
// Parcours rcursif
pour chaque w successeur de v
si w.num n'est pas dfini
parcours(w)
v.numAccessible := min(v.numAccessible, w.numAccessible)
sinon si w.dans_P = oui
v.numAccessible := min(v.numAccessible, w.num)
si v.numAccessible = v.num
// C'est une racine, calcule la composante fortement connexe associe
C := ensemble vide
rpter
w := P.pop(), w.dans_P := non
ajouter w C
tant que w diffrent de v
ajouter C partition

Thorie des Graphes - 2015/2016


Composantes fortement connexes
118

Thorie des Graphes - 2015/2016


CFC : algorithme de Tarjan
119

Thorie des Graphes - 2015/2016


CFC : algorithme de Tarjan
120

Thorie des Graphes - 2015/2016


Exercice : composantes fortement connexes.
121

Trouvez les CFC avec


lalgorithme de Tarjan.
Dessinez larbre DFS.
Dessinez le graphe rduit.

Thorie des Graphes - 2015/2016


Exercice : encore des CFC.
122

Trouvez les CFC avec


lalgorithme de Tarjan.
Dessinez larbre DFS.
Dessinez le graphe rduit.

Thorie des Graphes - 2015/2016


Algorithme de Kosaraju
123

S : pile vide
Tant que S ne contient pas tous les sommets
Choisir un sommet arbitraire v qui nest pas dans S
Lancer une DFS depuis v. Mettre tous les sommets visits ( la fin de
leur visite) u dans S
Invers la direction de tous les arcs pour obtenir le graphe
transpos.
Tant que S est non vide:
Affecter v avec le sommet de S. Dpiler S
Lancer une DFS depuis v. (On peut aussi utiliser une BFS)
Lensemble des sommets visists depuis v appartiennent la cfc
contenant v; supprimer ces sommets de G et de S.

Thorie des Graphes - 2015/2016


Algorithme de Kosaraju
124

On commence a
a,b,c,d,h,g,f
On ferme f : S={f}
On ferme g,h,d,c
S={f,g,h,d,c}
On ouvre e
On ferme e,b,a
S={f,g,h,d,c,e,b,a}

On prend le transpos.
On dpile S: a. On atteint b et e
CFC={a,b,e}; S={f,g,h,d,c}
On dpile S: c. On atteint d,h
CFC={c,d,h}; S={f,g}
On dpile S: g. On atteint f
CFC={f,g}

Thorie des Graphes - 2015/2016


Path-based strong component algorithm
125

Ide

Thorie des Graphes - 2015/2016


Path-based strong component algorithm
126

Thorie des Graphes - 2015/2016


Path-based strong component algorithm
127

Lalgorithm applique une DFS et maintient 2 piles S et P.


La pile S contient tous les sommets qui nont pas encore
tt affect une CFC dans lordre dans lequel ils ont
t atteint par la DFS.
La pile P contient tous les sommets dont on ne sait pas
sils appartiennent une CFC diffrentes de celles
trouves
On met num(x)=0 pour tous les sommets et C=1

Thorie des Graphes - 2015/2016


Visit(v)
128

num(v) C; incrmenter C
Empiler v sur S; Empiler v sur P.
Pour chaque voisin de w de v
si num(w)=0 alors visit(w)
sinon si w na pas t plac dans une CFC alors
Tant que num(sommet(P)) > num(w)
dpiler P
Si v est le sommet de P:
Dpiler S jusqu dpiler v. Mettre tous les sommets dpils dans
une CFC
Dpiler v de P

Thorie des Graphes - 2015/2016


Path-based strong component algorithm
129

On fait une boucle sur les sommets non encore ouverts


par la DFS

Thorie des Graphes - 2015/2016


Path-based strong component algorithm
130

On commence a
S={a}; P={a}; num(a)=1
S={a,b}; P={a,b}; num(b)=2
S={a,b,c}; P={a,b,c}; num(c)=3
S={a,b,c,d}; P={a,b,c,d}; num(d)=4
On touche c. d est dpil de P
S={a,b,c,d,h}; P={a,b,c,h}; num(h)=5
On touche d. h est dpil de P
S={a,b,c,d,h,g}; P={a,b,c,g}; num(g)=6
S={a,b,c,d,h,g,f}; P={a,b,c,g,f}; num(f)=7
On touche g. f est dpil
S={a,b,c,d,h,g,f}; P={a,b,c,g}; On quitte g
g est le sommet de P. On dpile S jusqu g CFC={f,g}. P={a,b,c}
On quitte h,d,c. c est le sommet de P. On dpile S jusqu c
CFC={c,d,h}; P={a,b}; S={a,b}
on ajoute e. S={a,b,e}; P={a,b,e}. On touche a. e et b sont dpils de P
P={a}. On quitte e,b,a. a est le sommet de P
CFC={a,b,c}
Thorie des Graphes - 2015/2016
K-connexit
131

La k-connexit revient se demander combien il faut


liminer de sommet au minimum pour casser la connexit
du graphe
2 : alors graphe 2-connexe
On peut aussi se poser la question pour les artes
K-arte connexes : il faut liminer k artes

Il existe des algorithmes ddis souvent semblables aux


algorithmes prsents avant (2 connexes et algo de
Tarjan pour les composantes fortement connexes)
Thorie des Graphes - 2015/2016
Problme 2-SAT
Un graphe pour rsoudre 2-SAT, Philippe Gambette.

Thorie des Graphes - 2015/2016


Exercices : problme 2-SAT
133

Trouvez les valuations des formules 2-SAT suivantes.


(1 2 ) (1 2 ) (1 3 )
(1 2 ) (1 2 ) (1 3 ) (1 3 )
12 + 1-3 + -14 + 23 + 27 + 2-6 + 34 + 45 + 46 + 4-7 + 6-7

Thorie des Graphes - 2015/2016


Problmes de cheminement

Thorie des Graphes - 2015/2016


Problmes
135

Connexit et sommets atteignables


Plus court chemin entre deux sommets
Algorithme de Dijkstra
Algorithme de Bellman-Ford

Combinaison des deux

Dtection de cycles ngatifs


Plus courts chemins entre tous les sommets
Cas des graphes sans circuit

Thorie des Graphes - 2015/2016


Sommets atteignables
136

Pour savoir quels sont les sommets atteignables partir


dun sommet, il suffit dutiliser une procdure de parcours
du graphe (DFS ou BFS)
Trouver le chemin le plus court est un peu plus complexe
On cherche le plus court chemin entre deux sommets s et
t (source=source; t=sink)

Thorie des Graphes - 2015/2016


Plus court chemin entre deux points
137

On introduit maintenant une longueur sur les arcs


Le cot sur les arcs peut tre appel diffrement
Distance

Poids

Cot

important : la longueur dun chemin est gal la


somme des longueurs des arcs qui le compose

Thorie des Graphes - 2015/2016


Plus court chemin entre deux points
138

Pour commencer, on supposera que tous les cots sont


positifs. Ensuite on relchera cette condition.
Ce nest pas une obligation : on peut trs bien calculer le
plus court chemin avec des cots ngatifs.

Thorie des Graphes - 2015/2016


Chemin de A vers J
139

Thorie des Graphes - 2015/2016


Plus court chemin
140

On ne peut pas numrer tous les chemins


On se place dans le cas o toutes les longueurs sont
positives
Un algorithme glouton existe !

Thorie des Graphes - 2015/2016


Problmes
141

Connexit et sommets atteignables


Plus court chemin entre deux sommets
Algorithme de Dijkstra
Algorithme de Bellman-Ford

Combinaison des deux

Dtection de cycles ngatifs


Plus courts chemins entre tous les sommets
Cas des graphes sans circuit

Thorie des Graphes - 2015/2016


Algorithme de Dijkstra
142

On maintien en permanence la distance des sommets avec lorigine


On a trois ensembles de sommets
Les ouverts (ce sont les candidats pour la prochaine tape)
On peut les atteindre en passant par des sommets prcdemment choisis
Les ferms : ce sont des sommets qui ont t choisis
Les indfinis : pour linstant on ne peut pas les atteindre
A chaque tape on choisit le sommet ouvert situ la plus petite distance
On regarde les sommets qui sont relis ce sommet
Ceux qui sont indfinis deviennent ouvert et on calcule leur distance
Ceux qui sont ouverts ont leur distance modifie
On ferme le sommet

Thorie des Graphes - 2015/2016


Chemin de A vers J
143

A est ouvert
Sommets relis A : B,C et E
Ils sont ouverts avec
D(A,B) 85
D(A,C) 217
D(A,E) 173
Ouvert={B,E,C}

Thorie des Graphes - 2015/2016


Chemin de A vers J
144

On ajoute le sommet ouvert


la plus petite distance
Ici cest B. On ferme B
On sintresse aux voisins de B
Il y a F : on ouvre F
D(A,F) d(A,B) + d(B,F) 165
Ouvert = {F,E,C}

Thorie des Graphes - 2015/2016


Chemin de A vers J
145

On choisit F. On le ferme
On ouvre I
D(A,I) d(A,F) + d(F,I) 415
Ouverts = {E,C,I}

Thorie des Graphes - 2015/2016


Chemin de A vers J
146

On choisit E. On le ferme
On ouvre J
D(A,J) d(A,E) + d(E,J) 675
Ouverts = {C,I,J}

Thorie des Graphes - 2015/2016


Chemin de A vers J
147

On prend C
On ouvre G et H
Ouverts = {H,G,I,J}

Thorie des Graphes - 2015/2016


Chemin de A vers J
148

On prend H
On met jour J

Thorie des Graphes - 2015/2016


Chemin de A vers J
149

On prend G

Thorie des Graphes - 2015/2016


Chemin de A vers J
150

On prend I

Thorie des Graphes - 2015/2016


Chemin de A vers J
151

On prend J
Fin de lalgorithme

Thorie des Graphes - 2015/2016


Dijkstra
152

maj_distances(s1,s2)
si d[s2] > d[s1] + longueur(s1,s2)
alors d[s2] d[s1] + longueur(s1,s2)
Dijkstra(G,Poids,sdeb)
Ouvert {s}
tant que Ouvert et t nest pas ferm
faire i Trouve_min(Ouvert)
supprimer i de Ouvert
fermer(i)
pour chaque nud k voisin de i
faire si k nest pas ferm
alors ajouter k dans Ouvert sil ny tait pas dj
maj_distances(i,k)
fait
fait
Pour trouver le chemin il faut garder le predecesseur (celui qui a mis jour la
distance min)

Thorie des Graphes - 2015/2016


Exercice 1 : plus court chemin
153

Depuis le sommet 1
vers tous les autres

Thorie des Graphes - 2015/2016


Exercice 2 : plus court chemin
154

Depuis le sommet 1
vers tous les autres

Thorie des Graphes - 2015/2016


Algorithme de Dijkstra
155

La difficult vient de la dtermination du sommet situ


la plus petite distance
Queue de Priorit

Thorie des Graphes - 2015/2016


Queues de priorit : rappels
156

3 oprations
insert(elt,val)
decreaseKey(elt,val)
extractMin()

Monotone ou pas (llment extrait augmente ou pas)


Implmentations (complexit ?)
Liste
Liste ordonne
Tas
Buckets

Thorie des Graphes - 2015/2016


Queues de priorit : rappels
157

Bucket : on cre un tableau de C valeurs possible (cest


le max du cout dune arete de s t)
On traverse le tableau pour trouver le plus petit lment

On utilise le tableau de faon circulaire


Pourquoi est-ce que cela marche ?
Complexit O(m+nC)

Thorie des Graphes - 2015/2016


Queues de priorit
158

Il existe de nombreuses structures de donnes


K-ary heap
Fibonacci heap

K-level buckets

Hot queue

Thorie des Graphes - 2015/2016


Proprits
159

Tout sous-chemin dun plus court chemin est un plus courts


chemin
Lensemble des arcs des plus courts chemins forment un
arbre
La valeur des nuds extrait par Dijkstra est croissante

Ce dernier point nest plus vrai si on a des cots ngatifs

Thorie des Graphes - 2015/2016


Problmes
160

Connexit et sommets atteignables


Plus court chemin entre deux sommets
Algorithmede Dijkstra
Algorithme de Bellman-Ford

Combinaison des deux

Dtection de cycles ngatifs


Plus courts chemins entre tous les sommets
Cas des graphes sans circuit

Thorie des Graphes - 2015/2016


Algorithme de Bellman-Ford
161

Proprit des chemins. d : distance depuis s


condition doptimalit
(u,v) A, d(v) d(u) + c(u,v)
Signification intuitive
Soit le plus court chemin de s v peut passer par larc (u,v)
et dans ce cas on a : d(v) = d(u) + c(u,v)
Soit le plus court chemin de s v ne peut pas passer par
larc (u,v) et dans ce cas on a : d(v) < d(u) + c(u,v)

Thorie des Graphes - 2015/2016


Algorithme de Bellman-Ford
162

Principe :
On met jour les distances jusqu vrifier la proprit
prcdente pour chaque arc
Quand on trouve un arc (u,v) avec d(v) > d(u) + c(u,v), cela
signifie quon peut rduire la distance de s v en passant
par u.
On met donc d(v) jour en passant par u
d(v) d(u) + c(u,v),

On commence avec d(s)=0 et pour tous les autres sommets

Thorie des Graphes - 2015/2016


LabelCorrecting
163

Thorie des Graphes - 2015/2016


Bellman-Ford
164

Preuve
Pour tout sommet u, d(u) dcroit tout au long de lalgorithme
En labsence de cycle ngatif, la fin de lalgorithme on a
i X: -nC d(i) nC
Preuve: comme il ny a pas de cycle ngatif un chemin emprunte
au plus n-1 arcs
LabelCorrecting est en O(n2C)
Preuve : d(i) peut tre modifi au plus 2nC fois car il est
dcrmenter de 1 chaque fois. Il y a n sommets dont au plus
O(n2C) dcrmentations

Thorie des Graphes - 2015/2016


Bellman-Ford
165

Modified LabelCorrecting
Le problme central est la dtection et lordre de traitement
des arcs (u,v) tels que
d(v) > d(u) + c(u,v)
Cela signifie quon peut rduire la distance en passant par u
Plusieurs ides possibles
On met lensemble des arcs dans une liste et on les traite les uns
aprs les autres.
On gre lintroduction de nouveaux arcs : ce sont les arcs voisins
dun sommet dont la distance vient dtre modifie.
On utilise une liste de sommets. Un sommet u appartient la liste
sil existe un arc (u,v) qui viole la condition doptimalit

Thorie des Graphes - 2015/2016


Modified LabelCorrecting
166

Thorie des Graphes - 2015/2016


Modified LabelCorrecting
167

Stream a une structure de FIFO


On la dcompose en 2 ensemble S1 et S2
addNode ajoute toujours en fin de S2
selectNode choisie le premier lment de S1 si S1 nest pas
vide; sinon S2 est copie dans S1 et puis vide. Dans ce cas
on parle de changement de passe.

La passe i traite les nuds qui ont t introduit en i-1

Thorie des Graphes - 2015/2016


Modified LabelCorrecting
168

Thorie des Graphes - 2015/2016


Bellman-Ford
169

Thorme
Lalgorithme de Bellman-Ford est tel que
Chaque passe est en O(m)
Le nombre de passes est born par la hauteur de larbre des plus
courts chemins
Lalgorithme est en O(nm)

Thorie des Graphes - 2015/2016


Modified LabelCorrecting
170

Autre possibilit pour Stream:


LIFO : lalgorithme nest plus polynomial ! Mais il fonctionne
parfois trs bien pratique

Remarque :
Aucune supposition na t faite sur les cots !

Thorie des Graphes - 2015/2016


Problmes
171

Connexit et sommets atteignables


Plus court chemin entre deux sommets
Algorithme de Dijkstra
Algorithme de Bellman-Ford

Combinaison des deux

Dtection de cycles ngatifs


Plus courts chemins entre tous les sommets
Cas des graphes sans circuit

Thorie des Graphes - 2015/2016


Bellman-Ford + Dijkstra ?
172

Si on a uniquement des cots non ngatifs et si on


prends lalgorithme Modified LabelCorrecting et que
Stream est implment comme une queue de priorit
avec la distance s comme valeur, alors
On implmente lalgorithme de Dijkstra !
Un nud ne peut-tre introduit dans Stream quune seule fois

Thorie des Graphes - 2015/2016


Bellman-Ford + Dijkstra ?
173

Que se passe til si Stream est une queue de priorit et


si les cots ne sont pas tous ngatifs ?
Bellman-Ford fonctionne toujours (pas de supposition ni sur
Stream, ni sur le cot des arcs)
Algorithme de Dinitz et Itzhak (2010).

Complexit en O(nm)

Thorie des Graphes - 2015/2016


Plus court chemin de s t
174

Si on cherche le plus court chemin de s t, les


algorithmes prcdents recherchent un plus court chemin
de s tous les autres nuds jusqu rencontr t
Est-ce que lon peut acclrer cela et viter, dans le cas
euclidien, de faire des cercles qui sagrandissent ?
Sion cherche un plus court chemin entre Lille et Nice, les
algos considrent Amsterdam !

Thorie des Graphes - 2015/2016


Plus court chemin de s t
175

Pour viter cela, on peut utiliser un minorant de la distance


minimum entre un nud i et t
Ds que lon aura trouver un majorant de la distance de s t
alors on pourra utiliser ces minorants
d(s,t) M
Si d(s,i) + md(i,t) > M alors on arrte dexplorer depuis i
Par exemple:
on sait que Amsterdam est au moins 1000km de Nice.
on sait que Lille est au plus 1200 km de Nice
on trouve que d(Lille,Amsterdam) = 280 km
on en dduit que
d(Lille,Amsterdam) + d(Amsterdam,Nice) > d(Lille,Nice).
On arrte lexporation depuis amsterdam

Thorie des Graphes - 2015/2016


Problmes
176

Connexit et sommets atteignables


Plus court chemin entre deux sommets
Algorithme de Dijkstra
Algorithme de Bellman-Ford

Combinaison des deux

Dtection de cycles ngatifs


Plus courts chemins entre tous les sommets
Cas des graphes sans circuit

Thorie des Graphes - 2015/2016


Dtection de cycles ngatifs
177

C = plus grand cout dun arc.


Mthode 1 : Si une distance atteint une valeur -nC
alors un cycle ngatif est prsent
Mthode 2 :
On utilise le Modified LabelCorrecting algorithm avec une
FIFO et la dcomposition par passe.
On compte pour chaque nud le nombre de fois o il est
introduit dans la queue.
Si un nud est introduit plus de (n-1) fois alors il y a un
circuit ngatif

Thorie des Graphes - 2015/2016


Dtection de cycles ngatifs
178

Mthode 3 :
Quand on modifie la distance dun nud v : d(v) d(u) +
c(u,v). On dit que u est le prdcesseur de v, on le note p(v)
Le graphe des prdcesseurs est le sous graphe engendr
par les arcs (p(v),v)
SI le graphe des prdcesseurs a un cycle alors G contient
un cycle ngatif.

Thorie des Graphes - 2015/2016


Dtection de cycles ngatifs
179

Thorie des Graphes - 2015/2016


Dtection de cycles ngatifs
180

Mthode 4 : on applique la mthode 3 de temps en


temps

Thorie des Graphes - 2015/2016


Dtection de cycles ngatifs
181

Mthode 5 : on applique la mthode 3 mais au lieu de


considrer la graphe des prdcesseurs, on considre le
graphe des arcs admissibles :
Arc admissible : arc (u,v) tel que d(v) d(u) + c(u,v)

Thorie des Graphes - 2015/2016


Dtection de cycles ngatifs
182

Mthode 6 : Subtree traversal


Quand on applique loperation de mise jour de la distance
un arc (u,v) on cre un cycle dans le graphe des parents ssi
u est un anctre de v
On vrifie cela lors de la mise jour de la distance

Mthode 7 : Tarjan subtree disassembly (dpasse le


cadre de ce cours)

Thorie des Graphes - 2015/2016


Problmes
183

Connexit et sommets atteignables


Plus court chemin entre deux sommets
Algorithme de Dijkstra
Algorithme de Bellman-Ford

Combinaison des deux

Dtection de cycles ngatifs


Plus courts chemins entre tous les sommets
Cas des graphes sans circuit

Thorie des Graphes - 2015/2016


Plus courts chemins entre tous les sommets
184

i,j: on veut connaitre la distance du plus court chemin


entre i et j
2 mthodes principales
Repeated shortest path problem
Algorithme de Floyd Warshall

Thorie des Graphes - 2015/2016


Repeated shortest path
185

Id simple : on rpte lalgo de plus court chemin n fois


A partir dun nud i : on calcule tous les plus courts
chemins de i vers t laide dun algorithme (Dijkstra ou
Belmann Ford)
Si on rpte n fois on a rpondu au problme

Thorie des Graphes - 2015/2016


Elimination des couts ngatifs
186

Introduction dune technique importante


Les cots rduits
Attention : beaucoup de livres introduisent cette notion
sans donner son intrt et en faisant comme si elle tait
obligatoire. Ce nest pas vrai. Elle est utile mais cest
tout.

Thorie des Graphes - 2015/2016


Cots rduits
187

Supposons que lon ait calcul les distances d entre s et


tous les sommets.
Pour chaque arc (u,v) on peut calculer la valeur
cd(u,v)= c(u,v) + d(u) d(v)
Cest le cot rduit de larc (u,v)

Cela reprsente le surcot local passer par cet arc

On a toujours cd(u,v) 0
La condition doptimalit d(v) d(u) + c(u,v) implique
0 c(u,v) + d(u) d(v), do cd(u,v) 0

Thorie des Graphes - 2015/2016


Cots rduits
188

On peut remplacer les cots initiaux par les cots rduits


En procdant ainsi il ne reste que des cots positifs
On peut ainsi appliquer n fois lalgorithme de Dijkstra
On obtient les valeurs dorigine des distance en
appliquant la transformation suivante pour chaque paire
de noeud u et v : on ajoute d(v)-d(u) la distance
calcule dans le graphe contenant les cots rduits

Thorie des Graphes - 2015/2016


Algorithme de Floyd Warshall
189

Algorithme de programmation dynamique en 3 .


Bas sur le thorme suivant :
Les distances sont optimales ssi
u,v,w d[u,v] d[u,w] + d[w,v]
Appelons dk[u,v] la longueur du plus court chemin
utilisant au maximum les nuds 1 k-1. On a
dk+1[u,v] = min {dk[u,v], dk[u,k] + dk[k,v]}

Thorie des Graphes - 2015/2016


Algorithme de Floyd Warshall
190

u,v d[u,v] ; pred[u,v] null


u d[u,u] 0
(u,v) A d[u,v] c(u,v); pred[u,v] v
Pour k de 1 n
Pour u de 1 n
Pour v de 1 n
Si d[u,v] > d[u,k]+d[k,v]
Alors d[u,v] d[u,k]+d[k,v]
pred[u,v] k
Fin si
Fin pour
Fin pour
Fin pour
Thorie des Graphes - 2015/2016
Exercice : Floyd Warshall
191

Thorie des Graphes - 2015/2016


Problmes
192

Connexit et sommets atteignables


Plus court chemin entre deux sommets
Algorithme de Dijkstra
Algorithme de Bellman-Ford

Combinaison des deux

Dtection de cycles ngatifs


Plus courts chemins entre tous les sommets
Cas des graphes sans circuit

Thorie des Graphes - 2015/2016


Graphes sans circuits

Thorie des Graphes - 2015/2016


Graphes sans circuits
194

Attention ce ne sont pas ncessairement des arbres.


On parle ici de circuit et non pas de cycle.
On est donc dans le cas ORIENTE

Les problmes du plus court chemin et de plus long


chemin deviennent facile
On calcule dabord lordre topologique du graphe

Thorie des Graphes - 2015/2016


Fonction rang dun graphe
195

Ordre topologique (un sommet est toujours visit avant


ses successeurs)
Associe chaque nud i un nombre positif rang(i) tel
que
r(1)=0
R(i)= nombre darcs dans un chemin de cardinalit maximum
entre 1 et i (taille (nombre de sommets) du plus grand
chemin de prdcesseurs depuis 1)
Se calcule facilement : on limine les sommets sans
prdcesseur chaque tape (on pluche le graphe)

Thorie des Graphes - 2015/2016


Rang dun graphe
196

Thorie des Graphes - 2015/2016


Rang dun graphe
197

TraitementNiveau(Niveau k,R) :
Pour chaque lment i de R faire
S vide
Rang(i) k
Pour chaque voisin j de i faire
Dcrmenter degr(j)
Si degr(j) = 0 alors ajouter j dans S
RS

Algorithme :
On dtermine les racines. On les place dans R
Niveau 0
Rpter tant que R nest pas vide
TraitementNiveau(Niveau,R)
Incrmenter Niveau

Thorie des Graphes - 2015/2016


Chemins et graphes sans circuit
198

On prend les sommets selon lordre topologique


Plus court chemin jusquau nud v
Minimum des plus courts chemins partir de ses arcs entrants
Plus long chemin jusquau nud v
Maximum des plus longs chemins partir de ses arcs
entrants

Thorie des Graphes - 2015/2016


Problme dordonnancement
199

Un problme dordonnancement est compos de faon


gnrale dun ensemble de tches soumises certaines
contraintes, et dont lexcution ncessite des ressources.
Rsoudre un problme dordonnancement consiste
organiser ces tches, cest--dire dterminer leurs
dates de dmarrage et dachvement, et leur
attribuer des ressources, de telle sorte que les
contraintes soient respectes.
Les problmes dordonnancement sont trs varis.

Thorie des Graphes - 2015/2016


Paramtres en ordonnancement
200

tches
morcelables ou non
indpendantes ou non
dures fixes ou non
ressources
renouvelables ou consommables
contraintes portant sur les tches
contraintes temporelles
fentres de temps
aux critres doptimalit
lis au temps (dlai total, dlai moyen, retards)
aux ressources (quantit utilise, taux doccupation)
ou dautres cots (production, lancement, stockage)
Thorie des Graphes - 2015/2016
Mthode PERT/CPM
201

PERT (Programme Evaluation Review Technique)


introduit par l'arme amricaine (navy) en 1958 pour
contrler les cots et l'ordonnancement de la construction
des sous-marins Polaris.
CPM (Critical Path Method) introduit par l'industrie
amricaine en in 1958 (DuPont Corporation and
Remington-Rand) pour contrler les cots et
l'ordonnancement de production.
PERT/CPM ignore la plupart des dpendances.

Thorie des Graphes - 2015/2016


Intrts de PERT/CPM
202

Quel sera la dure totale du projet ?


Quelles sont les risques ?
Quelles sont les activits critiques qui perturberont
l'ensemble du projet si elles ne sont pas acheves dans les
dlais ?
Quel est le statut du projet ? En avance ? Dans les temps ? En
retard ?
Anticiper les consquences des retards et dpassements.
Si la fin du projet doit tre avance, quelle est la meilleure
manire de procder ?

Thorie des Graphes - 2015/2016


Principe de PERT/CPM
203

On suppose que le projet se dcompose en tches


Chaque tches i est caractrise par
Sa dure d(i)
Ses contraintes dantriorit avec les autres tches.

PERT/CPM ignore la plupart des dpendances :


partage de ressources pour la ralisation des taches.

Thorie des Graphes - 2015/2016


Graphe potentiels-tches
204

A chaque tche i on associe un sommet du graphe


Si la tche i doit prcder la tche j alors on dfinit un arc
(i,j) de longueur d(i) (dure de i)

On ajoute deux sommets fictifs


qui correspond la tche de dbut des travaux (dure 0) qui
est antrieure toutes les autres tches
qui correspond la tche de fin des travaux (dure 0) qui est
postrieure toutes les autres tches

Pas de circuit dans le graphe : sinon problme i doit suivre j,


k doit suivre i et j doit suivre k : blocage
Thorie des Graphes - 2015/2016
Graphe potentiels-tches
205

Code de la tche Dure (semaine) Tches antrieures


A Maonnerie 7 -
B Charpente 3 A
C Toiture 1 B
D Installations sanitaires 8 A
et lec.
E Faades 2 D,C
F Fentres 1 D,C
G Jardin 1 D,C
H Plafonnage 2 F
J Peinture 2 H
K Emmnagement 1 E,G,J

Thorie des Graphes - 2015/2016


Graphe potentiels-tches
206

Thorie des Graphes - 2015/2016


Ordonnancement
207

But : trouver un ordonnancement qui minimise le dlai


total du travail, donc la date de fin des travaux
Pour quune tche puisse commencer , il est ncessaire
que toutes les tches qui la prcde (relie la tche
dbut) soient ralises

Thorie des Graphes - 2015/2016


Ordonnancement
208

Date de dbut au plus tt de la tche i


t(i)
= max (t(k) + d(k), avec k prdcesseur de i)
Plus long chemin de i

Dure minimale du projet (t()) = plus long chemin de


Thorie des Graphes - 2015/2016


Ordonnancement
209

On fixe t() la dure du projet


Date de dbut au plus tard de la tche i
T(i) = min (T(k) - d(i), avec k successeur de i)
T(i) = t() - plus long chemin de i

Marge de la tche i
Diffrence entre dbut au plus tard et dbut au plus tt
T(i) t(i)
Tche critique : tche dont la marge est nulle

Thorie des Graphes - 2015/2016


Chemin critique
210

Tche critique :
tche dont la marge est nulle
tche sur un plus long chemin de

Il existe au moins un chemin critique.


Attention, il peut exister plusieurs chemins critiques !
Les activits de ce chemin dterminent elles seules la date
de fin du projet.
Il est ncessaire de rduire la longueur de tous les chemins
critiques pour avancer la fin du projet.
Les activits non critiques n'influencent pas la date de fin.

Thorie des Graphes - 2015/2016


Tche fondamentale
211

une tape cl durant l'accomplissement du projet.


On doit y porter :
une attention approfondie et
et contrler rigoureusement sa ralisation.

Par exemple, une tche appartenant tous les chemins


critiques.

Thorie des Graphes - 2015/2016


Intrt pratique de PERT/CPM
212

Ensuite, l'affectation des personnes et ressources peut


tre amliore en se concentrant sur ces activits
critiques.
Rciproquement, on peut alors rordonnancer les
activits non-critiques et librer les ressources qui leurs
sont alloues sans perturber le reste du projet.
Gestion basique des incertitudes.

Thorie des Graphes - 2015/2016


Arbre couvrant de poids minimum

Thorie des Graphes - 2015/2016


Spanning Tree
214

Thorie des Graphes - 2015/2016


Minimum Spanning Tree
215

Given a graph G, find a spanning tree where total cost


is minimum.

Thorie des Graphes - 2015/2016


Algorithme de Prim
216

On utilise un ensemble S de nuds. On place un seul


nud dedans (celui que lon veut)
On ajoute petit petit dans S tous les nuds du graphe
A chaque tape on ajoute dans S un nud du graphe
qui nest pas dans S et qui est reli un nud de S et
tel que le cot minimum du lien qui le relie S est le plus
petit possible. On place ce lien minimum dans larbre

Thorie des Graphes - 2015/2016


Prims Algorithm
217

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Prims Algorithm
218

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Prims Algorithm
219

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Prims Algorithm
220

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Prims Algorithm
221

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Prims Algorithm
222

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Prims Algorithm
223

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Prims Algorithm
224

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Prims Algorithm
225

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Prims Algorithm
226

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Prims Algorithm
227

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Prims Algorithm
228

2 1

1 3
3 2
2

1 4
1

Thorie des Graphes - 2015/2016


3
Prims Greedy Algorithm
229

color all vertices yellow


color the root red
while there are yellow vertices
pick an edge (u,v) such that
u is red, v is yellow & cost(u,v) is min
color v red

Thorie des Graphes - 2015/2016


Preuve
230

Considrons
SG : la solution calcule par lalgorithme glouton
Sopt : la solution optimale
Si val(SG)=val(Sopt) alors pas de problmes
Si val(SG)val(Sopt) alors les deux arbres diffrent. Prenons le premier arc dans
lordre du Greedy qui diffre entre SG et Sopt. Appelons le e. Quand cet arc a
t choisi, ctait le plus petit de la coupe (V,V). Cet arc relie deux sommets x et
y. Dans Sopt x et y sont relis par un chemin. Sur ce chemin il y a un arc f qui relie
un sommet de V a un sommet de V. Comme lalgo Greedy a prfr e a f : on a
poids(e) poids(f).
Prenons la solution Sopt et remplacons f par e, on obtient Spot. Si Sopt est
optimal alors cela ne peut pas amlior val(Sopt). Donc on a valS(opt)=val(Sopt)
et donc poids(e) = poids(f). On peut reprendre le point prcdant avec Sopt au
lieu de Sopt.
A la fin on va donc montrer quon ne peut jamais amlior Sopt et que larbre
construit par le Greedy a la mme valeur

Thorie des Graphes - 2015/2016


Why Greedy Works?
231

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Why Greedy Works?
232

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Why Greedy Works?
233

1 3 4 3
5

Thorie des Graphes - 2015/2016


Prims Algorithm
234

foreach vertex v
v.key =
root.key = 0
pq = new PriorityQueue(V) // add each vertex in the priority queue
while pq is not empty
v = pq.deleteMin()
foreach u in adj(v)
if u is in pq and cost(v,u) < u.key
pq.decreaseKey(u, cost(v,u))

Complexity: O((V+E)log V)
Thorie des Graphes - 2015/2016
Exercice : Algorithme de Prim
235

Thorie des Graphes - 2015/2016


Algorithme de Kruskal
236

On raisonne avec les artes.


On place chaque nud dans un ensemble qui lui est
propre
On parcourt les artes dans lordre croissant des cots.
Si une arte relie deux ensembles disjoints alors on lajoute
larbre recouvrant et on fusionne les deux ensembles (ils ne
sont donc plus disjoints)
Si ce nest pas le cas, on passe a larte suivante

Thorie des Graphes - 2015/2016


Kruskals Algorithm
237

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Kruskals Algorithm
238

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Kruskals Algorithm
239

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Kruskals Algorithm
240

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Kruskals Algorithm
241

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Kruskals Algorithm
242

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Kruskals Algorithm
243

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Kruskals Algorithm
244

2 1 4

1 3
3 4 2
4 2 3

1 3 4 3 4
5
1

4 Thorie des Graphes - 2015/2016


3
Kruskals Algorithm
245

2 1

3 1 2
2

1 4
1

Thorie des Graphes - 2015/2016


3
Kruskals Algorithm
246

while there are unprocessed edges left


pick an edge e with minimum cost
if adding e to MST does not form a cycle
add e to MST
else
throw e away

Thorie des Graphes - 2015/2016


Preuve
247

On construit bien un arbre : clairement il ne peut pas y avoir


de cycle et sil y avait deux composantes connexes alors on
aurait pris une arte pour les relier
Minimalit : par induction. Montrons qua tout tape il existe
un arbre recouvrant minimum qui contient les aretes choisies.
F ens des artes choisies; T arbre recouvrant min contenant
F; e prochaine arte choisie. SI e est dans T alors cest ok.
Sinon T+e a un cycle. Soit f larete de ce cycle qui est dans T
et pas dans F. T f+e est un arbre recouvrant, son poids est
>= T donc poids f <= poids de e: poids(f) ne peut pas etre
< poids(e) sinon on laurait choisit. Donc egalit entre les
poids et donc F+e appartient a un arbre recouvrant de
poids min.
Thorie des Graphes - 2015/2016
Exercice : Algorithme de Kruskal
248

Thorie des Graphes - 2015/2016


Data Structures
249

How to pick edge with minimum cost?


Sort the array once for all

How to check if adding an edge can form a cycle?


Use a Disjoint Set

Thorie des Graphes - 2015/2016


Union find data structure
250

Union find = disjoint set data structure


Problme rsoudre : on va partitionner des lments
en les regroupant petit petit. On voudrait savoir
A quel partie un lment appartient ?
Est-ce que deux lments appartiennent la mme partie ?

La structure de donnes Union-Find maintient une


partition dun ensemble et dispose de deux fonctions
Find: trouver (retourne la partie dun lment)
Union : regroupe deux parties en une

Thorie des Graphes - 2015/2016


Union find
251

On dispose en outre dune fonction makeSet qui cre un


partie singleton
Chaque partie (ou ensemble) est identifie par un
lment particulier : son reprsentant
Find(x) : retourne le reprsentant de la partie auquelle
x appartient
Union(x,y) : runit les deux parties (celle de x et de y)
en une seule. Une des deux variable devient le
reprsentant
MakeSet(x) : cre une partie dont x est le reprsentant
Thorie des Graphes - 2015/2016
Union find : implmentation
252

Listes chanes : llment en tte est le reprsentant


MakeSet cre une liste (en O(1))
Union concatne les deux listes (en O(1))

Find : il faut accder au premier : requiert O(n)

On amliore le Find : chaque lment pointe vers la tte


de liste
Cela dgrade lUnion qui devient en O(n)

Thorie des Graphes - 2015/2016


Union find : implmentation
253

Une bonne solution consiste utiliser des arbres,


reprsents laide de la primitive parent
Le reprsentant de chaque partie (ensemble) est la
racine de larbre

Thorie des Graphes - 2015/2016


Union find : implmentation
254

MakeSet(x)
parent[x] null
Find(x)
si parent[x] = null return x
sinon return Find(parent[x])
Union(x, y)
xRoot Find(x)
yRoot Find(y)
parent[xRoot] yRoot

Thorie des Graphes - 2015/2016


Union find : implmentation
255

Dans cette premire version, la complexit nest pas


meilleure quavec des listes chanes
On peut faire deux amliorations importantes
Union par rang : On attache larbre le plus petit la racine
de larbre le plus grand (taille = niveau)
Compression de chemins : on met jour Find quand on
lutilise
Find(x)
si parent[x] x alors parent[x] Find(parent[x])
return parent[x]
Thorie des Graphes - 2015/2016
Union find
256

Union(x,y)
Lier(Find(x),Find(y))
Lier(x,y)
si rang[x] > rang[y] alors parent[y] x
sinon parent[x] y
si rang[x]=rang[y]
rang[y] rang[y] +1

Thorie des Graphes - 2015/2016


Union find : complexit
257

On fait m oprations, avec n lments


Union pondre ou par rang est en O(m + n log(n))
Fonction dAckermann :
A(m,n)=n+1 si m=0
A(m,n)=A(m-1,1) si m>0 et n=0

A(m,n)=A(m-1,A(m,n-1)) si m >0 et n >0

Thorie des Graphes - 2015/2016


Fonction dAckermann
258

Thorie des Graphes - 2015/2016


Union find : complexit
259

On peut montrer que lon a une borne sup en


O(mlog*(n)) : voir Cormen-Leiserson-Rivest
Tarjan a montr que la complexit est en O(m(m,n)), o
(m,n) est linverse de la fonction dAckermann, qui est
presque toujours infrieur 5 en pratique (pour 265535)

Thorie des Graphes - 2015/2016


Algorithme incrmental de connexit
260

On peut utiliser la structure de donnes de lunion-find


pour calculer la connexit dun graphe.
Algorithme peut efficace, mais fonctionne si on connait le
graphe petit petit
Principes :
On fait makeSet(x) quand un nouveau sommet apparait
On fait Union(x,y) quand une arte {x,y} apparait

Thorie des Graphes - 2015/2016


Couplages

Thorie des Graphes - 2015/2016


Exercices
262

Donner un algorithme qui teste si un graphe est biparti


Prouver cet algorithme

Aide : on pourra faire une DFS ou une BFS

Thorie des Graphes - 2015/2016


Couplage
263

Un couplage dans un graphe est un ensemble dartes


qui nont pas de sommet en commun.
Cest typiquement la solution aux problmes
dappariements (regroupement par 2)
Un couplage maximum est un couplage contenant le
plus grand nombre possible d'artes.
Un couplage parfait ou 1-factor est un couplage M du
graphe tel que tout sommet du graphe est incident
exactement une arte de M.
Thorie des Graphes - 2015/2016
Couplage
264

Soit M un couplage (matching en anglais),


Un sommet qui est une extrmit dune arte de M est
dit coupl ou match
Un sommet qui nest pas une extrmit de M est dit libre
Une chane alterne est une chane dont les artes sont
alternativement des artes du couplage et des artes
nappartenant pas au couplage
Une chane augmentante est une chane alterne dont
les deux extrmits sont libres
Thorie des Graphes - 2015/2016
Chane augmentante
265

Le terme vient du fait que si on trouve une chane


augmentante on peut augmenter la cardinalit du
couplage en inversant les artes de la chane : les libres
deviennent matches et les matches deviennent libres.

Thorie des Graphes - 2015/2016


Couplage
266

1
x1
2
x2
3
x3
4
x4
5
x5
6
x6
7
Thorie des Graphes - 2015/2016
Couplage
267

1
x1
2
x2
3
x3
4
x4
5
x5
6
x6
7
Thorie des Graphes - 2015/2016
Couplage
268

1
x1
2
x2
3
x3
4
x4
5
x5
6
x6
7
Thorie des Graphes - 2015/2016
Couplage
269

1
x1
2
x2
3
x3
4
x4
5
x5
6
x6
7
Thorie des Graphes - 2015/2016
Couplage : thorme de Berge
270

Thorme : un couplage est maximum si et seulement si il


nadmet pas de chane augmentante

Thorie des Graphes - 2015/2016


Couplage : algorithmes
271

Le thorme nous fournit le principe dun algorithme.


On part dun couplage vide
On cherche une chaine augmentante
Simpleavec un graphe biparti
Complexe avec un graphe non biparti

Thorie des Graphes - 2015/2016


Couplage : graphe biparti
272

Chercher une chane alterne dans un graphe biparti est


simple, car lalternance des artes correspond
lalternance des ensembles.
Soit G=(X Y , E)
On oriente les artes matches de Y vers X, les autres de X
vers Y.
Une chane augmentante devient un chemin dun sommet
libre de X vers un sommet libre de Y

Thorie des Graphes - 2015/2016


Couplage
273

1
x1
2
x2
3
x3
4
x4
5
x5
6
x6
7
Thorie des Graphes - 2015/2016
Couplage : graphe biparti
274

Une DFS ou une BFS permet de trouver les chanes


augmentante
La complexit est en O(nm)
Si on travaille par niveau :
On sature tous les sommets atteignable au niveau i, avant de
passer au niveau i+1
On peut montrer que la complexit est en O(n . m)

Thorie des Graphes - 2015/2016


Couplage : graphe non biparti
275

j i

d
e h

a b c
g f

On ne peut plus orient les artes comme avec les bipartis !

Thorie des Graphes - 2015/2016


Couplage : graphe non biparti
276

j i

d
e h

a b c
g f

e est marqu pair

Thorie des Graphes - 2015/2016


Couplage : graphe non biparti
277

j i

d
e h

a b c
g f

e est marqu impair

Thorie des Graphes - 2015/2016


Couplage : graphe non biparti
278

Ide: Edmonds algorithm


Shrinking-blossom algorithm
Amlioration par Tarjan et dautres
Complexit O(nm(n,m)) difficile implmenter
O(nm) trs difficile
O(n1/2m) : 42 pages de dmonstration non intuitive

Thorie des Graphes - 2015/2016


Flots

Thorie des Graphes - 2015/2016


Flot : affectation
280

Peter
M (1,2)
Paul

Mary
D (1,2)

John N (1,1)

Bob B (0,2)
Mike
O (0,2)
Julia

Thorie des Graphes - 2015/2016


Affectation
281

Default Orientation Peter


M (1,2)
Paul

Mary
D (1,2)

t John N (1,1) s

Bob B (0,2)
Mike
O (0,2)
Julia
(7,7)

Thorie des Graphes - 2015/2016


Flot compatible
282

Black Orientation Peter


M (1,2)
Paul

Mary D (1,2)

t John N (1,1) s

Bob
B (0,2)
Mike
O (0,2)
Julia
(7,7)

Thorie des Graphes - 2015/2016


Augmentation successive
283

Successive augmentation are computed in a particular


graph:
The residual graph
The residual graph has no lower bounds
In our case this algorithm is equivalent to the best ones.

Thorie des Graphes - 2015/2016


Residual Graph
284

Black Orientation Peter


M (1,2)
Green Orientation Paul

Mary D (1,2) 2
1

t John N (1,1) 1 s
2
Bob
B (0,2)
2
Mike
O (0,2)
Julia

6 (7,7)

If f(i,j) < u(i,j) then


Thorie des(i,j) and -r(i,j)=
Graphes u(i,j) f(i,j)
2015/2016
If f(i,j) > l(i,j) then (j,i) and r(j,i)= f(i,j) l(i,j)
Residual Graph
285

Black Orientation Peter


M (1,2)
Green Orientation Paul

Mary D (1,2) 2
1

t John N (1,1) 1 s
2
Bob
B (0,2)
2
Mike
O (0,2)
Julia

6 (7,7)

Thorie des Graphes - 2015/2016


Residual Graph
286

Black Orientation Peter


M (1,2)
Green Orientation Paul

Mary D (1,2) 2
1

t John N (1,1) 1 s

Bob
B (0,2)
2
Mike
O (0,2)
Julia

5 (7,7)

If f(i,j) < u(i,j) then


Thorie des(i,j) and -r(i,j)=
Graphes u(i,j) f(i,j)
2015/2016
If f(i,j) > l(i,j) then (j,i) and r(j,i)= f(i,j) l(i,j)
Une Solution
287

Default Orientation Peter


M (1,2)
Paul

Mary D (1,2) 2
2

t John N (1,1) s

2
Bob
B (0,2)
Mike
O (0,2)
Julia

7 (7,7)

7 flow value Sum


Thorie = 7
des Graphes - 2015/2016
Properties
288

The flow value xij of (i,j) can be increased iff there is a


path from j to i in R - {(j,i)}

j i

The flow value xij of (i,j) can be decreased iff there is a


path from i to j in R - {(i,j)}
j i

Thorie des Graphes - 2015/2016


Minimum cost Flows
289

Let G be a graph in which every arc (i,j) is associated


with 3 integers:
l(i,j)the lower bound capacity of the arc
u(i,j) the upper bound capacity of the arc

c(i,j) the cost of carrying one unit of flow

The cost of a flow f is cost(f)= f(i,j) c(i,j)


The minimum cost flow problem:
Ifthere exists a feasible flow, find a feasible flow f such that
cost(f) is minimum.

Thorie des Graphes - 2015/2016


Affectation avec cots
290

Peter 1
4
M (1,2)
Paul 1
4
3
Mary 1
D (1,2)
3
John 1 N (1,1)
1
Bob B (0,2)
1
Mike
1 1 O (0,2)
Julia

Sum < 12
Thorie des Graphes - 2015/2016
Minimum Cost flow
291

Similar to feasible flow except that:


shortest paths are considered.
length of an arc = reduced cost of the arc
Reduced costs are used to work with nonnegative value
(useful for shortest paths algorithms), but the principles
remains the same with residual costs.
We will consider here only the residual costs

Thorie des Graphes - 2015/2016


Minimum Cost Flow
292

Default Orientation Peter 1


4
M (1,2)
Paul 1
4
Mary
3 D (1,2)
1
3
t John
1
N (1,1) s
1
Bob B (0,2)
1
Mike
1 1 O (0,2)
Julia
(7,7)

Thorie des Graphes - 2015/2016


Une Solution
293

Default Orientation Peter 1


4
M (1,2)
Paul 1
4
3
Mary 1
D (1,2) 2
2
3
t John 1 N (1,1) s
1
2
Bob B (0,2)
1
Mike
1 1 O (0,2)
Julia

7 (7,7)

7 flow value Sum


Thorie = 7
des Graphes - 2015/2016
Residual Graph
294

Black Orientation Peter 1


4
M (1,2)
Green Orientation Paul 1
4
Mary
3 D (1,2)
1
3
t John
1
N (1,1) s
1
2
Bob B (0,2)
1
Mike
1 1 O (0,2)
Julia

Thorie des Graphes - 2015/2016


Residual Costs
295

Black Orientation Peter -1


4
M (1,2)
Green Orientation Paul -1
4
Mary
3 D (1,2)
-1
3
t John
-1
N (1,1) s
-1
2
Bob B (0,2)
-1
Mike
-1 1 O (0,2)
Julia

-1 residual cost = - cost if opposite arc


Thorie des Graphes - 2015/2016
Residual Costs
296

Black Orientation Peter -1


4
M (1,2)
Green Orientation Paul -1
4
Mary
3 D (1,2)
-1
3
t John
-1
N (1,1) s
-1
2
Bob B (0,2)
-1
Mike
-1 1 O (0,2)
Julia

-1 residual cost = - cost if opposite arc


1 residual cost = cost if arcThorie des Graphes - 2015/2016
Shortest path
297

d(i,j) = length of the shortest path which does not use (i,j)
in the residual graph. The length is the sum of the
residual costs of the arc contained in the path.

Thorie des Graphes - 2015/2016


Residual Costs
298

Black Orientation Peter -1


4
M (1,2)
Green Orientation Paul -1
4
Mary
3 D (1,2)
-1
3
t John
-1
N (1,1) s
-1
2
Bob B (0,2)
-1
Mike
-1 1 O (0,2)
Julia

d(M,D)=3 + (-1) = 2
Thorie des Graphes - 2015/2016
Minimum cost flow
299

If the feasible flow is computed by augmenting the flow


along shortest paths then the solution is optimal.
Complexity O(n S(n,m,)) where is the maximum cost
value.

Thorie des Graphes - 2015/2016


Properties
300

The flow value xij of (i,j) can be increased iff there is a


path from j to i in R - {(j,i)}

j i

The flow value xij of (i,j) can be decreased iff there is a


path from i to j in R - {(i,j)}
j i

Thorie des Graphes - 2015/2016


Terminaison de lalgorithme
301

On peut viter la dernire augmentation, en faisant


attention ce que le puits soit toujours atteignable dans
le graphe rsiduel.
On utilise un compteur (num) qui compte le nb de nuds
que lon peut atteindre une distance k donne depuis
s. Si on change la distance dun nud de k1 k2 alors
on dcremente num(k1) et on incrmente num(k2). Si
num(k1) devient vide alors on peut arrter lalgorithme.
Voir Ahuja/Magnanti et Orlin p 219

Thorie des Graphes - 2015/2016


Flots : push-relabel algorithm
302

Thorie des Graphes - 2015/2016


303

Thorie des Graphes - 2015/2016


Problmes
304

Trier les sommets dun graphe en fonction de leur degr


Algorithme ?
Cot ?

Thorie des Graphes - 2015/2016


305

Graphes planaires
Plus courts chemins (Dijkstra, Bellman-Ford, les deux).
Recherche de distances entre deux points
Cycles ngatifs
Couplage
Flots
Arbres recouvrants
Ordonnancement, rang et tri topologique
Graphes trianguls
Graphes parfaits

Thorie des Graphes - 2015/2016

Vous aimerez peut-être aussi