Sunteți pe pagina 1din 22

Chap 0 1736.

problme des ponts de Knigsberg, rsolu par Euler


en 1736 dans Solutio problematis ad geometriam situs

Un peu dhistoire
Universit Mohamed Bachir El Ibrahimi pertinentis
Bordj Bou Arreridj
2eme anne Informatique

Thorie des graphes


Tir du cours de Catherine Philippe & Christian Vassard
Mehemmel Abbas IREM de Rouen Leonhard Euler
2014 / 2015 1 2 (1707-1783)

1852 En 1857

quatre couleurs suffisent-elles colorier une carte de Hamilton invente un jeu, The icosian
gographie de faon ce que deux pays limitrophes ne game, quil commercialise en 1859.
soient pas coloris de la mme couleur ? 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
Augustus de Morgan
(1806-1871) revenant la ville de dpart.

1878 XXe sicle


le mot graphe est introduit pour
la premire fois par langlais J. J. La thorie des graphes devient une branche des
Sylvester (1814-1897) mathmatiques avec les travaux de Knig,
Kuratowski et plus rcemment de Berge, Erds et Quelques Domaines dapplications
Harary.
Le plan dune ville, avec ses sens interdits Un autre exemple Une carte routire

Les graphes sont trs utiliss dans l'informatique:


Autres domaines dapplication
les rseaux, l'ordonnancement de processus, ... .
Gographie (cartographie), architecture (plans), linguistique
modliser des problmes comme. (smantique), etc.
un rseau de chemin de fer ou un rseau routier. Le WEB (graphe des liens, calcul de pertinence dans les
En utilise les graphes aussi en:
moteurs de recherche, etc.) Modliser une situation avec des graphes
Les rseaux optiques (producteurs-consommateurs, bande
Chimie passante, etc.)
Sociologie Bases de donnes (dpendances)
Bases de connaissances
Bio-informatique
Techniques de compilation
Recherche oprationnelle Imagerie numrique (scnes, compression)
Rseaux de communication Grammaires de graphes (aspects dynamiques)
Fonctionnement de systmes 13 Etc. 15

Mercure
Vnus
Nous sommes en 3002. Il existe un transport interplantaire entre
les neuf plantes du systme solaire. Des navires spatiaux assurent Pluton

les liaisons suivantes : Loup, chvre, chou


Pluton-Vnus, Uranus-Neptune, Terre-Mercure, Jupiter-Mars,
Mercure-Vnus, Saturne-Neptune, Terre-Pluton, Saturne-Jupiter, Terre Un passeur doit faire traverser une rivire un loup,
Uranus-Mars, Pluton-Mercure.
Peut-on partir de la Terre et arriver sur Mars ?
une chvre et un chou, dans une barque si petite quil
Mars
ne peut emporter que lun deux chaque voyage.
Neptune

Pour des raisons videntes, il ne peut laisser le loup et


Jupiter
la chvre seuls sur une rive, pas plus que la chvre et

Saturne
Uranus
le chou. Comment sy prend-il ?
Une personne
LL
LCC Chou
C Chou /// rien
Chou rien
rien Dans une runion de 5 personnes, combien de poignes de
mains sont changes ? On suppose que tout le monde salue
tout le monde Une poigne de
mains
Mme question avec 35 personnes.
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 Comptons donc les artes de ce graphe

Contenu : graphe complet, lemme des poignes de mains

Et les coups de pieds aux fesses ? Vocabulaire de base : Graphes, sommets, artes
Dfinition: Un graphe G (non orient) est constitu dun ensemble
Albert
S = {s1, s2, ..., sn} de points, appels sommets, et dun ensemble A

Edouard Bernar
Cest un graphe orient
Chap I = {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

Dfinitions de base Les deux extrmits peuvent tre distinctes ou confondues ;


dans ce dernier cas, larte sappelle une boucle.
Denis Charles

Dfinition: Lordre dun graphe est le nombre de ses sommets.

nombre de coups de pieds donns = nombre de coups de pieds reus Dfinition: Un graphe est dit simple si deux sommets distincts sont
joints par au plus une arte et sil est sans boucle.
= nombre dartes (orientes)
23
Deux artes sont dites parallles lorsquelles ont mmes extrmits
24

Exemple : Considrons le graphe G1 dordre 4 dfini par : Exemple : Considrons le graphe G1 dordre 4 dfini par : Exemple : Considrons le graphe G1 dordre 4 dfini par :
S = {s1, s2, s3, s4} et A = {a, b, c, d, e} S = {s1, s2, s3, s4} et A = {a, b, c, d, e} S = {s1, s2, s3, s4} et A = {a, b, c, d, e}
tel quaux artes a, b, c, d, e soient respectivement tel quaux artes a, b, c, d, e soient respectivement tel quaux artes a, b, c, d, e soient respectivement
associs [s1, s1], [s1, s2], [s1, s2], [s1, s3], [s2, s3]. associs [s1, s1], [s1, s2], [s1, s2], [s1, s3], [s2, s3]. associs [s1, s1], [s1, s2], [s1, s2], [s1, s3], [s2, s3].
Une reprsentation possible de ce graphe est : Une reprsentation possible de ce graphe est : Une reprsentation possible de ce graphe est :
larte a est une boucle Le point s4 est un point isol ,
b et c sont des artes ayant mmes
extrmits, [s1, s2] est une arte multiple,

les sommets s1 et s2 sont adjacents,


25 26 27
ainsi que s1 et s3, puisquils sont relis par une arte.
Reprsentation graphique
reprsentent le mme graphe Est-ce que les deux dessins reprsentent le mme graphe?
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) }

reprsentent aussi
le mme graphe

28 29 30

Dfinitions Un graphe simple est dit complet si tous ses Degrs


sommets sont adjacents. Degr d'un sommet
Si l'arte e relie les sommets a et b, on dira que ces sommets Pour un graphe ou un multi graphe, on appelle degr du sommet
On nomme un graphe complet n sommets un Kn v, et on note d(v), le nombre d'artes incidentes avec ce
sont adjacents, ou incidents avec e,
graphe. sommet.
On appelle ordre d'un graphe le nombre de sommets (n) Attention ! une boucle sur un sommet est compte deux fois.
Dans un graphe simple, on peut aussi dfinir le degr d'un sommet
de ce graphe.
comme tant le nombre de ses voisins (la taille de son voisinage).
Un K5 Graphe
Ordre du graphe G = 5
s1 est de degr 5,
Graphe complet K5 s2 de degr 3,
V = {1, 2, 3, 4, 5}
s4 de degr 0.
Graphe G E = {(1,2), (1,3),(1,4),(1,5),(2,3),(2,4), (2,5),(3,4),(3,5), (4,5)}
31 32 33

Un graphe orient est un graphe dont les artes ont


Lemme des poignes de mains
un sens.
La somme des degrs des sommets d'un graphe est gale deux fois
le nombre d'artes.
Albert

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

O X est lensemble des sommets du graphe et A lensemble


des artes.
Un graphe dont tous les sommets ont le mme degr est dit Denis Charles

Chaque arte du graphe incrmente de deux la somme des rgulier. Si le degr commun est k, alors on dit que le graphe
degrs. D'o le rsultat. est k-rgulier.
34 35 36
Chanes et cycles
Donner des exemples de: Graphe Connexe:
Une chane est une suite alterne de sommets et d'artes. Un graphe est connexe s'il existe pour chaque paire de sommet
Chane
La longueur dune chane est le nombre dartes qui la une chane reliant chacun des deux sommets.
composent. Longueur
Graphe non connexe
Un cycle est une chane dont les artes sont distinctes et dont Cycle V = { 1, 2, 3, 4, 5, 6 }
l'origine et l'extrmit sont confondues. Chane lmentaire E = { (1,3), (1,4), (2,3), (3,4), (5,6) }
Une chane est lmentaire si chaque sommet y apparat au plus
Chane simple
une fois. Cest un graphe 2 composantes connexes
Une chane est simple si chaque arte apparat au plus une fois.

37 38 39

Graphe partiel et sous-graphe Graphe partiel et sous-graphe


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

(G) = m n + p 0
Soit le graphe G = (V, E) Graphe partiel de G
V' = V Soit le graphe G = (V, E)
De plus, (G) = 0 si et seulement si G est sans cycles. V = {v1, v2, v3, v4, v5}
E = {e1=(v1,v2), E' = {e1, e4, e5} V = {v1, v2, v3, v4, v5} Sous-graphe de G
(G) est appel le nombre cyclomatique. e2=(v2,v3), e3=(v1,v3), E = {e1=(v1,v2), V' = {v1, v3, v4, v5}
e4=(v3,v4), e5=(v3,v5)} e2=(v2,v3), e3=(v1,v3), E' = {e3, e4, e5}
Prononcer nu de G . e4=(v3,v4), e5=(v3,v5)}
H=(Y, B) est un graphe partiel de G= (V, E) ssi Y = V et B E
40 41
H = ( Y, B ) est un Sous graphe de G= ( V, E ) si Y V et B E 42

Graphe partiel et sous-graphe Graphe partiel et sous-graphe Graphe partiel et sous-graphe

Soit le graphe G = (V, E) Soit le graphe G = (V, E) Une clique de G Soit le graphe G = (V, E)
V = {v1, v2, v3, v4, v5} V = {v1, v2, v3, v4, v5} V' = {v1, v2, v3} V = {v1, v2, v3, v4, v5} Un stable de G
Sous-graphe partiel de G E' = {e1, e2, e3} V' = {v1, v4, v5}
E = {e1=(v1,v2), V' = {v1, v2, v3, v4} E = {e1=(v1,v2), E = {e1=(v1,v2), E' = {}
e2=(v2,v3), e3=(v1,v3), E' = {e1, e4} e2=(v2,v3), e3=(v1,v3), clique un sous-graphe complet de G. e2=(v2,v3), e3=(v1,v3),
e4=(v3,v4), e5=(v3,v5)} e4=(v3,v4), e5=(v3,v5)} e4=(v3,v4), e5=(v3,v5)}
43 44 45
Matrices dincidence sommet-arc Matrices dincidence sommet-arte
Cest une matrice A, de taille n m. la matrice dincidence dun graphe non orient A est dfinie
On associe les sommets aux lignes, et les arcs aux colonnes. par:
Lcriture de cette matrice ncessite la numrotation des 1
arcs; 2
0
la matrice dincidence dun graphe orient A est dfinie par:

on parle de matrice d'incidence oriente et


de matrice d'incidence non oriente.
1
1
0
46 47 48

Matrice d'adjacence Matrice d'adjacence


Listes d'adjacences
On peut aussi reprsenter un graphe en donnant pour On peut reprsenter un graphe par une matrice
chacun de ses sommets la liste des sommets auxquels il d'adjacences.
est adjacent. M=
Une matrice (n x m) est un tableau de n lignes et m
colonnes.
listes d'adjacences du graphe G:
(i, j) dsigne l'intersection de la ligne i et de la colonne j.
1: 2, 4, 6
2: 4, 5
caractristiques: Dans une matrice d'adjacences, les lignes et les colonnes
3: 4 reprsentent les sommets du graphe.
4: 5 Elle est carre:
5: - il y a autant de lignes que de colonnes. Un 1 la position (i, j) signifie que le sommet i est adjacent
6: 2 Il n'y a que des zros sur la diagonale. au sommet j.
graphe G: Un 1 sur la diagonale indiquerait une boucle.
49 Elle est symtrique pour les graphes non orients (Mij = M
50 ji) 51

On a calcul ci-dessous les matrices M2 et M3. On a calcul ci-dessous les matrices M2 et M3.
Pour chacune de ces matrices, quoi correspondent les nombres Pour chacune de ces matrices, quoi correspondent les nombres Exercice:
obtenus? obtenus? Dcrivez les graphes ci-dessous par:
des matrices dincidences,
des matrices d'adjacences
et des listes d'adjacences.

M2 = M3 =

Thorme
Le coefficient gnral de Mk est le nombre de chemins (ou
chanes) de longueur k entre i et j.
52 53 54
Quelques types de graphes Graphe d'intervalles et graphe triangul 5. Graphes eulriens

Graphe biparti Un graphe est un graphe triangul si tout cycle de On dit qu'un graphe est eulrien s'il est possible de trouver

V = {1, 2, 3, 4, 5} longueur > 3 admet une corde, c'est dire une arte un cycle passant une et une seule fois par toutes les artes.
E = {(1,2), (1,4), (2,3), (2,5), (3,4), (4,5)} reliant deux sommets non conscutifs.
On dit qu'un graphe est semi-eulrien s'il est possible de
Soit une famille de segments (d'intervalles) d'une mme
droite du plan euclidien. 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

Proprit : le crayon (et sans passer deux fois sur le mme trait).
55
un graphe reprsentatif d'intervalles est triangul 56 57

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

58 59

Graphes hamiltoniens Thorme (Ore) Graphes planaires


Soit G = (V, E) un graphe simple d'ordre n 3.
On dit qu'un graphe est hamiltonien s'il est possible de On dit qu'un graphe est planaire si on peut le dessiner
Si pour toute paire {x, y} de sommets non adjacents, on a d(x) + d(y) n,
trouver un cycle passant une et une seule fois par tous les alors G est hamiltonien. dans le plan de sorte que ses artes ne se croisent pas.
sommets. Corollaire (Dirac)
On dit qu'un graphe est semi-hamiltonien s'il est possible de
Une carte, ou graphe planaire topologique, est une
Soit G = (V, E) un graphe simple d'ordre n 3. Si pour tout sommet x de
trouver une chane passant une et une seule fois par tous G, on a d(x) n/2, alors G est hamiltonien. reprsentation particulire d'un multi-graphe planaire
les sommets. En effet, un tel graphe vrifie les conditions du thorme prcdent. Si x et fini.
Un graphe possdant un sommet de degr 1 ne peut tre y ne sont pas adjacents, on a bien :
d(x) + d(y) n/2 + n/2 = n
On dit qu'une carte est connexe si son graphe l'est.
hamiltonien.
Problme du voyageur de commerce Une carte divise le plan en plusieurs rgions.
Si un sommet dans un graphe est de degr 2, alors les deux
Le problme du voyageur de commerce (Traveling Salesman Problem en
artes incidentes ce sommet doivent faire partie du cycle
anglais) consiste trouver le plus court cycle passant par tous les
hamiltonien. sommets dans un graphe o les artes sont pondres.
Les graphes complets Kn sont hamiltoniens. On travaille souvent sur un graphe complet.
61 62 63
Graphes planaires
Lemme Thorme (Kuratowski)
Exemple: la carte, avec six sommets et
La somme des degrs des rgions d'une carte connexe Un graphe est non planaire si et seulement si il contient un sous-
neuf artes, divise le plan en
cinq rgions (A, B, C, D, E). graphe homomorphe K3,3 ou K5.
est gale deux fois le nombre d'artes.
On remarque que quatre rgions
sont limites alors que la cinquime (E),
extrieure au diagramme, ne l'est pas. Thorme (Euler)
Le degr d'une rgion r, not d(r), est la longueur du cycle Euler a tabli une formule qui relie le nombre de
qui limite r. Dans le graphe ci-contre,
d(A) = 4, d(B) = 3, d(C) = 3, d(D) = 5, d(E) = 3. sommets S, le nombre d'artes A et le nombre de
Remarque: toute arte limite deux rgions, ou est contenue rgions R d'une carte connexe.
dans une rgion et est alors compte deux fois dans la chane
ferme. 64
S-A+R=2 65 66

Graphes orients (digraphes) Soit un graphe orient G(X, E). Listes d'adjacences
On appelle cocycle d'un sommet l'ensemble des sommets qui
Un digraphe est fortement connexe, si toute paire lui sont adjacents ou l'ensemble des arcs qui lui sont incidents.
ordonne (a, b) de sommets distincts du graphe est On note:
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 Les cocycles sont des cocycles de sommets.
sous-graphe induit maximal fortement connexe Les cocycles sont des cocycles d'arcs.
Les deuximes se rvlent beaucoup plus utiles.
(maximal signifie qu'il n'y a pas de sous-graphe induit
Pour un 1-graphe, G peut tre parfaitement dtermin par (X,
connexe plus grand contenant les sommets de la ) , notation la base dune reprsentation informatique trs
composante). 67
utilise, les listes dadjacence 68 69

graphe valu Graphes pondrs - graphes probabilistes


Exercice:
un graphe pondr, un graphe, orient ou non,
dont les artes (ou les arcs) possdent un poids.
"graphes valus", Algorithme qui renvoie la longueur minimal
"graphe probabiliste". entre 2 sommets en utilisant la matrice des
valeurs.

70 71 72
Parcours en largeur Exemple:
Parcours de graphes
1. partir d'un sommet donn, parcourir le graphe en largeur en
2. visiter tous les sommets successeurs. partant du sommet 1.
Les parcours peuvent se faire de deux sortes,
3. On rpte l'opration tant qu'il existe des sommets Le parcours en largeur de ce graphe
parcours en largeur non visits. donnerait la liste suivante :
1 2 3 4 6 5 7 8.
parcours en profondeur. Les informations prendre en compte :
Une autre solution serait la suivante:
Les graphes peuvent contenir des cycles. Un sommet dj visit ne doit pas tre revisit.
1 3 2 6 4 5 8 7.
On explore les sommets successeurs directs.
Elles sont toutes les deux valables.
Une file peut maintenir jour la liste des sommets
visiter.

73 74 75

On part du sommet 1, On recommence par le sommet 2, Pour identifier les sommets parcourus, on utilise le
On liste tous les sommets le seul successeur est le sommet 4, coloriage.
successeurs, On l'affiche et on le marque comme Gnralement, un sommet est blanc s'il n'a pas t
tant parcouru. parcouru et est noir dans le cas contraire.
Il s'agit donc des sommets
2 et 3. On passe au sommet 3, Initialisation:
Marquons les d'une couleur Son successeur est le sommet 6 Pour tous les sommets S du graphe faire
diffrente On l'affiche et on le marque S.couleur = blanc;
Le sommet 4 a deux successeurs,
le sommet 5 et le sommet 6.
On ajoutera seulement le sommet 5
la file des sommets parcourir.
76 77 78
. . .

Ajouter le sommet de dpart la file ParcoursLargeur(G : Graphe , S : Sommet ) {


F : File de sommets; Donner un parcours en largeur de ce graphe
on prend le sommet de la file et on y effectue les
Initialiser (G);
choses :
S.couleur = Noir;
parcourir la liste des successeurs Si de S : Ajouter S F;
Si Si est blanc alors Si devient noir et on ajoute Si tant que F n'est pas vide faire
la File. S = Defiler(F);
L'algorithme s'arrte donc tout naturellement pour tous les successeurs Si de S faire
lorsque la file devient vide. si (Si.couleur == Blanc ) alors
Si.couleur <- Noir;
Ajouter Si F;
fin si
fin pour
79
fin tant que } 80 81
Parcours en profondeur Parcours en profondeur
Il s'agit d'un parcours o l'on Initialiser(G);
Exercice (TP) : explore un chemin jusqu'a ce que ParcoursProfondeur( Graphe G, Sommet S) {
l'on ne puisse plus avancer.
S.couleur <- Noir;
programmer cet algorithme en utilisant la Dans ce cas, il faut rebrousser
Pour tous les successeurs Si de S faire
matrice dadjacence pour reprsenter un chemin dans notre exploration et
Si Si.couleur == Blanc alors
graphe. partir d'un sommet qui n'a pas t
visit. ParcoursProfondeur(G , Si);
Fin si
1,2,4,5,7,8,6,3 Fin Pour }
1,3,6,4,5,8,7,2

82 83 84

Composantes connexes
Exercice: utiliser les algorithmes de parcours pour dterminer
Composantes-Connexes
Drouler lalgorithme pour les les composantes connexes d'un graphe.
exemples suivants: Partir d'un sommet
Rappel : les composantes connexes d'un graphe sont
les ensembles de sommets accessibles les uns depuis S'il nest pas colori alors
les autres. choisir une couleur
on utilise l'algorithme de parcours en profondeur appliquer parcours en profondeur en
d'abord et on colorie les sommets rencontrs avec marquant les sommets avec la couleur
une couleur correspondant la composante connexe
courante.
Refaire le mme algorithme sans rcursions;
85 86 87

Les arbres
Un arbre (non orient) !

C h a p II
Fin Chap I
Les arbres
Une arborescence (oriente) !

88 89 90
Les arbres Quelques dfinitions des arbres
Thorme
Dfinitions :
Un arbre est un graphe non orient dans lequel il existe une
Les dfinitions suivantes sont quivalentes: pour tout
Dfinition 6:
et une seule chaine entre toute paire de sommets. graphe G = (V, E) n sommets.
Un graphe est connexe minimal sil est connexe et na pas
Cette chaine sera donc simple, la plus courte, . . . 1. G est un arbre, plus dartes quaucun autre graphe connexe !
2. G est connexe et sans cycles, Lide: si nous enlevons une arte de la chaine unique,
Une arborescence est un graphe orient quasi-fortement
connexe tel quil existe un et un seul chemin orient de la 3. G est connexe et comporte n-1 artes, nous cassons la connexit!
racine vers tout autre sommet.
4. G est sans cycles et comporte n-1 artes, Dfinition 7:
Dabord, il ny a quune seule racine ! 5. chaque paire {u, v} de sommets distincts est relie par Un graphe est connexe minimal sil est connexe et
une seule chane simple (et le graphe est sans boucles). comporte n-1 artes.
On na pas de chemins multiples, ni de circuits !
Dfinition 8:
Un graphe est sans cycles, maximal sil est sans cycles et na
Les arbres dalgorithmique
pas moins dartes quaucun autre graphe sans cycles !
sont des arborescences ! 91 92 93

Les arborescences Les arborescences Les arbres de recouvrement


Une arborescence peut tre caractrise comme suit. Toute arborescence peut tre transforme en un arbre !
Un arbre de recouvrement ( AR ) dun graphe G connexe est
Elle possde (n-1) arcs. Il suffit de changer les arcs en artes. un sous-graphe de G qui comporte tous les sommets

Tous les sommets sauf un ont un degr entrant unitaire. Nous aurons (n-1) artes. et qui a la proprit dtre un arbre.

Un seul sommet a un degr entrant nul. Proprits :


Nous prservons la connexit !

Tout arbre peut tre transform en une arborescence en Nous navons pas de cycles !

nous laissant le choix de la racine ! Nous avons un nombre minimal dartes !

Le choix de lAR nest pas unique en gnral !

95
94 96

Les arbres de recouvrement Les arbres de recouvrement Les arbres de recouvrement


Un arbre de recouvrement ( AR ) dun graphe G connexe est
Un arbre de recouvrement ( AR ) dun graphe G connexe est Un arbre de recouvrement ( AR ) dun graphe G connexe est
un sous-graphe de G qui comporte tous les sommets
un sous-graphe de G qui comporte tous les sommets un sous-graphe de G qui comporte tous les sommets
et qui a la proprit dtre un arbre.
et qui a la proprit dtre un arbre. et qui a la proprit dtre un arbre.

Proprits :
Proprits : Proprits :
Nous prservons la connexit !
Nous prservons la connexit ! Nous prservons la connexit !
Nous navons pas de cycles !
Nous navons pas de cycles ! Nous navons pas de cycles !
Nous avons un nombre minimal dartes !
Nous avons un nombre minimal dartes ! Nous avons un nombre minimal dartes !
Le choix de lAR nest pas unique en gnral !
Le choix de lAR nest pas unique en gnral !
Un arbre de Un arbre de
Un autre arbre recouvrement ! recouvrement !
de recouvrement !
Un autre arbre
97 98
de recouvrement ! 99
Arbre de poids minimal ou arbre de recouvrement minimal Algorithme de Kruskal Algorithme de Kruskal
Problme : 1. Trier les arcs en ordre croissant de poids ;
1. Trier les arcs
Tracer larbre le plus court qui touche 2. Construire un arbre en slectionnant les arcs
tous les nuds, c--d. minimiser la selon lordre tabli ltape 1. { (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2),
longueur totale des arcs contenus dans (5,6),(4,6) }
larbre.
1. Algorithme de Kruskal;
2. Algorithme de Prim

100 101 102

Algorithme de Kruskal Algorithme de Kruskal Algorithme de Kruskal


On value (3,4) : On value (3,4) :
2. Construire un arbre T = { } { (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6) { (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6)
} }
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), T= { (3,4) } T= { (3,4) }
(5,6),(4,6) }

103 104 105

Algorithme de Kruskal Algorithme de Kruskal Algorithme de Kruskal


On value (2,4) : On value (4,5): On value (2,3):
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6) { (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(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)} T= { (3,4), (2,4), (4,5) } T= { (3,4), (2,4), (4,5) }

106 107 108


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

109 110 111

Algorithme de Kruskal Algorithme de Kruskal Algorithme de Prim


On value (5,6): On value (4,6): 0. Initialiser T={}, S={} et W= V (sommets)
{ (3,4), (2,4), (4,5),(2,3), (1,3) ,(3,5), (1,2), (5,6) ,(4,6) { (3,4), (2,4), (4,5), (2,3), (1,3) , (3,5), (1,2), (5,6), 1. Choisir un nud i W, poser S = { i } et W = W \ { i
} (4,6)} }
T= { (3,4), (2,4), (4,5), (1,3), (5,6) } T= { (3,4), (2,4), (4,5), (1,3), (5,6) } 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.
112 113 114

Algorithme de Prim Algorithme de Prim Algorithme de Prim


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

115 116 117


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

118 119 120

Algorithme de Prim Algorithme de Prim Algorithme de Prim


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

121 122 123

Algorithme de Prim Algorithme de Prim Algorithme de Prim


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

124 125 126


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

127 128 129

Thorme sur les coupes Thorme sur les coupes Thorme sur les coupes
Un arbre T* est un arbre de poids minimal, si
et seulement si il satisfait la condition Ici on a (i, j) = (2,4) et Poids de T* = (24 + 4)
(k, l) {(2,4), (3,4), (3,5)}
doptimalit suivante sur les coupes : (24 + 6) units
(24 + 7) units
(i, j) T* , ci,j ck,l pour chaque (k, l)
appartenant la coupe obtenue de llimination
de larc (i, j) de T*.

130 131 132

Thorme sur les coupes Thorme sur les coupes 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.

133 134 135


Thorme sur les chemins Thorme sur les chemins Thorme sur les chemins

136 137 138

Problme du Plus courts chemins


Chap III tant donn un Graphe valu: G = (S,A,v) avec valuation
v:AR
Source du graphe : s S

Fin Chap II Le Problme du Plus Problme: pour tout t S calculer


(s, t) = min { v(c) ; c chemin de s t } {+}
Exemple:
courts chemins
3 8
5 Cots a
5
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
139 140 3 3 4 9 141

Existence Proprits de base


Arbres de plus courts chemins
Proposition Proprit 1 : G = (S, A, v)
Arbres de racine s pour tout t S (s, t) > - soit c un plus court chemin de p r dont lavant-
les branches sont des chemins de cot minimal
ssi dernier sommet est q
le graphe na pas de circuit de cot < 0 Alors (p, r) = (p, q) + v(q, r)
3 8 3 8
a
5
b a
5
b accessible depuis s p
q
3 3 r
0 5 0 5
s 1 1 s 1 1 5
1 3 1 3 a b
5 5 3
c
5
d c
5
d
5 Proprit 2 : G = (S, A, v)
s 1 1
1 -3
3 4 9 3 4 9 5 soit c un chemin de p r dont lavant-dernier
c 5 d sommet est q
142
3 143 Alors (p, r) (p, q) + v(q, r) 144
Relaxation Algorithme de Dijkstra Exemple 1:
Calcul des (s, t) par approximations successives t S

d(t) = estimation de (s, t) Condition : v(p, q) 0 pour tout arc (p, q) a
5
b
(t) = prdcesseur de t : avant-dernier sommet dun 0
3 S={s,a,b, c, d }
dbut 5
chemin de s t ayant pour cot d(t) s 1 1 Q={s,a,b, c, d }
1 3
INIT; 5 d = {0 , , , , }
Initialisation de d et QS; // lensemble de Sommets c
5
d = {nil , nil , nil ,nil ,nil }
INIT tant que Q faire { 3
pour chaque t S faire
q MINd (Q) ; Q Q - {q } ;
{ d(t) ; (t) nil;} 3
d(s) 0; pour chaque r successeur de q faire a 5 b
3
d(r) RELAX(q, r) ; 0 5 S={s,a,b, c, d }
Relaxation de larc (q, r) } s 1 1 Q={ a,b,c, d }
s q r 1 3
RELAX(q, r) 5
d = {0, 3, , 5 , }
si d(q) + v(q, r) < d(r) alors d(q) fin 5
c d = {nil , s , nil ,s , nil }
{ d(r) d(q) + v(q, r) ; (r) q ; } 145 146 3 5 147

Exemple 1 suite: Exemple 1 suite: Exemple 1 suite:


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

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

Implmentation Exemple 2 Algorithme de Bellman-Ford


Si |S| = n et |V| = m Lalgorithme de DIJKSTRA MOORE ne permet pas de
Par matrice d'adjacence considrer les arcs ngatifs, car une fois quun sommet est
temps global O(n2) marqu on ne peut changer ce marquage lors des itrations
suivantes. fixation dtiquettes.
Par listes de successeurs On considre donc ici un algorithme qui permet un
Q : file de priorit (tas) marquage qui nest pas dfinitif tant que le programme nest
n oprations MINd O( n . log (n)) pas dtermin (le marquage est modifi itrativement).
m oprations RELAX O((m). log (n)) correction dtiquettes.
temps global O ((n + m) . log (n)) L algorithme de BELLMAN-FORD est valable pour des
graphes sans circuit, valus par des longueurs quelconques.
151 152 153
Initialisation : n = nombre de sommets de G
Notations : = tableau initialis 0 Exemple 1
d = tableau des distances initialis + (sauf d(s) = 0)
3 8
W = matrice des poids des arcs ( si larc nexiste pas) a
5
b a
5
b
S = Lensemble de n sommets est numrot de 1 n. Traitement : k = 1 3 3
0 5 0 5
(p) = Sommet prcdant p sur le plus court chemin de tant que k n et il y a eu des modifications ltape prcdente s 1 -1 -1 3
s 1 -1 -1 3
pour tout sommet x faire 5 5
lorigine p. 5 5
pour tout y successeur de x faire c d c d
d = Plus courte distance de lorigine aux autre sommets. si d(x) +W(x, y) < d(y) alors -3 -3 4 7
d(y) = d(x) +W(x, y)
(y) = x
tape 1 relaxation de tous les arcs dans lordre :
fin (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s)
fin
fin
k=k+1
154
Fin Temps : O( n . m ) 155 156

Exemple 1 (suite) Exemple 2 Exemple 2 (suite)


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

tape 2 relaxation de tous les arcs dans lordre : tape 1 relaxation de tous les arcs dans lordre : 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) (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) (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 158 159

Exemple 2 (suite) Exemple 2 (suite) Graphes acycliques


3 4 3 2 3 2 3 0
a
5
b a
5
b a
5
b a
5
b Tri topologique
3 3 3 3
0 5 0 5 0 5 0 5
s 1 1 s 1 1 s 1 1 s 1 1
5
1 -3
5
1 -3 5
1 -3
5
1 -3 Thorme: Soit G(X; A) un graphe a
-6
b
3
c
5
d c
5
d c
5
d c
5
d
orient sans circuit. G possde un 5
3 4 7 3 4 5 3 4 5 3 4 3 tri topologique, c'est dire un ordre s
5
-1 -1
(x1; x2; ; xn) sur les sommets tel 5
c d
tape 3 relaxation de tous les arcs dans lordre : tape 4 relaxation de tous les arcs dans lordre : que tous les arcs de G sont orients -3
(s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) dans le sens croissant de l'ordre :
rduction possible : cycle de cot ngatif pour tout arc (xi , xj) A ,
on a xi < xj.
160 161 162
Graphes acycliques Exemple Calcul des cots
5
Aucune condition : pour tout arc (p, q), v (p, q) R -6
Calcul aprs ordre topologique a b -1
0
3 5 3
5 c s a -6 b -1 d
s -1 -1
dbut 5 -3 5
INIT; 5 Ordre topologique 5
c d c, s, a, b, d
pour chaque q S en ordre topologique faire -3 Examen de c
-1
0
pour chaque r successeur de q faire c 5 s 3 a -6 b -1 d
RELAX(q, r) ; 5
-1 -3 5
Fin 5
c 5 s 3 a -6 b -1 d
-1
0 3 -3
Temps : O(|S |+ |A|) Examen de s 5 3
-3 5 c s a -6 b -1 d
chaque sommet et chaque arc est examin une fois
-3 5
163 164 165

Calcul des cots (suite) Cycle et circuit Exemples


Un cycle est une chane telle que : C1 = (1,5,4) est un cycle
5
le mme arc ne figure pas deux fois dans la squence ; lmentaire de longueur 3
-1
0 3 -3 -3
Examen de a c 5 s 3 a -6 b -1 d les deux sommets aux extrmits de la chane concident. C2 = (1,2,7,9,8,3) est un
Un cycle lmentaire est un cycle ne rencontrant pas cycle lmentaire de longueur 5
-3 5
5
deux fois le mme sommet (except le sommet initial (1,5,6,2,5,4) n'est pas un cycle
-1 qui concide ncessairement avec le sommet final).
Examen de b
0 3 -3 -4 C3 = (3, 4, 9, 7, 6. 8) est un cycle
c 5 s 3 a -6 b -1 d de longueur 7 qui n'est pas lmentaire
-3 5

Examen de d inutile

166 167 168

Notation Vectorielle On peut donc assimiler un cycle


un vecteur et dfinir la somme
Les arcs du graphe tant numrots de 1 m, on peut faire Exemples : (vectorielle) de 2 ou plusieurs
correspondre tout cycle un m-uplet (un "vecteur") compos cycles.
de -1, 1 et 0 de la manire suivante : C1 = (1,5,4)
C1 = (1, 0, 0, -1, 1, 0, 0, 0, 0) Exemple : C3 = (3, 4, 9, 7, 6. 8)
Si l'arc n'appartient pas au cycle, on met un "0"
C2 = (1,2,7,9,8,3) est la somme du cycle
Si l'arc appartient au cycle et est parcouru dans le bon sens (on (3,4,8) et du cycle (9,7,6).
C2 = (1, 1, 1, 0, 0, 0, 1, 1, 1)
le qualifie alors de "direct"), on met un +1
C3 = (3, 4, 9, 7, 6. 8) (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)
Si l'arc appartient au cycle mais parcouru dans le mauvais sens
(on le qualifie alors de "inverse"), on met un -1 et C3 = (0, 0, 1, 1, 0, -1, -1, 1, -1) Proprits:
Tout cycle est la somme de cycles lmentaires sans arc
commun.

169 170 Un cycle est lmentaire si et seulement s'il est minimal.


171
Proprit : Soit un graphe G d'ordre n (n sommets) avec m Exemple : En rutilisant le graphe ci-dessus, si A = {b, e}
On peut donc dfinir une base de cycles (au sens vectoriel) arcs et p composantes connexes: (G) = m - n + p . (A) = {-1 , +2 , -4 , +6 , +8 , -9}
comme tant
Dfinition: Soit A un ensemble de sommets du graphe, on
une famille de cycles libre (tous les cycles indpendants, aucun appellera cocycle associ A, qu'on notera (A), On peut, bien sr appliquer la notation vectorielle dfinie pour
ne peut se dfinir comme combinaison linaire des autres) l'ensemble des arcs incidents A, ceux qui quittent A les cycles, aux cocycles;
seront nots positivement et ceux qui pointent vers A seront on obtiendrait pour l'exemple ci-dessus le vecteur :
et gnratrice (tout cycle peut s'crire comme combinaison
linaire des cycles de la famille). nots ngativement. (-1,1,0,-1,0,1,0,1,-1).

Le Cardinal (Nombre d'lments) commun de toutes les bases Un cocycle c'est donc l'ensemble des arcs qui relient A aux
de cycles sera appel nombre cyclomatique et not . autres sommets du graphe; si on enlve les arcs du cocycle
on "dconnecte" A.
Cycle et cocycle sont des notions duales.

172 173 174

Dfinition : Un cocycle sera dit Le Cardinal (Nombre d'lments) commun de toutes les bases
lmentaire quand il est compos de cocycles sera appel nombre cocyclomatique et not
d'arcs reliant deux sous-ensembles
Soit un graphe G d'ordre n (n sommets) avec p composantes
de sommets connexes qui partitionnent
connexes: (G) = n - p.
une composante connexe du graphe
(donc tous les sommets en cas de

Et 3!
graphe connexe). Exercice:
1) Dterminer tous les cycles lmentaires
Le cocycle donn dans l'exemple n'est pas lmentaire parce 2) Extrayez-en une base
qu'il est compos d'arcs reliant {b, e} {a, c, d, f}
3) Dterminer tous les cocycles
{b,e} est connexe, lmentaires
ce n'est pas le cas de {a, c, d, f}. 4) Extrayez-en une base

Le cocycle associ {a, b, d} dont la notation vectorielle est


(0, 1, 0, 1, 1, 0, 0, -1, 0) est lmentaire. 175 176 177

PROBLEME DE FLOTS Les rseaux de transports

C h a p IV 1. Les rseaux de transport


Rseau de transport : graphe orient avec pour chaque arc une
capacit.
La capacit c(a) est un entier positif ou nul.
2. Le flot maximum et la coupe minimum
Il y a aussi une source s et un puits t.
Rseaux de flots 3. L'algorithme de Ford et Fulkerson
Aucun arc n'arrive la source

Problme du flot maximum Et aucun arc ne quitte le puits.

Rseau de transport avec


les capacits
178 179 180
Conservation du flot: Quand deux arcs en sens inverse relient deux sommets, on
Un flot est une fonction entire positive ou nulle f dfinie
pour tout sommet autre que s et t, la somme des flots sur peut toujours annuler la fonction flot sur l'un des deux.
sur les arcs satisfaisant : les arcs entrants et la somme des flots sur les arcs sortants
sont gales. Proprit :
Contrainte de capacit: f(a) c(a) ;
la somme des flots sur les arcs sortant de source et la somme
Pour le graphe si dessous: 11 16, 8 13, 0 10, 12 12 , , 4 4 Exemples : circuits lectriques ou hydrauliques, rseaux des flots sur les arcs arrivant au puits sont gales ; cette
de communication, modlisation de transports
valeur est la valeur du flot | f | ;
Sommet A : 11+1 = 12 + 0 , sommet C: 12+7=4+15

Un flot sur le rseau de


transport Un flot sur le rseau de
Un flot sur le rseau de transport
transport
181 182 183

Une coupe est une partition de l'ensemble des sommets en 2 Proprit : La deuxime proprit est donc que le flot net traversant une
parties disjointes, l'une contenant la source et l'autre le puit: Le flux de E F dans un flot f est : f (E, F ) f (u )
uExF coupe ne dpend pas de la coupe.
EF=A, EF= ; sE, tF et le flux orient de la coupe (E , F) ou ( flot net traversant la coupe )
est: Tout flot a pour valeur Vf = f( {s}, X\{s} ) = ( {s}, X\{s} ).
| f | ( E , F ) f ( E , F ) f ( F , E )
Lemme: Plus gnralement Vf = ( E, F) pour toute coupe.
La capacit C(E, F) d'une coupe est la somme des capacits des C(E, F) = 12+14 = 26
arcs de E a F. | f | est infrieur la capacit de n'importe quelle coupe.
f(E, F) = 12+11 = 23
(E, F) = | f | = (12+11) - 4 = 19

Un flot sur le rseau de Un flot sur le rseau de


transport transport
Un flot sur le rseau de
transport
C(E, F) = 26 184 185 | f | = (12+7+4) 4 = 19 186

Le flot maximum et la coupe minimum pour chaque arc a = uv, f(a) c(a), on peut augmenter le flot Le graphe orient avec ces capacits est le rseau rsiduel.
Il existe toujours un flot possible qui est le flot nul. de c(a) - f(a), et on peut le diminuer de f(a), donc faire passer
On cherche un chemin de s t dans le rseau rsiduel.
un flot f(a) sur un arc -a = vu. Si cet arc existe dj avec une
Problme : comment trouver un flot qui a la valeur maximum ?
capacit c(-a), celle-ci s'ajoute f(a). Il correspond une possibilit d'amlioration du flot en modifiant
Recherche d'un chemin amliorant.
de la valeur du minimum des capacits rsiduelles sur le chemin.
Dterminer le rseau rsiduel :
Le flot
Un flot est satur si sur tout chemin de s a t il existe un arc a
tel que f(a) = c(a).

Le rseau rsiduel Le rseau rsiduel


correspondant
187 188 189
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 ;
Un chemin amliorant 3. Il existe une coupe E/F dont la capacit vaut | f |.
Le nouveau rseau rsiduel

Remarque :
Dans ce rseau, il n'y a pas de chemin de s t, donc pas de
La condition 3. implique que | f | est la valeur minimum des
chemin amliorant. capacits des coupes du rseau, puisqu'on sait dj que | f | est
infrieur la capacit de n'importe quelle coupe.
Le flot aprs amlioration
Valeur du flot maximal = Capacit de la coupe minimale.
190 191 192

L'algorithme de Ford et Fulkerson


Variantes et applications : Valeur de ce flot?
Parfois, il y a plusieurs sources et plusieurs puits.
o On part d'un flot quelconque (ventuellement nul) ;

o On fabrique le rseau rsiduel ; On peut dans ce cas rajouter une "super-source" et un "super-
puits" relis respectivement aux sources et aux puits par des arcs
o On cherche un chemin amliorant ;
de capacit infinie.
o On itre jusqu' ce qu'on ne trouve plus de tel chemin.

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

193 194 195

Flot maximum?

196

S-ar putea să vă placă și