Title: Thorie des graphes
1Théorie des graphes
2Plan du cours
- Que peut-on faire avec la théorie des graphes ?
- Concepts généraux en théorie des graphes
- 2. Le problème du plus court chemin
- 3. Flots et réseaux de transport
3 Le problème du plus court chemin
- Définition
- Exemples de formulation avec pcch
- Graphes sans circuit
- Graphes à valuations quelconques
- - Algorithme de Ford
- - Algorithme de Bellman-Kalaba
- Graphes à valuations positives
- Algorithme de Moore-Dijkstra (1959)
4Graphe orienté valué
- Un graphe orienté valué G est défini par
- Un ensemble de sommets X.
- Un ensemble darcs U ? X2.
- Une valuation V U ? R qui à chaque arc du
graphe associe une valeur réelle (longueur,
poids..).
5Exemple de graphe orienté valué
7
a
d
4
2
3
f
e
1
4
3
5
1
c
b
6Le problème du plus court chemin Définition
7Le problème du plus court chemin Exemples
- Exemple 1 Construire une autoroute entre deux
villes A et K - Arcs tronçons possibles de lautoroute
- Valuation des arcs peut être
- coût de réalisation correspondant
- longueur du trajet
8Le problème du plus court chemin Exemples
- Exemple 2 Chemin le plus fiable dans un réseau
de télécommunication - Arêtes liens physiques
- Valuation des arêtes (i,j) est pij fiabilité du
lien (la probabilité pour que le lien fonctionne) - La fiabilité dun chemin est le produit des
probabilités des liens qui le constituent - Le problème devient un problème de pcch en
remplaçant chaque probabilité par aij - log pij
9Le problème du plus court chemin Exemples
- Exemple 3 Problème de sac à dos
- Un sac à dos de capacité b
- n objets j1n
- aj poids de lobjet j
- pj profit de lobjet j
- Objectif déterminer un sous ensemble dobjets
de profit maximal respectant la capacité du sac.
Maximiser ?j pjxj s.c. ?j aj xj ? b avec xij
1 si lobjet est choisi et 0 sinon
10Le problème du plus court chemin Exemples
- Exemple 3 Problème de sac à dos
- n(b1) sommets notés j(k), j1,2,,n et k0,1,,b
- Un sommet origine s et un sommet destination t
- Un sommet j(k) a deux arcs entrants (sils
existent) - Un arc de (j-1)(k) valué par 0
- Un arc de (j-1)(k-aj) valué par pj
- Deux arcs de s vers 1(0) et 1(a1) valués par 0 et
p1 - Un arc de valuation 0 entre chaque sommet n(k) et
t - Un chemin de s à j(k) correspond a un sous
ensemble des j premiers objets dont le poids
total est égal à k. La longueur du chemin est la
valeur du sous ensemble
11Algorithme de Ford
Chemin de poids minimal
Initialisation ?1 0 ? j ?1 ?j 8
?j ?i wij
- (xi , xj) ? U
- ?j gt ?i wij
FIN
OUI
NON
12Algorithme de Ford
Chemin de poids maximal
Initialisation ?1 0 ? j ?1 ?j - 8
?j ?i wij
- (xi , xj) ? U
- ?j lt ?i wij
FIN
OUI
NON
13Algorithme de Bellman-Kalaba
Chemin de poids minimal
Initialisation k 0 ?1(k) 0 ? j ? 1 ?j(k)
8
- k k 1
- ?1(k) 0 ? j ? 1 ?j(k) min ?i(k-1) wij
FIN
NON
OUI
14Algorithme de Bellman-Kalaba
Chemin de poids maximal
Initialisation k 0 ?1(k) 0 ? j ? 1 ?j(k)
- 8
- k k 1
- ?1(k) 0 ? j ? 1 ?j(k) max ?i(k-1) wij
FIN
NON
OUI
15Algorithme de Dijkstra
- détermine les plus courts chemins d'un sommet x1
à tous les autres sommets d'un graphe G (X,U).
Il suppose que les longueurs sur les arcs sont
positives ou nulles. L'idée de cet algorithme est
de partager les sommets en deux groupes ceux
dont on connaît la distance la plus courte au
sommet x1 (ensemble D) et ceux dont on ne connaît
pas cette distance. On part avec x1 dans D et
tous les autres sommets nappartenant pas à D.
Tous les sommets ont une distance infinie
(p(x)  oo) avec le point x1, excepté le point
x1 lui-même qui a une distance nulle (p(x1)  0).
A chaque itération, on choisit le sommet x qui a
la plus petite distance au sommet x1 . Ce sommet
est déplacé dans D. Ensuite, pour chaque
successeur y de x, on regarde si la distance la
plus courte connue jusque là entre x1 et y ne
peut pas être améliorée en passant par x. Si
c'est le cas, p(y) est modifiée. Ensuite, on
recommence avec un autre sommet.
16Chemin de poids minimal
Algorithme de Dijkstra
Initialisation D x1 ?1 0 ? j ? 1 ?j
w1j
?k min ?j ? xj ? D D D ? xk ?j
min ?j , ?k wkj ? xj ? D
xn ? D
FIN
NON
OUI
17Chemin de poids minimal
Obtention du chemin à partir des poids minimaux
Initialisation xk xn C ( xn )
Chercher xj ? X ?k ?j wjk xk xj C (
xk , C )
xk x1
FIN
NON
OUI