Vous êtes sur la page 1sur 36

Optimisation Numérique

Éléments de la théorie des graphes

Master Énergétique et Systèmes Propulsifs

Présenté par: Dr. BELLOULA Amar

Janvier 2019
Introduction

Graphe d’une relation

1
Soit la relation R sur {1, 2, 3, 4, 5, 6} définie par:
6 2

x R y si est seulement si x |y : x devise y 5 3

Graphe orienté

2 Un graphe orienté G est un couple


G = (S, A), avec:
1 3
S est un ensemble fini de sommets.
A est un ensemble de couples de
S = {1, 2, 3}. sommets appelés arcs.
A = {(1, 2), (2, 3)}.
Optimisation Janvier 2019 2 / 25
Introduction

Graphe d’une relation symétrique

1
Soit la relation R sur {1, 2, 3, 4, 5, 6} définie par:
6 2
x R y ssi x et y sont premier entre eux
5 3

4
En réalité:

1 2

est un raccourci de dessin pour:

1 2

Optimisation Janvier 2019 3 / 25


Introduction

Graphe non orienté

Un graphe non orienté G est un couple 2


G = (S, A), avec:
S est un ensemble fini de sommets. 1 3
A est un ensemble de paires de sommets
appelés arêtes. équivalent à
A = {(1, 2), (2, 1), (2, 3), (3, 2)}.

Boucles, graphes simples, multigraphes

Une boucle:
On parle de multigraphe (orienté ou non orienté) si on autorise plusieurs arêtes
(ou arcs) entre deux sommets (arêtes multiples).

On appelle graphe simple un graphe sans arêtes (ou arcs) multiples.

Optimisation Janvier 2019 4 / 25


Introduction

Degré d’un sommet, voisinage


1 Cas non orienté:
Si {u, v } est une arête, u et v sont voisins.
Le degré d’un sommet u, noté d(u), est le nombre de voisins de u (nb: les
boucles comptent en double).
On note ∆(G) le degré maximum de G, et δ(G) le degré minimum de G.
2 Cas orienté:
Si {u, v } est un arc, u est un prédécesseur de v et v est un successeur de u,
u et v sont voisins.
Le nombre de prédécesseur de u est de degré entrant de u, noté d − (u), le
nombre de successeur de u est le degré sortant de u, noté d + (u).
le nombre de voisins de u est le degré de u, noté d(u): d(u) = d − (u) + d + (u).

Optimisation Janvier 2019 5 / 25


Introduction

Degré d’un sommet, voisinage

Exemples

u 
 d(u) = 5
∆(G) = 5
δ(G) = 2

 −
 d (u) = 2
d + (u) = 4
d(u) = 6

u

Optimisation Janvier 2019 6 / 25


Introduction

Degré d’un sommet, voisinage


Pour tout graphe G, la somme des degrés des sommets de G est égale à deux
fois le nombre d’arêtes de G.
Pour tout graphe G, la somme des degrés entrants des sommets de G est égal
à la somme des degrés sortants des sommets de G et au nombre d’arcs de G.

2 + 5 + 2 + 3 = 2 × 6 = 12

Optimisation Janvier 2019 7 / 25


Introduction

Chemins, cycles et circuits


Un chemin de longueur k dans un graphe no orienté est une suite de
(k + 1) sommets u1 , u2 , . . . , uk+1 , telle que pour tout i, 1 ≤ i ≤ k, ui ui+1 est
une arête (longueur=nombre d’arêtes).
Si tous les sommets sont distincts, le chemin est élémentaire.
Si u1 = uk+1 , le chemin est un cycle.

1 2
12232412 est un chemin
123 est un chemin élémentaire
12243241 est un cycle
2342 est un cycle élémentaire
4 3

Optimisation Janvier 2019 8 / 25


Introduction

Chemins, cycles et circuits


Une chaîne de longueur k dans un graphe no orienté est une suite de
(k + 1) sommets u1 , u2 , . . . , uk+1 , telle que pour tout i, 1 ≤ i ≤ k, ui ui+1 est
un arc (longueur=nombre d’arcs).
Chemin de longueur k: ui ui+1 est un arc pour tout i.
Circuit: chemin de tel que u1 = uk+1 .

3 4
322524 est une chaîne
1243 est une chaîne élémentaire
2
34223 est une chemin chaîne
2342 est un circuit élémentaire

1 5

Optimisation Janvier 2019 9 / 25


Introduction

Connexité
Un graphe non orienté est connexe si pour tous sommets u et v il existe un
chemin allant de u à v .

Figure: Non connexe


Figure: Connexe

Un graphe orienté est connexe (resp. fortement connexe) si pour tous sommets
u et v il existe une chaîne (resp. un chemin) allant de u à v .

Figure: Pas fortement connexe Figure: Fortemment connexe

Optimisation Janvier 2019 10 / 25


Introduction

graphes est valués, étiquetés


Un graphe est valué si on associe des valeurs à ses arcs(ou arêtes).
Un graphe est étiqueté si on associe des étiquettes à ses sommets.

Alger
8 5

Oran 11 Constantine

3 2
Djelfa

Optimisation Janvier 2019 11 / 25


Introduction

Types particuliers de graphes

Figure: Un chemin
Figure: Un cycle Figure: Un arbre

Un graphe est complet si tous ses sommets sont reliés deux à deux.

K1
K3

K2 K4

Un graphe complet orienté (antisymérique) est un tournoi.

Optimisation Janvier 2019 12 / 25


Introduction

Types particuliers de graphes


Un graphe est planaire s’il peut être dessiné (sur le plan ou la sphère) sans que
ses arêtes se croisent.

X Y X Y
Figure: Graphe biparti Figure: Graphe biparti complet

Optimisation Janvier 2019 13 / 25


Introduction

Listes, arbres, . . . , graphes!


Ce sont des généralisations successives:

liste:

arbre:

graphe orienté:

Optimisation Janvier 2019 14 / 25


Représentation des graphes Matrice d’adjacence

Matrice d’adjacence
À tout graphe G, orienté ou non, on peut associer sa matrice d’adjacence
Ma = Ma (G). Cette matrice est une matrice carrée dont les éléments sont définis
par:

1, s’il existe un arc (ou une arête) allant de i vers j.
Ma (i, j)
0, sinon.
Si le graphe G est non orienté, la matrice Ma (G) est symétrique.

a b c d
a b a 0 1 1 0

0 1 1 0

b 1 1 1 0  1 1 1 0 
Ma = 
 1

c 1 1 0 1 1 0 1 
d 0 0 1 0 0 0 1 0
c d

Optimisation Janvier 2019 15 / 25


Représentation des graphes Matrice d’adjacence

Matrice d’adjacence

a b c d
a b 
0 1 0 0

a 0 1 0 0
b 0 0 1 0  0 0 1 0 
Ma = 
 1

c 1 0 0 1 0 0 1 
c d 0 0 0 0 0 0 0 0
d

Propriété
Soit G un graphe, orienté ou non, et Ma sa matrice d’adjacence. La puissance
k ième Mak de la matrice Ma est telle que l’élément Mak (i, j) correspond au nombre
de chemins de longueur k allant de i vers j.
   
0 1 1 0 0 2 1 1 1 0
a b  1 0 1 0 0   1 2 1 1 0 
Ma2 = 
   
Ma = 
 1 1 0 1 0 
  1 1 3 0 1 

 0 0 1 0 1   1 1 0 1 0 
e
c 0 0 0 1 0 0 0 1 0 1
d
Optimisation Janvier 2019 16 / 25
Représentation des graphes Matrice d’adjacence

Propriété
Regardons, par exemple, les chemins de longueur 2 issus du sommet 2 (3ème ligne
de la matrice Ma2 ):
1 chemin de c vers a: cba.
1 chemin de c vers b: cab.
3 chemins de c vers c: cac, cbc et cdc.
aucun chemin de c vers d.
1 chemin de c vers e: cde.

a b

e
c d

Optimisation Janvier 2019 17 / 25


Représentation des graphes Liste d’adjacence

Liste d’adjacence
Une autre façon classique de représenter un graphe est d’associer à chaque
sommet la liste de ses voisins (graphe non orienté) ou de ses successeurs (graphe
orienté). Généralement, ces listes sont triées par ordre croissant.

a b a −→ b, c.
b −→ a, b, c.
c −→ a, b, d.
c d d −→ c.

a b a −→ b.
b −→ c.
c −→ a, d.
c d d −→.

Optimisation Janvier 2019 18 / 25


Plus court chemin Objectif

Objectif
Soit un graphe étiqueté et valué par des nombres. Quel est le chemin le plus court
pour aller d’un nœud A à un nœud B?
Plusieurs algorithmes: Dijkstra, Floyd, Bellman-Ford, etc.

18
B C
6 5 9
7
18 8
A D G H
11 4
14
13
19
E F

Optimisation Janvier 2019 19 / 25


Plus court chemin Objectif

Dijkstra
E. W. Dijkstra a proposé en 1959 un algorithme qui permet de déterminer le plus
court chemin entre deux sommets d’un graphe connexe pondéré (orienté ou non)
dont le poids lié aux arêtes est positif.
L’algorithme dû à Dijkstra est basé sur le principe suivant:
Si le plus court chemin reliant le sommet de départ s0 à un autre sommet S
passe par les sommets s1 , s2 , . . . , sk alors, les différentes étapes sont aussi les
plus courts chemins reliant A aux différents sommets si .
On construit de proche en proche le chemin cherché en choisissant à chaque
itération de l’algorithme, un sommet si du graphe parmi ceux qui n’ont pas
encore été traités, tel que la longueur connue provisoirement du plus court
chemin allant de s0 à si soit la plus courte possible.
L’algorithme comporte une phase d’initialisation. À chaque sommet on
attribue un poids qui vaut 0 pour le sommet de départ et infini pour les
autres sommets.

Optimisation Janvier 2019 20 / 25


Plus court chemin Objectif

A B C D E F G H Fixés
0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ A(0)
On affecte le poids 0 au sommet origine A et on attribue
provisoirement un poids ∞ aux autres sommets.
Le sommet A de poids 0 est sélectionné.
7(A) ∞ ∞ 14(B) ∞ ∞ ∞ B(7)
Le sommet A de poids 0 ayant été sélectionné, on marque
provisoirement les sommets B (0 + 7 < ∞) et E (0 + 14 < ∞)
adjacents à A.On sélectionne le sommet B de poids minimal.
Le prédécesseur de B est A.
15(B) ∞ 14(A) ∞ ∞ ∞ E(14)
B de poids 7 ayant été sélectionné, on marque provisoirement
le sommet C (7 + 8 < ∞) adjacent à B.
On sélectionne le sommet E de poids minimal.
Le prédécesseur de E est A.
15(B) ∞ 33(E ) ∞ ∞ C(15)
E de poids 14 ayant été sélectionné, on marque provisoirement
le sommet F (14 + 19 < ∞) adjacent à E.
On sélectionne le sommet C de poids minimal.
Le prédécesseur de C est B.
Optimisation Janvier 2019 21 / 25
Plus court chemin Objectif

A B C D E F G H Fixés
0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ A(0)
7(A) ∞ ∞ 14(B) ∞ ∞ ∞ B(7)
15(B) ∞ 14(A) ∞ ∞ ∞ E(14)
15(B) ∞ 33(E ) ∞ ∞ C(15)
21(C) 33(E ) ∞ ∞ D(21)
C de poids 15 ayant été sélectionné, on marque provisoirement
le sommet D (15 + 6 < ∞) adjacent à C.
On sélectionne le sommet D de poids minimal.
Le prédécesseur de D est C.
33(E)
∞ ∞ F(32)
32(D)
D de poids 21 ayant été sélectionné, on marque provisoirement
le sommet F (21 + 11 < 33) adjacent à D.
On sélectionne le sommet F de poids minimal.
Le prédécesseur de F est D.

Optimisation Janvier 2019 22 / 25


Plus court chemin Objectif

A B C D E F G H Fixés
0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ A(0)
7(A) ∞ ∞ 14(B) ∞ ∞ ∞ B(7)
15(B) ∞ 14(A) ∞ ∞ ∞ E(14)
15(B) ∞ 33(E ) ∞ ∞ C(15)
21(C) 33(E ) ∞ ∞ D(21)
33(E)
∞ ∞ F(32)
32(D)
36(F) 45(F ) G(36)
D de poids 32 ayant été sélectionné, on marque provisoirement
les sommets G (32 + 4 < ∞) et E (32 + 13 < ∞)
adjacent à F. On sélectionne le sommet G de poids minimal.
Le prédécesseur de G est F.
45(F)
H(44)
44(G)
G de poids 36 ayant été sélectionné, on marque provisoirement
le sommet H (36 + 8 < 45).
On sélectionne le sommet H de poids minimal.
Le prédécesseur de H est G.

Optimisation Janvier 2019 23 / 25


Plus court chemin Objectif

A B C D E F G H Fixés
0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ A(0)
7(A) ∞ ∞ 14(B) ∞ ∞ ∞ B(7)
15(B) ∞ 14(A) ∞ ∞ ∞ E(14)
15(B) ∞ 33(E ) ∞ ∞ C(15)
21(C) 33(E ) ∞ ∞ D(21)
33(E)
∞ ∞ F(32)
32(D)
36(F) 45(F ) G(36)
45(F)
H(44)
44(G)

Dijkstra
L’algorithme de Dijkstra fournit les longueurs des plus courts chemins du
sommet origine aux différents sommets.
Pour déterminer le plus court chemin du sommet origine à un sommet x , il
suffit de remonter la liste des prédécesseurs en partant du sommet x .

Optimisation Janvier 2019 24 / 25


Plus court chemin Objectif

Dijkstra
8
B C
6 5 9
7
18 8
A D G H
11 4
14
13
19
E F

Optimisation Janvier 2019 25 / 25


Plus court chemin Objectif

Dijkstra
8
B C
∞ 6 ∞ 5 9
7
18 8
A D G H
0 ∞ 11 4 ∞ ∞
14
13
19
E F
∞ ∞
Initialisation : on attribue un poids nul au sommet A et ∞ aux autres sommets

Optimisation Janvier 2019 25 / 25


Plus court chemin Objectif

Dijkstra
8
B C
7(A) 6 ∞ 5 9
7
18 8
A D G H
0 ∞ 11 4 ∞ ∞
14
13
19
E F
14(A) ∞
A de poids minimal est marqué, on met à jour le poids des sommets B et E

adjacents et non marqués

Optimisation Janvier 2019 25 / 25


Plus court chemin Objectif

Dijkstra
8
B C
7(A) 6 15(B) 5 9
7
18 8
A D G H
0 ∞ 11 4 ∞ ∞
14
13
19
E F
14(A) ∞
B de poids minimal est marqué, on met à jour le poids du sommet C adjacent

et non marqué

Optimisation Janvier 2019 25 / 25


Plus court chemin Objectif

Dijkstra
8
B C
7(A) 6 15(B) 5 9
7
18 8
A D G H
0 ∞ 11 4 ∞ ∞
14
13
19
E F
14(A) 33(E )
E de poids minimal est marqué, on met à jour le poids du sommet F adjacent

et non marqué

Optimisation Janvier 2019 25 / 25


Plus court chemin Objectif

Dijkstra
8
B C
7(A) 6 15(B) 5 9
7
18 8
A D G H
0 21(C ) 11 4 ∞ ∞
14
13
19
E F
14(A) 33(E )
C de poids minimal est marqué, on met à jour le poids du sommet D adjacent

et non marqué

Optimisation Janvier 2019 25 / 25


Plus court chemin Objectif

Dijkstra
8
B C
7(A) 6 15(B) 5 9
7
18 8
A D G H
0 21(C ) 11 4 ∞ ∞
14
13
19
E F
14(A) 32(D)
D de poids minimal est marqué, on met à jour le poids du sommet F adjacent

et non marqué

Optimisation Janvier 2019 25 / 25


Plus court chemin Objectif

Dijkstra
8
B C
7(A) 6 15(B) 5 9
7
18 8
A D G H
0 21(C ) 11 4 36(F ) 45(G)
14
13
19
E F
14(A) 32(D)
F de poids minimal est marqué, on met à jour le poids des sommets G et H

adjacents et non marqués

Optimisation Janvier 2019 25 / 25


Plus court chemin Objectif

Dijkstra
8
B C
7(A) 6 15(B) 5 9
7
18 8
A D G H
0 21(C ) 11 4 36(F ) 44(G)
14
13
19
E F
14(A) 32(D)
G de poids minimal est marqué, on met à jour le poids du sommet H adjacent

et non marqué

Optimisation Janvier 2019 25 / 25


Plus court chemin Objectif

Dijkstra
8
B C
7(A) 6 15(B) 5 9
7
18 8
A D G H
0 21(C ) 11 4 36(F ) 44(G)
14
13
19
E F
14(A) 32(D)
Sommet final H marqué : le chemin le plus court s’obtient en remontant

la chaîne des prédécesseurs

Optimisation Janvier 2019 25 / 25


Plus court chemin Objectif

Dijkstra
8
B C
7(A) 6 15(B) 5 9
7
18 8
A D G H
0 21(C ) 11 4 36(F ) 44(G)
14
13
19
E F
14(A) 32(D)
Le sommet final H étant marqué, pour lire la chaîne de poids minimal, on part

de H et on remonte la chaîne en suivant les prédécesseurs:

H←G ←F ←D←C ←B←A

Optimisation Janvier 2019 25 / 25


Plus court chemin Objectif

Dijkstra
8
B C
7(A) 6 15(B) 5 9
7
18 8
A D G H
0 21(C ) 11 4 36(F ) 44(G)
14
13
19
E F
14(A) 32(D)
La plus courte chaîne de A à H est : A - B - C - D - F - G - H.

Son poids est : 44

Optimisation Janvier 2019 25 / 25

Vous aimerez peut-être aussi