Vous êtes sur la page 1sur 51

Faculté des Sciences et Techniques Errachidia

Département de Physique
MST ESE

Algorithme des graphes

Alhabib MOUMNI

A.U. 2022/2023

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 1 / 50


1 Introduction et motivation

2 Définitions de base et terminologie de la théorie des graphes

3 Représentation d’un graphe

4 Cheminements d’un graphe

5 Algorithmes (Mini-projets)

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 1 / 50


1 Introduction et motivation

2 Définitions de base et terminologie de la théorie des graphes

3 Représentation d’un graphe

4 Cheminements d’un graphe

5 Algorithmes (Mini-projets)

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 2 / 50


Introduction et motivation : Réseaux routiers

Étant donné un réseau routier du Maroc. On peut se poser les questions


suivantes :
Quel est le plus court chemin, en nombre de kilomètres, passant par
un certain nombre de villes données ?
Quel est le chemin traversant le moins de villes pour aller d’une ville
à une autre ?
Est-il possible de passer par toutes les villes sans passer deux fois par
une même route ?

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 3 / 50


Introduction et motivation : Système embarqué

Étant donné un système embarqué agissant sur un appareil, on peut se


poser la question suivante :

Existe-elle une suite de transitions exécuté par le système embarqué per-


mettant à l’appareil de passer d’un état initial à un état final à un moindre
cout et énergie ?

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 4 / 50


Réseaux routiers : Approche par la théories des graphes

Le réseau routier d’un pays peut être représenté par un graphe dont les
sommets sont les villes. Si l’on considère que toutes les routes sont à
double sens, on utilisera un graphe non orienté et on reliera par une arête
tout couple de sommets correspondant à deux villes reliées par une route
(si l’on considère en revanche que certaines routes sont à sens unique, on
utilisera un graphe orienté). Ces arêtes pourront être valuées par la lon-
gueur des routes correspondantes.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 5 / 50


Figure 1 – Graphe modélisant un trajet routière du Maroc

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 6 / 50


Système embarqué :

L’action d’un système embraqué sur un appareil peut être représenté par
un graphe dont les sommets représentent les états possibles de l’appareil.
L’orientation du graphe dépend de la possibilité de passage d’un état vers
un autre. Les valeurs prises par les arêtes représentent l’énergie ainsi que
le temps consommé l’ors du passage d’un état vers un autre.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 7 / 50


Figure 2 – Graphe modélisant l’état d’un appareil sur lequel agit un système
embarqué

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 8 / 50


1 Introduction et motivation

2 Définitions de base et terminologie de la théorie des graphes

3 Représentation d’un graphe

4 Cheminements d’un graphe

5 Algorithmes (Mini-projets)

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 9 / 50


Définition d’un graphe

On appelle graphe et on note G , tout couple (S, A) tel que


S est un ensemble finis de sommets.
A est un ensemble de couple de sommets (si , sj ) ∈ S 2 .

Un graphe G est dit orienté si les couples (si , sj ) ∈ A sont


ordonnées, où si est le sommet initiale et sj et le sommet final.
L’orientation est donc représentée par une flèche allant de si vers sj .
Dans ce cas, le couple (si , sj ) est appelé un arc et on le représente
par si → sj .

Un graphe G est dit non orienté si les couples (si , sj ) ∈ A ne sont pas
ordonnées. Dans ce cas, le couple (si , sj ) est appelé arête et on le
représente par si − sj .

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 10 / 50


Terminologie des graphes : boucles, orientation

On appelle boucle d’un graphe, toute arête reliant un sommet à lui


même.

Un graphe non orienté est dit simple s’il ne comporte pas de boucle
et s’il ne comporte jamais plus qu’une arête entre deux sommets.

Un graphe non orienté qui n’est pas simple est appelé multi-graphe.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 11 / 50


Terminologie des graphes : graphes partiaux, sous-graphes,
complétude d’un graphe

Un graphe partiel est le graphe obtenu en supprimant certains arcs


ou arêtes.

Un sous-graphe est le graphe obtenu en supprimant certains


sommets et tous les arcs ou arêtes incidents aux sommets supprimés.

Un graphe orienté est dit élémentaire s’il ne contient pas de boucle.

Un graphe orienté est dit complet s’il comporte un arc (si , sj ) et un


arc (sj , si ) pour tout couple de sommets différents si , sj ∈ S. De
même, un graphe non-orienté est dit complet s’il comporte une arête
si − sj , pour toute paire de sommets différents (si , sj ) ∈ S 2 .

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 12 / 50


Exemple : cas d’un graphe non orienté

Figure 3 – Exemple d’un graphe non orienté

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 13 / 50


La figure précédente illustre un graphe non orienté d’ordre 6, dont l’en-
semble des sommets est

S = {1, 2, 3, 4, 5, 6},

et dont l’ensemble des arêtes est

A = {(1, 2), (1, 5), (5, 2), (3, 6)}.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 14 / 50


Exemple : cas d’un graphe orienté

Figure 4 – Exemple d’un graphe orienté

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 15 / 50


La figure précédente illustre un multi-graphe d’ordre 6, dont l’ensemble
des sommets est
S = {1, 2, 3, 4, 5, 6},
et dont l’ensemble des arêtes est

A = {(1, 2), (2, 4), (2, 5), (4, 1), (4, 4), (4, 5), (5, 4), (6, 3)}.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 16 / 50


Notion d’adjacence entre les sommets

Soit G1 = (S1 , A1 ) un graphe non orienté, un sommet si est dit


adjacent à un autre sommet sj s’il existe une arête entre si et sj . On
définit l’ensemble des sommets adjacents à un sommet si par

adj (si ) = {sj | (si , sj ) ∈ A1 ou (sj , si ) ∈ A1 } .

Soit G2 = (S2 , A2 ) un graphe orienté, les ensembles des sommets


prédécesseurs et successeurs d’un sommet si sont définis par :

succ (si ) = {sj | (si , sj ) ∈ A2 } ,


pred (si ) = {sj | (sj , si ) ∈ A2 } .

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 17 / 50


Degré d’un sommet

Dans un graphe non orienté, le degré d’un sommet est le nombre


d’arêtes incidentes à ce sommet (dans le cas d’un graphe simple, on
aura
d ◦ (si ) = card(adj(si )),
où card() désigne le cardinal d’un ensemble donné (nombre
d’éléments).

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 18 / 50


1 Introduction et motivation

2 Définitions de base et terminologie de la théorie des graphes

3 Représentation d’un graphe

4 Cheminements d’un graphe

5 Algorithmes (Mini-projets)

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 19 / 50


Pour faciliter l’étude des graphes, il est nécessaire de choisir des façons
simples de représentation. Dans ce contexte, il existe deux façons clas-
siques de représenter un graphe en machine :
Matrice d’adjacence.
Ensemble de listes d’adjacence.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 20 / 50


Représentation d’un graphe par une matrice d’adjacence

Soit G = (S, A) un graphe. On suppose que les sommets de S sont


numérotés de 1 à n ∈ N∗ , avec n = card(S). La représentation par ma-
trice d’adjacence de G consiste en une matrice booléenne M de taille n×n
telle que (
Mij = 1, si (i, j) ∈ A,
Mij = 0, sinon.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 21 / 50


Si le graphe est valué (par exemple, si des distances sont associées aux
arcs), on peut utiliser une matrice d’entiers, de telle sorte que Mij soit
égal à la valuation de l’arc (i, j) si (i, j) ∈ A. S’il n’existe pas d’arc entre
2 sommets i et j, on peut placer une valeur particulière (par exemple 0 ou
−∞ ou null) dans Mij .

Remarque
Dans le cas de graphes non orientés, la matrice est symétrique par rapport
à sa diagonale descendante. Dans ce cas, on peut ne mémoriser que la
composante triangulaire supérieure de la matrice d’adjacence.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 22 / 50


Opérations sur la matrice d’adjacence

Le test de l’existence d’un arc ou d’une arête avec une représentation par
matrice d’adjacence est immédiat (il suffit de tester directement la case
correspondante de la matrice). En revanche, le calcul du degré d’un som-
met, ou l’accès à tous les successeurs d’un sommet, nécessitent le par-
cours de toute une ligne (ou toute une colonne) de la matrice, quel que
soit le degré du sommet. D’une façon plus générale, le parcours de l’en-
semble des arcs/arêtes nécessite la consultation de la totalité de la ma-
trice, et prendra un temps de l’ordre de n2 . Si le nombre d’arcs est très
inférieur à n2 , cette représentation est donc loin d’être optimale.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 23 / 50


Représentation d’un graphe par une liste d’adjacence

Soit G = (S, A) un graphe. On suppose que les sommets de S sont


numérotés de 1 à n, avec n = card(S).

La représentation du graphe G par liste d’adjacence consiste en un ta-


bleau T de n listes, une pour chaque sommet de S. Pour chaque sommet
si ∈ S, la liste d’adjacence T [si ] est une liste chainée de tous les sommets
sj tels qu’il existe un arc ou une arête (si , sj ) ∈ A. Autrement dit, T [si ]
contient la liste de tous les sommets successeurs de si . Les sommets de
chaque liste d’adjacence sont généralement chainés selon un ordre arbi-
traire.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 24 / 50


Si le graphe est valué (par exemple, si les arêtes représentent des dis-
tances), on peut stocker dans les listes d’adjacence, en plus du numéro
de sommet, la valuation de l’arête.

Dans le cas de graphes non orientés, pour chaque arête (si , sj ), on aura sj
qui appartiendra à la liste chainée de T [si ], et aussi si qui appartiendra à
la liste chainée de T [sj ].

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 25 / 50


Opérations sur la liste d’adjacence

Le test de l’existence d’un arc ou d’une arête (si , sj ) avec une


représentation par liste d’adjacence est moins direct que dans le cas
d’une matrice d’adjacence (il n’existe pas de moyen plus rapide que
de parcourir la liste d’adjacence de T [si ] jusqu’à trouver sj )
Le calcul du degré d’un sommet, ou l’accès à tous les successeurs
d’un sommet, est plus efficace que dans le cas d’une matrice
d’adjacence : il suffit de parcourir la liste d’adjacence associée au
sommet. D’une façon plus générale, le parcours de l’ensemble des
arcs/arêtes nécessite le parcours de toutes les listes d’adjacence, et
prendra un temps de l’ordre de p, où p est le nombre d’arcs/arêtes (à
comparer avec n2 dans le cas d’une représentation par matrice
d’adjacence).
.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 26 / 50


Exemple d’application : cas d’un graphe non orienté
On considère le graphe suivant

Alors, dans ce cas la matrice d’adjacence est donnée par


 
0 1 0 0 1 0
1 1 0 0 1 0 
 
0 0 0 0 0 1 
0 0 0 0 0 0  .
 
 
1 1 0 0 0 0 
0 0 1 0 0 0

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 27 / 50


Tandis que la liste d’adjacence est représenté par
1 : 2,5
2 : 1,5
3:6
4:
5 : 1,2
6:3

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 28 / 50


Exemple : cas d’un graphe orienté
On considère le graphe suivant

Alors, dans ce cas la matrice d’adjacence est donnée par


 
0 1 0 1 1 0
0 0 0 1 1 0 
 
0 0 0 0 0 0 
1 0 0 1 1 0  .
 
 
0 0 0 1 0 0 
0 0 1 0 0 0

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 29 / 50


Tandis que la liste d’adjacence est représenté par
1:2
2 : 4,5
3:
4 : 1,4,5
5:4
6:3

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 30 / 50


1 Introduction et motivation

2 Définitions de base et terminologie de la théorie des graphes

3 Représentation d’un graphe

4 Cheminements d’un graphe

5 Algorithmes (Mini-projets)

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 31 / 50


Notion du chemin : cas d’un graphe orienté

Dans un graphe orienté, un chemin d’un sommet u vers un sommet v


est une séquence < s0 , s1 , s2 , . . . , sk > de sommets tels que
u = s0 , v = sk ,
(si−1 , si ) ∈ A pour i = 1, · · · , k.
La longueur du chemin est le nombre d’arcs dans le chemin, qui vaut
k. On dira que le chemin contient les sommets s0 , s1 , . . . , sk , et les
arcs (s0 , s1 ) , (s1 , s2 ) , . . . , (sk−1 , sk ).
S’il existe un chemin de u à v , on dira que v est accessible à partir
de u.
Un chemin est élémentaire si les sommets qu’il contient sont tous
distincts.
Dans un graphe orienté, un chemin < s0 , s1 , · · · , sk > forme un
circuit si s0 = sk et si le chemin comporte au moins un arc (k ≥ 1).
Ce circuit est élémentaire si en plus les sommets s1 , s2 , · · · , sk sont
tous distincts.
A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 32 / 50
Notion du chemin : cas d’un graphe non orienté

On retrouve ces différentes notions de cheminement dans les graphes non


orientés. Dans ce cas, on parlera de chaine au lieu de chemin, et de cycle
au lieu de circuit. Un graphe sans cycle est dit acyclique.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 33 / 50


Étant donné plusieurs chemins liant deux sommets u et v , une question
intuitive qui se pose est de trouver le plus court chemin parmi les chemins
existants. Une façon utile de répondre à cette question est d’utiliser la
matrice d’adjacence.

On commence par rappeler quelques opérations matricielles algébriques


dans les cas classiques et booléennes.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 34 / 50


Opérations matricielles classiques

Soit M et N deux matrices carrées de taille n × n.


la matrice somme M + N est la matrice O donnée par

Oij = Mij + Nij , pour i, j = 1, · · · , n,

où + désigne l’opération d’addition usuelle.


La matrice produit MN est la matrice P donnée par
n
X
Pij = Mik × Nkj , pour i, j = 1, · · · , n,
i=1

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 35 / 50


Opérations matricielles booléennes
Soit M et N deux matrices booléennes n × n.
La somme booléenne M ⊕ N est la matrice O, donnée par :

Oij = Mij ⊕ Nij , pour i, j = 1, · · · , n,

où (
0, si a = b = 0,
a⊕b =
1, sinon.
Le produit booléen M ⊗ N est la matrice P donnée par :

Pij = ⊕nk=1 Mik ⊗ Nkj , pour i, j = 1, · · · , n,

où (
1, si a = b = 1,
a⊗b =
0, sinon.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 36 / 50


Théorème d’existence d’un chemin

Théorème
Soit G un graphe d’ordre n avec une matrice d’adjacence A et p ∈ N∗ . On
considère la notation suivante

A(p) = A ⊗ · · · ⊗ A.
p fois

Alors
(
(p) 1, si il existe un chemin de longueur p entre les sommets i et j
Aij =
0, sinon.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 37 / 50


Théorème du nombre de chemins existants

Théorème
Soit G un graphe d’ordre n avec une matrice d’adjacence A et p ∈ N∗ . On
considère la notation suivante Ap = A × · · · × A. Alors
p fois

Apij = k,

où k désigne le nombre de chemins de longueur p entre les sommets i et


j.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 38 / 50


Fermeture transitive d’un graphe

On appelle fermeture transitive d’un graphe G = (S, A), le graphe


Gf = (S, Af ), tel que pour tout couple de sommets (si , sj ) ∈ S 2 ,
l’arc/arête (si , sj ) appartient à Af si et seulement s’il existe un
chemin de si vers sj .
Le calcul de la fermeture transitive d’un graphe peut se faire en
additionnant les puissances successives de sa matrice d’adjacence.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 39 / 50


Exemple d’application

On considère le graphe G = (S, A) suivant :

où S = {a, b, c, d, e, f , g }.
Donner la matrice d’adjacence du graphe G
Calculer

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 40 / 50


a b c d e f g
a 0 0 1 0 0 0 0
b 1 0 0 0 0 0 0
c 0 0 0 1 1 0 1
M=
d 0 1 0 0 0 0 0
e 0 0 0 0 0 1 0
f 0 0 0 0 0 0 1
g 0 0 0 0 1 0 0
Dans cette matrice, Mij = 1 ssi il existe un chemin de longueur 1 pour
aller de i à j. Pour qu’il existe un chemin de longueur 2 pour aller d’un
sommet k à un sommet r , il faut qu’il existe un sommet i tel qu’il existe
un chemin de longueur 1 de k vers i et un autre chemin de longueur 1 de
i vers r .

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 41 / 50


Pour tester cela, il s’agit de parcourir simultanément la ligne k et la co-
lonne r de la matrice M et de regarder s’il y a un 1 à la même position
dans la ligne k et la colonne r . Par exemple, il y a un chemin de longueur
2 allant de a vers d car il y a un 1 en troisième position à la fois dans la
ligne a et dans la colonne d. Ainsi, en multipliant cette matrice par elle-
même, on obtient la matrice M 2 des chemins de longueur 2 :

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 42 / 50


a b c d e f g
a 0 0 0 1 1 0 1
b 0 0 1 0 0 0 0
c 0 1 0 0 1 1 0
M2 =
d 1 0 0 0 0 0 0
e 0 0 0 0 0 0 1
f 0 0 0 0 1 0 0
g 0 0 0 0 0 1 0
Dans cette matrice, Mij2 = 1 ssi il existe un chemin de longueur 2 pour
aller de i à j. Par exemple, Mad = 1 car il existe un chemin (ha, c, di) de
longueur 2 allant de a à d. De façon plus générale, M k (la matrice obte-
nue en multipliant M par elle même k fois successivement) est la matrice
des chemins de longueur k.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 43 / 50


En additionnant M et M 2 , on obtient la matrice M + M 2 des chemins de
longueur inférieure ou égale à 2 :

a b c d e f g
a 0 0 1 1 1 0 1
b 1 0 1 0 0 0 0
c 0 1 0 1 1 1 1
M + M2 =
d 1 1 0 0 0 0 0
e 0 0 0 0 0 1 1
f 0 0 0 0 1 0 1
g 0 0 0 0 1 1 0

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 44 / 50


De même, en multipliant M + M 2 par M, et en additionnant la matrice
résultante avec M, on obtient la matrice M + M 2 + M 3 des chemins de
longueur inférieure ou égale à 3 :

a b c d e f g
a 0 1 1 1 1 1 1
b 1 0 1 1 1 0 1
c 1 1 0 1 1 1 1
M + M2 + M3 =
d 1 1 1 0 0 0 0
e 0 0 0 0 1 1 1
f 0 0 0 0 1 1 1
g 0 0 0 0 1 1 1

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 45 / 50


Selon le même principe, on calcule la matrice M + M 2 + M 3 + M 4 des
chemins de longueur inférieure ou égale à 4 :

a b c d e f g
a 1 1 1 1 1 1 1
b 1 1 1 1 1 1 1
c 1 1 1 1 1 1 1
M + M2 + M3 + M4 =
d 1 1 1 1 1 0 1
e 0 0 0 0 1 1 1
f 0 0 0 0 1 1 1
g 0 0 0 0 1 1 1

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 46 / 50


Si on recommence une fois de plus, et que l’on calcule la matrice M +
M 2 + M 3 + M 4 + M 5 + M 6 des chemins de longueur inférieure ou égale à
6, on constate que cette matrice est égale à celle des chemins de longueur
inférieure ou égale à 5. Par conséquent M + M 2 + M 3 + M 4 + M 5 est la
matrice d’adjacence de la fermeture transitive G f du graphe G de départ.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 47 / 50


1 Introduction et motivation

2 Définitions de base et terminologie de la théorie des graphes

3 Représentation d’un graphe

4 Cheminements d’un graphe

5 Algorithmes (Mini-projets)

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 48 / 50


Implémenter une classe graphe

Programmer une classe graphe ayant comme variables privées


Une variable de type entier ord représentant l’ordre du grphe
(nombre des sommets),
Une matrice d’adjacence Adj (tableau bidimensionnel) de type
boléen,
et comme méthodes
Un constructeur graphe(int ord).
Un distructeur -graphe().
Une méthode boléenne bool existechemin(int i,int j) indiquant s’il
existe un chemin entre deux sommets i et j.
Une méthode int puissanceusuel(graphe g,int p) qui retourne la
puissance usuelle d’ordre p de la matrice d’adjacence d’un graphe
donné.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 49 / 50


Mini-projet : Implémenter une classe graphe

Une méthode int puissancebool(graphe g,int p) qui retourne la


puissance booléenne d’ordre p de la matrice d’adjacence d’un graphe
donné.
Une méthode int fermeture(graphe g) qui retourne la matrice de la
fermeture transitive d’un graphe.
Une méthode bool circuit(graphe g) qui retourne la valeur 1 si le
graphe contient un circuit et la valeur 0 sinon.

A. MOUMNI (MST ESE) A.G et T.O A.U. 2022/2023 50 / 50

Vous aimerez peut-être aussi