Sie sind auf Seite 1von 98

Universit Mohamed Bachir El Ibrahimi

Bordj Bou Arreridj


2eme anne Informatique

Thorie des graphes

Mehemmel Abbas
2014 / 2015 1

Chap 0
Un peu dhistoire

Tir du cours de Catherine Philippe & Christian Vassard


IREM de Rouen
2
1736.
problme des ponts de Knigsberg, rsolu par Euler
en 1736 dans Solutio problematis ad geometriam situs
pertinentis

Leonhard Euler
(1707-1783)

1852

quatre couleurs suffisent-elles colorier une carte de


gographie de faon ce que deux pays limitrophes ne
soient pas coloris de la mme couleur ?

Augustus de Morgan
(1806-1871)
En 1857
Hamilton invente un jeu, The icosian
game, quil commercialise en 1859.
Le jeu est constitu dun dodcadre
dont les 20 sommets portent le nom
dune grande ville dans le monde.
Le but du jeu consistait trouver un
chemin sur les artes du dodcadre Hamilton (1805-1865)
permettant de visiter chaque ville
une fois et une fois seulement, en
revenant la ville de dpart.
1878
le mot graphe est introduit pour
la premire fois par langlais J. J.
Sylvester (1814-1897)

XXe sicle

La thorie des graphes devient une branche des


mathmatiques avec les travaux de Knig,
Kuratowski et plus rcemment de Berge, Erds et
Harary.
Quelques Domaines dapplications

Le plan dune ville, avec ses sens interdits


Un autre exemple

Une carte routire


Les graphes sont trs utiliss dans l'informatique:
les rseaux, l'ordonnancement de processus, ... .
modliser des problmes comme.
un rseau de chemin de fer ou un rseau routier.
En utilise les graphes aussi en:
Chimie
Sociologie
Bio-informatique
Recherche oprationnelle
Rseaux de communication
Fonctionnement de systmes 13

Autres domaines dapplication


Gographie (cartographie), architecture (plans), linguistique
(smantique), etc.
Le WEB (graphe des liens, calcul de pertinence dans les
moteurs de recherche, etc.)
Les rseaux optiques (producteurs-consommateurs, bande
passante, etc.)
Bases de donnes (dpendances)
Bases de connaissances
Techniques de compilation
Imagerie numrique (scnes, compression)
Grammaires de graphes (aspects dynamiques)
Etc.
Modliser une situation avec des graphes

15

Nous sommes en 3002. Il existe un transport interplantaire entre


les neuf plantes du systme solaire. Des navires spatiaux assurent
les liaisons suivantes :
Pluton-Vnus, Uranus-Neptune, Terre-Mercure, Jupiter-Mars,
Mercure-Vnus, Saturne-Neptune, Terre-Pluton, Saturne-Jupiter,
Uranus-Mars, Pluton-Mercure.
Peut-on partir de la Terre et arriver sur Mars ?
Mercure
Vnus

Pluton

Terre

Mars

Neptune

Jupiter

Uranus
Saturne

Loup, chvre, chou

Un passeur doit faire traverser une rivire un loup,


une chvre et un chou, dans une barque si petite quil
ne peut emporter que lun deux chaque voyage.
Pour des raisons videntes, il ne peut laisser le loup et
la chvre seuls sur une rive, pas plus que la chvre et
le chou. Comment sy prend-il ?
LL
LCC Chou
C Chou /// rien
Chou rien
rien

LL
LCC /// Chou
C Chou
Chou LL
L Chou
Chou /// C
Chou C
C C
C Chou
C Chou /// L
Chou L
L

LL
L /// C
C Chou
C Chou
Chou C
C /// LL
C L Chou
Chou
Chou Chou
Chou /// L
Chou LC
L C
C

rien /// LL
rien
rien LCC Chou
C Chou
Chou

Dans une runion de 5 personnes, combien de poignes de


mains sont changes ? On suppose que tout le monde salue
tout le monde
Mme question avec 35 personnes.

Contenu : graphe complet, lemme des poignes de mains


Une personne

Une poigne de
mains

Comptons donc les artes de ce graphe

Et les coups de pieds aux fesses ?

Albert

Cest un graphe orient

Edouard Bernar

Denis Charles

nombre de coups de pieds donns = nombre de coups de pieds reus


= nombre dartes (orientes)
Chap I
Dfinitions de base

23

Vocabulaire de base : Graphes, sommets, artes


Dfinition: Un graphe G (non orient) est constitu dun ensemble
S = {s1, s2, ..., sn} de points, appels sommets, et dun ensemble A
= {a1, a2, ..., am} dartes, tels qu chaque arte ai sont associs
deux lments de S, appels ses extrmits, et que nous noterons
[sj , sk]i
sj et sk sont dits adjacents
Les deux extrmits peuvent tre distinctes ou confondues ;
dans ce dernier cas, larte sappelle une boucle.
Dfinition: Lordre dun graphe est le nombre de ses sommets.
Dfinition: Un graphe est dit simple si deux sommets distincts sont
joints par au plus une arte et sil est sans boucle.
Deux artes sont dites parallles lorsquelles ont mmes extrmits
24
Exemple : Considrons le graphe G1 dordre 4 dfini par :
S = {s1, s2, s3, s4} et A = {a, b, c, d, e}
tel quaux artes a, b, c, d, e soient respectivement
associs [s1, s1], [s1, s2], [s1, s2], [s1, s3], [s2, s3].
Une reprsentation possible de ce graphe est :
larte a est une boucle Le point s4 est un point isol ,

25

Exemple : Considrons le graphe G1 dordre 4 dfini par :


S = {s1, s2, s3, s4} et A = {a, b, c, d, e}
tel quaux artes a, b, c, d, e soient respectivement
associs [s1, s1], [s1, s2], [s1, s2], [s1, s3], [s2, s3].
Une reprsentation possible de ce graphe est :

b et c sont des artes ayant mmes


extrmits, [s1, s2] est une arte multiple,

26
Exemple : Considrons le graphe G1 dordre 4 dfini par :
S = {s1, s2, s3, s4} et A = {a, b, c, d, e}
tel quaux artes a, b, c, d, e soient respectivement
associs [s1, s1], [s1, s2], [s1, s2], [s1, s3], [s2, s3].
Une reprsentation possible de ce graphe est :

les sommets s1 et s2 sont adjacents,


27
ainsi que s1 et s3, puisquils sont relis par une arte.

Reprsentation graphique
Il existe une infinit de manires de reprsenter graphiquement un graphe.
Exemple:
Ensemble des sommets : V = { 1, 2, 3, 4, 5 }
Ensemble des artes :
E = { (1, 3), (1, 4), (1, 5), (2, 3), (3, 4), (3, 5), (4, 5) }

28
reprsentent le mme graphe

reprsentent aussi
le mme graphe

29

Est-ce que les deux dessins reprsentent le mme graphe?

30
Dfinitions
Si l'arte e relie les sommets a et b, on dira que ces sommets
sont adjacents, ou incidents avec e,

On appelle ordre d'un graphe le nombre de sommets (n)


de ce graphe.

Ordre du graphe G = 5

Graphe G
31

Un graphe simple est dit complet si tous ses


sommets sont adjacents.
On nomme un graphe complet n sommets un Kn
graphe.

Un K5 Graphe

Graphe complet K5
V = {1, 2, 3, 4, 5}
E = {(1,2), (1,3),(1,4),(1,5),(2,3),(2,4), (2,5),(3,4),(3,5), (4,5)}
32
Degrs
Degr d'un sommet
Pour un graphe ou un multi graphe, on appelle degr du sommet
v, et on note d(v), le nombre d'artes incidentes avec ce
sommet.
Attention ! une boucle sur un sommet est compte deux fois.
Dans un graphe simple, on peut aussi dfinir le degr d'un sommet
comme tant le nombre de ses voisins (la taille de son voisinage).

s1 est de degr 5,
s2 de degr 3,
s4 de degr 0.
33

Lemme des poignes de mains


La somme des degrs des sommets d'un graphe est gale deux fois
le nombre d'artes.

d ( x) 2 * A
x X
Cest un nombre pair

O X est lensemble des sommets du graphe et A lensemble


des artes.

Chaque arte du graphe incrmente de deux la somme des


degrs. D'o le rsultat.
34
Un graphe dont tous les sommets ont le mme degr est dit
rgulier. Si le degr commun est k, alors on dit que le graphe
est k-rgulier.
35

Un graphe orient est un graphe dont les artes ont


un sens.

Albert

Edouard Bernar

Denis Charles

36
Chanes et cycles

Une chane est une suite alterne de sommets et d'artes.


La longueur dune chane est le nombre dartes qui la
composent.
Un cycle est une chane dont les artes sont distinctes et dont
l'origine et l'extrmit sont confondues.
Une chane est lmentaire si chaque sommet y apparat au plus
une fois.
Une chane est simple si chaque arte apparat au plus une fois.

37

Donner des exemples de:


Chane
Longueur
Cycle
Chane lmentaire
Chane simple

38
Graphe Connexe:
Un graphe est connexe s'il existe pour chaque paire de sommet
une chane reliant chacun des deux sommets.

Graphe non connexe


V = { 1, 2, 3, 4, 5, 6 }
E = { (1,3), (1,4), (2,3), (3,4), (5,6) }

Cest un graphe 2 composantes connexes

39

Thorme
Pour tout graphe ayant m artes, n sommets et p
composantes connexes, on a :

(G) = m n + p 0

De plus, (G) = 0 si et seulement si G est sans cycles.

(G) est appel le nombre cyclomatique.


Prononcer nu de G .

40
Graphe partiel et sous-graphe

Soit le graphe G = (V, E) Graphe partiel de G


V = {v1, v2, v3, v4, v5} V' = V
E = {e1=(v1,v2), E' = {e1, e4, e5}
e2=(v2,v3), e3=(v1,v3),
e4=(v3,v4), e5=(v3,v5)}

H=(Y, B) est un graphe partiel de G= (V, E) ssi Y = V et B E


41

Graphe partiel et sous-graphe

Soit le graphe G = (V, E)


V = {v1, v2, v3, v4, v5} Sous-graphe de G
E = {e1=(v1,v2), V' = {v1, v3, v4, v5}
e2=(v2,v3), e3=(v1,v3), E' = {e3, e4, e5}
e4=(v3,v4), e5=(v3,v5)}
H = ( Y, B ) est un Sous graphe de G= ( V, E ) si Y V et B E 42
Graphe partiel et sous-graphe

Soit le graphe G = (V, E)


V = {v1, v2, v3, v4, v5}
Sous-graphe partiel de G
E = {e1=(v1,v2), V' = {v1, v2, v3, v4}
e2=(v2,v3), e3=(v1,v3), E' = {e1, e4}
e4=(v3,v4), e5=(v3,v5)}
43

Graphe partiel et sous-graphe

Soit le graphe G = (V, E) Une clique de G


V = {v1, v2, v3, v4, v5} V' = {v1, v2, v3}
E = {e1=(v1,v2), E' = {e1, e2, e3}
e2=(v2,v3), e3=(v1,v3), clique un sous-graphe complet de G.
e4=(v3,v4), e5=(v3,v5)}
44
Graphe partiel et sous-graphe

Soit le graphe G = (V, E)


V = {v1, v2, v3, v4, v5} Un stable de G
V' = {v1, v4, v5}
E = {e1=(v1,v2), E' = {}
e2=(v2,v3), e3=(v1,v3),
e4=(v3,v4), e5=(v3,v5)}
45

Matrices dincidence sommet-arc


Cest une matrice A, de taille n m.
On associe les sommets aux lignes, et les arcs aux colonnes.
Lcriture de cette matrice ncessite la numrotation des
arcs;
la matrice dincidence dun graphe orient A est dfinie par:

1
1
0
46
Matrices dincidence sommet-arte
la matrice dincidence dun graphe non orient A est dfinie
par:
1
2
0

on parle de matrice d'incidence oriente et


de matrice d'incidence non oriente.

47

48
Listes d'adjacences
On peut aussi reprsenter un graphe en donnant pour
chacun de ses sommets la liste des sommets auxquels il
est adjacent.
listes d'adjacences du graphe G:

1: 2, 4, 6
2: 4, 5
3: 4
4: 5
5: -
6: 2
graphe G:
49

Matrice d'adjacence

M=

caractristiques:
Elle est carre:
il y a autant de lignes que de colonnes.
Il n'y a que des zros sur la diagonale.
Un 1 sur la diagonale indiquerait une boucle.
Elle est symtrique pour les graphes non orients (Mij = M
50 ji)
Matrice d'adjacence
On peut reprsenter un graphe par une matrice
d'adjacences.
Une matrice (n x m) est un tableau de n lignes et m
colonnes.
(i, j) dsigne l'intersection de la ligne i et de la colonne j.
Dans une matrice d'adjacences, les lignes et les colonnes
reprsentent les sommets du graphe.
Un 1 la position (i, j) signifie que le sommet i est adjacent
au sommet j.

51

On a calcul ci-dessous les matrices M2 et M3.


Pour chacune de ces matrices, quoi correspondent les nombres
obtenus?

M2 =

52
On a calcul ci-dessous les matrices M2 et M3.
Pour chacune de ces matrices, quoi correspondent les nombres
obtenus?

M3 =

Thorme
Le coefficient gnral de Mk est le nombre de chemins (ou
chanes) de longueur k entre i et j.
53

Exercice:
Dcrivez les graphes ci-dessous par:
des matrices dincidences,
des matrices d'adjacences
et des listes d'adjacences.

54
Quelques types de graphes

Graphe biparti
V = {1, 2, 3, 4, 5}
E = {(1,2), (1,4), (2,3), (2,5), (3,4), (4,5)}

55

Graphe d'intervalles et graphe triangul


Un graphe est un graphe triangul si tout cycle de
longueur > 3 admet une corde, c'est dire une arte
reliant deux sommets non conscutifs.
Soit une famille de segments (d'intervalles) d'une mme
droite du plan euclidien.

Proprit :
un graphe reprsentatif d'intervalles est triangul 56
5. Graphes eulriens
On dit qu'un graphe est eulrien s'il est possible de trouver
un cycle passant une et une seule fois par toutes les artes.

On dit qu'un graphe est semi-eulrien s'il est possible de


trouver une chane passant une et une seule fois par toutes
les artes.

Plus simplement, on peut dire qu'un graphe est eulrien (ou


semi-eulrien) s'il est possible de dessiner le graphe sans lever
le crayon (et sans passer deux fois sur le mme trait).
57

Thorme
Un graphe non orient connexe possde une chane eulrienne
si et seulement si le nombre de sommets de degr impair est
gal 0 ou 2.
Il admet un cycle eulrien si et seulement si tous ses sommets
ont un degr pair.

58
59

Donner le graphe du problme des ponts de Knigsberg,


Graphes hamiltoniens
On dit qu'un graphe est hamiltonien s'il est possible de
trouver un cycle passant une et une seule fois par tous les
sommets.
On dit qu'un graphe est semi-hamiltonien s'il est possible de
trouver une chane passant une et une seule fois par tous
les sommets.
Un graphe possdant un sommet de degr 1 ne peut tre
hamiltonien.
Si un sommet dans un graphe est de degr 2, alors les deux
artes incidentes ce sommet doivent faire partie du cycle
hamiltonien.
Les graphes complets Kn sont hamiltoniens.
61

Thorme (Ore)
Soit G = (V, E) un graphe simple d'ordre n 3.
Si pour toute paire {x, y} de sommets non adjacents, on a d(x) + d(y) n,
alors G est hamiltonien.
Corollaire (Dirac)
Soit G = (V, E) un graphe simple d'ordre n 3. Si pour tout sommet x de
G, on a d(x) n/2, alors G est hamiltonien.
En effet, un tel graphe vrifie les conditions du thorme prcdent. Si x et
y ne sont pas adjacents, on a bien :
d(x) + d(y) n/2 + n/2 = n
Problme du voyageur de commerce
Le problme du voyageur de commerce (Traveling Salesman Problem en
anglais) consiste trouver le plus court cycle passant par tous les
sommets dans un graphe o les artes sont pondres.
On travaille souvent sur un graphe complet.
62
Graphes planaires
On dit qu'un graphe est planaire si on peut le dessiner
dans le plan de sorte que ses artes ne se croisent pas.
Une carte, ou graphe planaire topologique, est une
reprsentation particulire d'un multi-graphe planaire
fini.
On dit qu'une carte est connexe si son graphe l'est.
Une carte divise le plan en plusieurs rgions.

63

Graphes planaires
Exemple: la carte, avec six sommets et
neuf artes, divise le plan en
cinq rgions (A, B, C, D, E).
On remarque que quatre rgions
sont limites alors que la cinquime (E),
extrieure au diagramme, ne l'est pas.
Le degr d'une rgion r, not d(r), est la longueur du cycle
qui limite r. Dans le graphe ci-contre,
d(A) = 4, d(B) = 3, d(C) = 3, d(D) = 5, d(E) = 3.
Remarque: toute arte limite deux rgions, ou est contenue
dans une rgion et est alors compte deux fois dans la chane
ferme. 64
Lemme

La somme des degrs des rgions d'une carte connexe


est gale deux fois le nombre d'artes.

Thorme (Euler)

Euler a tabli une formule qui relie le nombre de


sommets S, le nombre d'artes A et le nombre de
rgions R d'une carte connexe.

S-A+R=2 65

Thorme (Kuratowski)
Un graphe est non planaire si et seulement si il contient un sous-
graphe homomorphe K3,3 ou K5.

66
Graphes orients (digraphes)
Un digraphe est fortement connexe, si toute paire
ordonne (a, b) de sommets distincts du graphe est
relie par au moins un chemin. En d'autres termes,
tout sommet est atteignable depuis tous les autres
sommets par au moins un chemin.
On appelle composante fortement connexe tout
sous-graphe induit maximal fortement connexe
(maximal signifie qu'il n'y a pas de sous-graphe induit
connexe plus grand contenant les sommets de la
composante). 67

Soit un graphe orient G(X, E).


On appelle cocycle d'un sommet l'ensemble des sommets qui
lui sont adjacents ou l'ensemble des arcs qui lui sont incidents.
On note:

Les cocycles sont des cocycles de sommets.


Les cocycles sont des cocycles d'arcs.
Les deuximes se rvlent beaucoup plus utiles.
Pour un 1-graphe, G peut tre parfaitement dtermin par (X,
) , notation la base dune reprsentation informatique trs
utilise, les listes dadjacence 68
Listes d'adjacences

69

graphe valu

70
Graphes pondrs - graphes probabilistes
un graphe pondr, un graphe, orient ou non,
dont les artes (ou les arcs) possdent un poids.
"graphes valus",
"graphe probabiliste".

71

Exercice:

Algorithme qui renvoie la longueur minimal


entre 2 sommets en utilisant la matrice des
valeurs.

72
Parcours de graphes

Les parcours peuvent se faire de deux sortes,


parcours en largeur
parcours en profondeur.
Les graphes peuvent contenir des cycles.

73

Parcours en largeur
1. partir d'un sommet donn,
2. visiter tous les sommets successeurs.
3. On rpte l'opration tant qu'il existe des sommets
non visits.
Les informations prendre en compte :
Un sommet dj visit ne doit pas tre revisit.
On explore les sommets successeurs directs.
Une file peut maintenir jour la liste des sommets
visiter.

74
Exemple:
parcourir le graphe en largeur en
partant du sommet 1.
Le parcours en largeur de ce graphe
donnerait la liste suivante :
1 2 3 4 6 5 7 8.
Une autre solution serait la suivante:
1 3 2 6 4 5 8 7.
Elles sont toutes les deux valables.

75

On part du sommet 1,
On liste tous les sommets
successeurs,
Il s'agit donc des sommets
2 et 3.
Marquons les d'une couleur
diffrente

76
On recommence par le sommet 2,
le seul successeur est le sommet 4,
On l'affiche et on le marque comme
tant parcouru.
On passe au sommet 3,
Son successeur est le sommet 6
On l'affiche et on le marque
Le sommet 4 a deux successeurs,
le sommet 5 et le sommet 6.
On ajoutera seulement le sommet 5
la file des sommets parcourir.
77
. . .

Pour identifier les sommets parcourus, on utilise le


coloriage.
Gnralement, un sommet est blanc s'il n'a pas t
parcouru et est noir dans le cas contraire.
Initialisation:
Pour tous les sommets S du graphe faire
S.couleur = blanc;

78
Ajouter le sommet de dpart la file
on prend le sommet de la file et on y effectue les
choses :
parcourir la liste des successeurs Si de S :
Si Si est blanc alors Si devient noir et on ajoute Si
la File.
L'algorithme s'arrte donc tout naturellement
lorsque la file devient vide.

79

ParcoursLargeur(G : Graphe , S : Sommet ) {


F : File de sommets;
Initialiser (G);
S.couleur = Noir;
Ajouter S F;
tant que F n'est pas vide faire
S = Defiler(F);
pour tous les successeurs Si de S faire
si (Si.couleur == Blanc ) alors
Si.couleur <- Noir;
Ajouter Si F;
fin si
fin pour
fin tant que } 80
Donner un parcours en largeur de ce graphe

81

Exercice (TP) :
programmer cet algorithme en utilisant la
matrice dadjacence pour reprsenter un
graphe.

82
Parcours en profondeur
Il s'agit d'un parcours o l'on
explore un chemin jusqu'a ce que
l'on ne puisse plus avancer.
Dans ce cas, il faut rebrousser
chemin dans notre exploration et
partir d'un sommet qui n'a pas t
visit.

1,2,4,5,7,8,6,3
1,3,6,4,5,8,7,2

83

Parcours en profondeur
Initialiser(G);
ParcoursProfondeur( Graphe G, Sommet S) {
S.couleur <- Noir;
Pour tous les successeurs Si de S faire
Si Si.couleur == Blanc alors
ParcoursProfondeur(G , Si);
Fin si
Fin Pour }

84
Exercice:
Drouler lalgorithme pour les
exemples suivants:

Refaire le mme algorithme sans rcursions;


85

Composantes connexes
utiliser les algorithmes de parcours pour dterminer
les composantes connexes d'un graphe.
Rappel : les composantes connexes d'un graphe sont
les ensembles de sommets accessibles les uns depuis
les autres.
on utilise l'algorithme de parcours en profondeur
d'abord et on colorie les sommets rencontrs avec
une couleur correspondant la composante connexe
courante.

86
Composantes-Connexes

Partir d'un sommet


S'il nest pas colori alors
choisir une couleur
appliquer parcours en profondeur en
marquant les sommets avec la couleur

87

Fin Chap I

88
C h a p II
Les arbres

89

Les arbres
Un arbre (non orient) !

Une arborescence (oriente) !

90
Les arbres
Dfinitions :
Un arbre est un graphe non orient dans lequel il existe une

et une seule chaine entre toute paire de sommets.

Cette chaine sera donc simple, la plus courte, . . .

Une arborescence est un graphe orient quasi-fortement


connexe tel quil existe un et un seul chemin orient de la
racine vers tout autre sommet.

Dabord, il ny a quune seule racine !


On na pas de chemins multiples, ni de circuits !

Les arbres dalgorithmique


sont des arborescences ! 91

Thorme
Les dfinitions suivantes sont quivalentes: pour tout
graphe G = (V, E) n sommets.
1. G est un arbre,
2. G est connexe et sans cycles,
3. G est connexe et comporte n-1 artes,
4. G est sans cycles et comporte n-1 artes,
5. chaque paire {u, v} de sommets distincts est relie par
une seule chane simple (et le graphe est sans boucles).

92
Quelques dfinitions des arbres

Dfinition 6:
Un graphe est connexe minimal sil est connexe et na pas
plus dartes quaucun autre graphe connexe !
Lide: si nous enlevons une arte de la chaine unique,
nous cassons la connexit!
Dfinition 7:
Un graphe est connexe minimal sil est connexe et
comporte n-1 artes.

Dfinition 8:
Un graphe est sans cycles, maximal sil est sans cycles et na
pas moins dartes quaucun autre graphe sans cycles ! 93

Les arborescences
Une arborescence peut tre caractrise comme suit.
Elle possde (n-1) arcs.
Tous les sommets sauf un ont un degr entrant unitaire.
Un seul sommet a un degr entrant nul.

94
Les arborescences
Toute arborescence peut tre transforme en un arbre !
Il suffit de changer les arcs en artes.
Nous aurons (n-1) artes.

Tout arbre peut tre transform en une arborescence en


nous laissant le choix de la racine !

95

Les arbres de recouvrement


Un arbre de recouvrement ( AR ) dun graphe G connexe est
un sous-graphe de G qui comporte tous les sommets

et qui a la proprit dtre un arbre.

Proprits :
Nous prservons la connexit !

Nous navons pas de cycles !

Nous avons un nombre minimal dartes !

Le choix de lAR nest pas unique en gnral !

96
Les arbres de recouvrement
Un arbre de recouvrement ( AR ) dun graphe G connexe est
un sous-graphe de G qui comporte tous les sommets

et qui a la proprit dtre un arbre.

Proprits :
Nous prservons la connexit !

Nous navons pas de cycles !

Nous avons un nombre minimal dartes !

Un autre arbre
de recouvrement !

97

Les arbres de recouvrement


Un arbre de recouvrement ( AR ) dun graphe G connexe est
un sous-graphe de G qui comporte tous les sommets

et qui a la proprit dtre un arbre.

Proprits :
Nous prservons la connexit !

Nous navons pas de cycles !

Nous avons un nombre minimal dartes !

Le choix de lAR nest pas unique en gnral !


Un arbre de
recouvrement !

98
Les arbres de recouvrement
Un arbre de recouvrement ( AR ) dun graphe G connexe est
un sous-graphe de G qui comporte tous les sommets

et qui a la proprit dtre un arbre.

Proprits :
Nous prservons la connexit !

Nous navons pas de cycles !

Nous avons un nombre minimal dartes !

Le choix de lAR nest pas unique en gnral !


Un arbre de
recouvrement !

Un autre arbre
de recouvrement ! 99

Arbre de poids minimal ou arbre de recouvrement minimal

Problme :
Tracer larbre le plus court qui touche
tous les nuds, c--d. minimiser la
longueur totale des arcs contenus dans
larbre.
1. Algorithme de Kruskal;
2. Algorithme de Prim

100
Algorithme de Kruskal
1. Trier les arcs en ordre croissant de poids ;
2. Construire un arbre en slectionnant les arcs
selon lordre tabli ltape 1.

101

Algorithme de Kruskal
1. Trier les arcs

{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2),


(5,6),(4,6) }

102
Algorithme de Kruskal
2. Construire un arbre T = { }

{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2),


(5,6),(4,6) }

103

Algorithme de Kruskal
On value (3,4) :
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6)
}
T= { (3,4) }

104
Algorithme de Kruskal
On value (3,4) :
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6)
}
T= { (3,4) }

105

Algorithme de Kruskal
On value (2,4) :
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6)
}
T= {(3,4), (2,4)}

106
Algorithme de Kruskal
On value (4,5):
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6)
}
T= { (3,4), (2,4), (4,5) }

107

Algorithme de Kruskal
On value (2,3):
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6)
}
T= { (3,4), (2,4), (4,5) }

108
Algorithme de Kruskal
On value (1,3):
{ (3,4), (2,4), (4,5), (2,3), (1,3) , (3,5), (1,2),
(5,6),(4,6) }
T= { (3,4), (2,4), (4,5), (1,3) }

109

Algorithme de Kruskal
On value (3,5):
{ (3,4), (2,4), (4,5),(2,3), (1,3) , (3,5) , (1,2), (5,6),(4,6)
}
T= { (3,4), (2,4), (4,5), (1,3) }

110
Algorithme de Kruskal
On value (1,2):
{ (3,4), (2,4), (4,5),(2,3), (1,3) ,(3,5), (1,2), (5,6) ,(4,6)
}
T= { (3,4), (2,4), (4,5), (1,3) }

111

Algorithme de Kruskal
On value (5,6):
{ (3,4), (2,4), (4,5),(2,3), (1,3) ,(3,5), (1,2), (5,6) ,(4,6)
}
T= { (3,4), (2,4), (4,5), (1,3), (5,6) }

112
Algorithme de Kruskal
On value (4,6):
{ (3,4), (2,4), (4,5), (2,3), (1,3) , (3,5), (1,2), (5,6),
(4,6)}
T= { (3,4), (2,4), (4,5), (1,3), (5,6) }

113

Algorithme de Prim
0. Initialiser T={}, S={} et W= V (sommets)
1. Choisir un nud i W, poser S = { i } et W = W \ { i
}
2. Choisir un nud j W tel que larc (i, j), o i S, ait
le ci,j le plus petit;
3. Si (i,j) ne forme pas de cycle alors inclure cet arc dans
larbre, i.e. T = T (i,j), j S et W = W \ { j } et aller
ltape 4;
sinon exclure larc et retourner ltape 2;
4. Si S = V alors larbre de poids minimal est trouv;
sinon
retourner l tape 2.
114
Algorithme de Prim
S ={}
W = { 1, 2, 3, 4, 5, 6 }
T= {}

115

Algorithme de Prim
S ={1}
W = { 2, 3, 4, 5, 6 }
T= {}

116
Algorithme de Prim
S = { 1,3 }
W = { 2, 4, 5, 6 }
T = { (1,3) }

117

Algorithme de Prim
S = { 1,3 }
W = { 2, 4, 5, 6 }
T = { (1,3), (3,4) }

118
Algorithme de Prim
S = { 1, 3, 4}
W = { 2, 5, 6 }
T = { (1,3), (3,4) }

119

Algorithme de Prim
S = { 1, 3, 4}
W = { 2, 5, 6 }
T = { (1,3), (3,4), (2,4) }

120
Algorithme de Prim
S = { 1, 3, 4, 2 }
W = { 5, 6 }
T = { (1,3), (3,4), (2,4) }

121

Algorithme de Prim
S = { 1, 3, 4, 2 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }

122
Algorithme de Prim
S = { 1, 3, 4, 2, 5 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }

123

Algorithme de Prim
S = { 1, 3, 4, 2, 5 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }

124
Algorithme de Prim
S = { 1, 3, 4, 2, 5 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }

125

Algorithme de Prim
S = { 1, 3, 4, 2, 5 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }

126
Algorithme de Prim
S = { 1, 3, 4, 2, 5 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }

127

Algorithme de Prim
S = { 1, 3, 4, 2, 5, 6 }
W={}
T = { (1,3), (3,4), (2,4), (4,5), (5,6) }

128
Algorithme de Prim
S = { 1, 3, 4, 2, 5, 6 } ; W={}
T = { (1,3), (3,4), (2,4), (4,5), (5,6) }
Poids de larbre = 27 units

129

Thorme sur les coupes


Un arbre T* est un arbre de poids minimal, si
et seulement si il satisfait la condition
doptimalit suivante sur les coupes :
(i, j) T* , ci,j ck,l pour chaque (k, l)
appartenant la coupe obtenue de llimination
de larc (i, j) de T*.

130
Thorme sur les coupes

131

Thorme sur les coupes

Ici on a (i, j) = (2,4) et Poids de T* = (24 + 4)


(k, l) {(2,4), (3,4), (3,5)} (24 + 6) units
(24 + 7) units

132
Thorme sur les coupes

133

Thorme sur les coupes

134
Thorme sur les chemins
Un arbre T* est un arbre de poids minimal, si et
seulement si il satisfait la condition doptimalit
suivante sur les chemins :
(k, l) G(V,E) tel que (k, l) T* , on a ci,j
ck,l pour chaque (i, j) appartenant au chemin sur
larbre T* reliant k et l.

135

Thorme sur les chemins

136
Thorme sur les chemins

137

Thorme sur les chemins

138
Fin Chap II

139

Chap III
Le Problme du Plus
courts chemins
140
Problme du Plus courts chemins
tant donn un Graphe valu: G = (S,A,v) avec valuation
v:AR
Source du graphe : s S
Problme: pour tout t S calculer
(s, t) = min { v(c) ; c chemin de s t } {+}
Exemple: Cots
3
5
8
5 a b
a b 3
3 0
5 5
s 1 1 s 1 1 1 3
5 1 3 5
5 5
c d c d
3 3 4 9 141

Arbres de plus courts chemins


Arbres de racine s
les branches sont des chemins de cot minimal

3 8 3 5 8
5 a b
a b
3 3
0 5 0 5
s 1 1 s 1 1
1 3
5 1 3 5
5 5
c d c d
3 4 9 3 4 9

142
Existence
Proposition
pour tout t S (s, t) > -
ssi
le graphe na pas de circuit de cot < 0
accessible depuis s
5
a b
3
5
s 1 1 1 -3
5
c 5 d
3 143

Proprits de base
Proprit 1 : G = (S, A, v)
soit c un plus court chemin de p r dont lavant-
dernier sommet est q
Alors (p, r) = (p, q) + v(q, r)
q
p r

Proprit 2 : G = (S, A, v)
soit c un chemin de p r dont lavant-dernier
sommet est q
Alors (p, r) (p, q) + v(q, r) 144
Relaxation
Calcul des (s, t) par approximations successives t S
d(t) = estimation de (s, t)
(t) = prdcesseur de t : avant-dernier sommet dun
chemin de s t ayant pour cot d(t)

Initialisation de d et
INIT
pour chaque t S faire
{ d(t) ; (t) nil;}
d(s) 0;
d(r)
Relaxation de larc (q, r) s q r
RELAX(q, r)
si d(q) + v(q, r) < d(r) alors d(q)

{ d(r) d(q) + v(q, r) ; (r) q ; } 145

Algorithme de Dijkstra
Condition : v(p, q) 0 pour tout arc (p, q)
dbut
INIT;
QS; // lensemble de Sommets
tant que Q faire {
q MINd (Q) ; Q Q - {q } ;
pour chaque r successeur de q faire
RELAX(q, r) ;
}
fin
146
Exemple 1:

5
a b
3 S={s,a,b, c, d }
0 5
s 1 1 Q={s,a,b, c, d }
1 3
5 d = {0 , , , , }
c
5
d = {nil , nil , nil ,nil ,nil }
3

3
5
a b
3
0 5 S={s,a,b, c, d }
s 1 1 Q={ a,b,c, d }
5 1 3
5 d = {0, 3, , 5 , }
c d = {nil , s , nil ,s , nil }
3 5 147

Exemple 1 suite:
3
5
a b
3 S={s,a,b, c, d }
0 5
s 1 1 Q={ a,b, c, d }
1 3
5 d = {0, 3, , 5 , }
c
5
d = {nil , s , nil ,s , nil }
3 5

3 8
5
a b
3 S={s,a,b, c, d }
0 5
s 1 1 Q={ b, c, d }
1 3 d = {0, 3, 8 , 4 , }
5
c
5
d = {nil , s , a , a , nil }
3 4 148
Exemple 1 suite:
3 8
5
a b
3 S={s,a,b, c, d }
0 5
s 1 1 Q={ b, c, d }
5
1 3 d = {0, 3, 8 , 4 , }
c
5
d = {nil , s , a , a , nil }
3 4

3 8
5
a b
3 S={s,a,b, c, d }
0 5 Q={ b , d }
s 1 1
1 3 d = {0, 3 , 8 , 4 , 9}
5
c
5
d
= {nil , s , a , a , c}
3 4 9 149

Exemple 1 suite:
3 8
5
a b S={s,a,b, c, d }
3
0 5 Q={ b , d }
s 1 1
1 3 d = {0, 3 , 8 , 4 , 9}
5
5 = {nil , s , a , a , c}
c d
3 4 9

a b S={s,a,b, c, d }
Q={ d }
s d = {0, 3 , 8 , 4 , 9 }
= {nil , s , a , a , c }
c d
puis Q = 150
Implmentation
Si |S| = n et |V| = m
Par matrice d'adjacence
temps global O(n2)

Par listes de successeurs


Q : file de priorit (tas)
n oprations MINd O( n . log (n))
m oprations RELAX O((m). log (n))
temps global O ((n + m) . log (n))

151

Exemple 2

152
Algorithme de Bellman-Ford
Lalgorithme de DIJKSTRA MOORE ne permet pas de
considrer les arcs ngatifs, car une fois quun sommet est
marqu on ne peut changer ce marquage lors des itrations
suivantes. fixation dtiquettes.
On considre donc ici un algorithme qui permet un
marquage qui nest pas dfinitif tant que le programme nest
pas dtermin (le marquage est modifi itrativement).
correction dtiquettes.
L algorithme de BELLMAN-FORD est valable pour des
graphes sans circuit, valus par des longueurs quelconques.
153

Notations :

S = Lensemble de n sommets est numrot de 1 n.


(p) = Sommet prcdant p sur le plus court chemin de
lorigine p.
d = Plus courte distance de lorigine aux autre sommets.

154
Initialisation : n = nombre de sommets de G
= tableau initialis 0
d = tableau des distances initialis + (sauf d(s) = 0)
W = matrice des poids des arcs ( si larc nexiste pas)
Traitement : k = 1
tant que k n et il y a eu des modifications ltape prcdente
pour tout sommet x faire
pour tout y successeur de x faire
si d(x) +W(x, y) < d(y) alors
d(y) = d(x) +W(x, y)
(y) = x
fin
fin
fin
k=k+1
Fin Temps : O( n . m ) 155

Exemple 1
3 8
5 5
a b a b
3 3
0 5 0 5
s 1 -1 -1 s 1 -1 -1
3 3
5 5
5 5
c d c d
-3 -3 4 7

tape 1 relaxation de tous les arcs dans lordre :


(s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s)

156
Exemple 1 (suite)
3 8 3 8
5 5
a b a b
3 3
0 5 0 5
s 1 -1 -1 s 1 -1 -1
3 3
5 5
5 5
c d c d
-3 4 7 -3 4 7

tape 2 relaxation de tous les arcs dans lordre :


(s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s)

pas de rduction possible : cots corrects

157

Exemple 2
3 6
5 5
a b a b
3 3
0 5 0 5
s 1 1 s 1 1
1 -3 1 -3
5 5
5 5
c d c d
3 3 4 9

tape 1 relaxation de tous les arcs dans lordre :


(s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s)

158
Exemple 2 (suite)
3 6 3 4
5 5
a b a b
3 3
0 5 0 5
s 1 1 s 1 1
1 -3 1 -3
5 5
5 5
c d c d
3 4 9 3 4 7

tape 2 relaxation de tous les arcs dans lordre :


(s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s)

159

Exemple 2 (suite)
3 4 3 2
5 5
a b a b
3 3
0 5 0 5
s 1 1 s 1 1
1 -3 1 -3
5 5
5 5
c d c d
3 4 7 3 4 5

tape 3 relaxation de tous les arcs dans lordre :


(s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s)

160
Exemple 2 (suite)
3 2 3 0
5 5
a b a b
3 3
0 5 0 5
s 1 1 s 1 1
1 -3 1 -3
5 5
5 5
c d c d
3 4 5 3 4 3

tape 4 relaxation de tous les arcs dans lordre :


(s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s)

rduction possible : cycle de cot ngatif

161

Graphes acycliques
Tri topologique

Thorme: Soit G(X; A) un graphe a


-6
b
3
orient sans circuit. G possde un 5
tri topologique, c'est dire un ordre s
5
-1 -1
(x1; x2; ; xn) sur les sommets tel 5
c d
que tous les arcs de G sont orients -3
dans le sens croissant de l'ordre :
pour tout arc (xi , xj) A ,
on a xi < xj.
162
Graphes acycliques
Aucune condition : pour tout arc (p, q), v (p, q) R
Calcul aprs ordre topologique

dbut
INIT;
pour chaque q S en ordre topologique faire
pour chaque r successeur de q faire
RELAX(q, r) ;
Fin

Temps : O(|S |+ |A|)


chaque sommet et chaque arc est examin une fois
163

Exemple
-6
a b
3
5
s -1 -1
5
5 Ordre topologique
c d c, s, a, b, d
-3

5
-1
c 5 s 3 a -6 b -1 d

-3 5

164
Calcul des cots
5
-1
0
c 5 s 3 a -6 b -1 d

-3 5
5
-1
0
Examen de c 5 3
c s a -6 b -1 d

-3 5
5
-1
0 3 -3
Examen de s 5 3
c s a -6 b -1 d

-3 5
165

Calcul des cots (suite)


5
-1
0 3 -3 -3
Examen de a c 5 s 3 a -6 b -1 d

-3 5
5
-1
0 3 -3 -4
Examen de b 5 3
c s a -6 b -1 d

-3 5

Examen de d inutile

166
Cycle et circuit
Un cycle est une chane telle que :
le mme arc ne figure pas deux fois dans la squence ;
les deux sommets aux extrmits de la chane concident.
Un cycle lmentaire est un cycle ne rencontrant pas
deux fois le mme sommet (except le sommet initial
qui concide ncessairement avec le sommet final).

167

Exemples
C1 = (1,5,4) est un cycle
lmentaire de longueur 3
C2 = (1,2,7,9,8,3) est un
cycle lmentaire de longueur 5
(1,5,6,2,5,4) n'est pas un cycle
C3 = (3, 4, 9, 7, 6. 8) est un cycle
de longueur 7 qui n'est pas lmentaire

168
Notation Vectorielle
Les arcs du graphe tant numrots de 1 m, on peut faire
correspondre tout cycle un m-uplet (un "vecteur") compos
de -1, 1 et 0 de la manire suivante :
Si l'arc n'appartient pas au cycle, on met un "0"
Si l'arc appartient au cycle et est parcouru dans le bon sens (on
le qualifie alors de "direct"), on met un +1
Si l'arc appartient au cycle mais parcouru dans le mauvais sens
(on le qualifie alors de "inverse"), on met un -1

169

Exemples :
C1 = (1,5,4)
C1 = (1, 0, 0, -1, 1, 0, 0, 0, 0)
C2 = (1,2,7,9,8,3)
C2 = (1, 1, 1, 0, 0, 0, 1, 1, 1)
C3 = (3, 4, 9, 7, 6. 8)
et C3 = (0, 0, 1, 1, 0, -1, -1, 1, -1)

170
On peut donc assimiler un cycle
un vecteur et dfinir la somme
(vectorielle) de 2 ou plusieurs
cycles.
Exemple : C3 = (3, 4, 9, 7, 6. 8)
est la somme du cycle
(3,4,8) et du cycle (9,7,6).
(0,0,1,1,0,0,0,1,0) + (0,0,0,0,0,-1,-1,0,-1) = (0,0,1,1,0,-1,-1,1,-1)

Proprits:
Tout cycle est la somme de cycles lmentaires sans arc
commun.
Un cycle est lmentaire si et seulement s'il est minimal.
171

On peut donc dfinir une base de cycles (au sens vectoriel)


comme tant
une famille de cycles libre (tous les cycles indpendants, aucun
ne peut se dfinir comme combinaison linaire des autres)
et gnratrice (tout cycle peut s'crire comme combinaison
linaire des cycles de la famille).
Le Cardinal (Nombre d'lments) commun de toutes les bases
de cycles sera appel nombre cyclomatique et not .

172
Proprit : Soit un graphe G d'ordre n (n sommets) avec m
arcs et p composantes connexes: (G) = m - n + p .
Dfinition: Soit A un ensemble de sommets du graphe, on
appellera cocycle associ A, qu'on notera (A),
l'ensemble des arcs incidents A, ceux qui quittent A
seront nots positivement et ceux qui pointent vers A seront
nots ngativement.
Un cocycle c'est donc l'ensemble des arcs qui relient A aux
autres sommets du graphe; si on enlve les arcs du cocycle
on "dconnecte" A.
Cycle et cocycle sont des notions duales.

173

Exemple : En rutilisant le graphe ci-dessus, si A = {b, e}


(A) = {-1 , +2 , -4 , +6 , +8 , -9}

On peut, bien sr appliquer la notation vectorielle dfinie pour


les cycles, aux cocycles;
on obtiendrait pour l'exemple ci-dessus le vecteur :
(-1,1,0,-1,0,1,0,1,-1).

174
Dfinition : Un cocycle sera dit
lmentaire quand il est compos
d'arcs reliant deux sous-ensembles
de sommets connexes qui partitionnent
une composante connexe du graphe
(donc tous les sommets en cas de
graphe connexe).

Le cocycle donn dans l'exemple n'est pas lmentaire parce


qu'il est compos d'arcs reliant {b, e} {a, c, d, f}
{b,e} est connexe,
ce n'est pas le cas de {a, c, d, f}.
Le cocycle associ {a, b, d} dont la notation vectorielle est
(0, 1, 0, 1, 1, 0, 0, -1, 0) est lmentaire. 175

Le Cardinal (Nombre d'lments) commun de toutes les bases


de cocycles sera appel nombre cocyclomatique et not
Soit un graphe G d'ordre n (n sommets) avec p composantes
connexes: (G) = n - p.

Exercice:
1) Dterminer tous les cycles lmentaires
2) Extrayez-en une base
3) Dterminer tous les cocycles
lmentaires
4) Extrayez-en une base

176
Et 3!

177

C h a p IV
Rseaux de flots
Problme du flot maximum

178
PROBLEME DE FLOTS

1. Les rseaux de transport


2. Le flot maximum et la coupe minimum
3. L'algorithme de Ford et Fulkerson

179

Les rseaux de transports


Rseau de transport : graphe orient avec pour chaque arc une
capacit.
La capacit c(a) est un entier positif ou nul.
Il y a aussi une source s et un puits t.
Aucun arc n'arrive la source
Et aucun arc ne quitte le puits.

Rseau de transport avec


les capacits
180
Un flot est une fonction entire positive ou nulle f dfinie
sur les arcs satisfaisant :

Contrainte de capacit: f(a) c(a) ;

Pour le graphe si dessous: 11 16, 8 13, 0 10, 12 12 , , 4 4

Un flot sur le rseau de


transport

181

Conservation du flot:
pour tout sommet autre que s et t, la somme des flots sur
les arcs entrants et la somme des flots sur les arcs sortants
sont gales.

Exemples : circuits lectriques ou hydrauliques, rseaux


de communication, modlisation de transports

Sommet A : 11+1 = 12 + 0 , sommet C: 12+7=4+15

Un flot sur le rseau de


transport
182
Quand deux arcs en sens inverse relient deux sommets, on
peut toujours annuler la fonction flot sur l'un des deux.
Proprit :
la somme des flots sur les arcs sortant de source et la somme
des flots sur les arcs arrivant au puits sont gales ; cette
valeur est la valeur du flot | f | ;

Un flot sur le rseau de


transport
183

Une coupe est une partition de l'ensemble des sommets en 2


parties disjointes, l'une contenant la source et l'autre le puit:
EF=A, EF= ; sE, tF

La capacit C(E, F) d'une coupe est la somme des capacits des


arcs de E a F.

Un flot sur le rseau de


transport

C(E, F) = 26 184
Proprit :
Le flux de E F dans un flot f est : f (E, F ) f (u )
uExF

et le flux orient de la coupe (E , F) ou ( flot net traversant la coupe )


est:
| f | ( E , F ) f ( E , F ) f ( F , E )

C(E, F) = 12+14 = 26
f(E, F) = 12+11 = 23
(E, F) = | f | = (12+11) - 4 = 19

Un flot sur le rseau de


transport
185

La deuxime proprit est donc que le flot net traversant une


coupe ne dpend pas de la coupe.

Tout flot a pour valeur Vf = f( {s}, X\{s} ) = ( {s}, X\{s} ).

Lemme: Plus gnralement Vf = ( E, F) pour toute coupe.


| f | est infrieur la capacit de n'importe quelle coupe.

Un flot sur le rseau de


transport

| f | = (12+7+4) 4 = 19 186
Le flot maximum et la coupe minimum
Il existe toujours un flot possible qui est le flot nul.
Problme : comment trouver un flot qui a la valeur maximum ?
Recherche d'un chemin amliorant.
Dterminer le rseau rsiduel :

Un flot est satur si sur tout chemin de s a t il existe un arc a


tel que f(a) = c(a).

187

pour chaque arc a = uv, f(a) c(a), on peut augmenter le flot


de c(a) - f(a), et on peut le diminuer de f(a), donc faire passer
un flot f(a) sur un arc -a = vu. Si cet arc existe dj avec une
capacit c(-a), celle-ci s'ajoute f(a).

Le flot

Le rseau rsiduel
correspondant
188
Le graphe orient avec ces capacits est le rseau rsiduel.

On cherche un chemin de s t dans le rseau rsiduel.

Il correspond une possibilit d'amlioration du flot en modifiant


de la valeur du minimum des capacits rsiduelles sur le chemin.

Le rseau rsiduel

189

Un chemin amliorant

Le flot aprs amlioration


190
Le nouveau rseau rsiduel

Dans ce rseau, il n'y a pas de chemin de s t, donc pas de


chemin amliorant.

191

Thorme (flot maximum et coupe minimum)


Si f est un flot dans un rseau de transport, les trois conditions
suivantes sont quivalentes :
1. f est un flot maximum ;
2. Le rseau rsiduel de f ne contient aucun chemin amliorant ;
3. Il existe une coupe E/F dont la capacit vaut | f |.

Remarque :
La condition 3. implique que | f | est la valeur minimum des
capacits des coupes du rseau, puisqu'on sait dj que | f | est
infrieur la capacit de n'importe quelle coupe.
Valeur du flot maximal = Capacit de la coupe minimale.
192
L'algorithme de Ford et Fulkerson

o On part d'un flot quelconque (ventuellement nul) ;

o On fabrique le rseau rsiduel ;

o On cherche un chemin amliorant ;

o On itre jusqu' ce qu'on ne trouve plus de tel chemin.

193

Variantes et applications :
Parfois, il y a plusieurs sources et plusieurs puits.

On peut dans ce cas rajouter une "super-source" et un "super-


puits" relis respectivement aux sources et aux puits par des arcs
de capacit infinie.

Adjonction d'une
super-source et d'un
super-puits

194
Valeur de ce flot?

195

Flot maximum?

196

Das könnte Ihnen auch gefallen