Vous êtes sur la page 1sur 8

1 ére année Master Module: algorithmiques et structures complexes

Chapitre 5: Les graphes

1. Introduction

La notion de graphe est une structure qui permet de représenter plusieurs situations réelles, en
but de leur apporter des solutions mathématiques et informatique, tel que :

– Les réseaux de transport (routiers, ferrés, aériens···),

– Les réseaux téléphoniques, électriques, de gaz,··· etc,

– Les réseaux d’ordinateurs,

– Ordonnancement des tâches,

– Circuits électroniques,

– ···

2. Définitions

2.1 Graphe

Un graphe est défini par un couple (S, A) ù S est un ensemble de sommets (nœuds ou points)
et A est un sous ensemble du produit cartésien(S⇥S) représentant les relations existant entre
les sommets.

Exemple : S=1, 2, 3, 4, 5, 6, 7

A=(1,2), (1,4), (2,5), (3,5), (3,6), (4,2), (5,4), (6,6)


1 ére année Master Module: algorithmiques et structures complexes

2.2 Graphe orienté

C’est un graphe où les relations entre les sommets sont définies dans un seul sens (exemple
précédent). Dans ce cas les relations sont appelées "arcs".

2.3 Graphe non orienté

C’est un graphe où les relations sont définies dans les deux sens. Dans ce cas, les relations
sont appelées "arêtes".

2.4 Graphe étiqueté ou pondéré

C’est un graphe orienté ou non où à chaque arc ou arête correspond une valeur ou une
étiquette représentant son coût (ou distance).

2.5 Origine et extrémité

Si a=(x, y) est un arc de x vers y alors :

– x est l’origine de a et y est son extrémité

– x est un prédécesseur de y et y est un successeur de x


1 ére année Master Module: algorithmiques et structures complexes

Si l’origine et l’extrémité d’un arc se coïncident on l’appelle une boucle (6,6).

2.6 Chemin

Un chemin est un ensemble d’arcs a1, a2,···,ap où Origine(ai+1) = Extrémité(ai), 1 <= i<=p

Exemple :{(1,2), (2,5), (5,4)}

2.7 Circuit

Un circuit est un chemin a1, a2,···, ap où Origine(a1) = Extrémité(ap)

Exemple :{(2,5), (5,4), (4,2)}

2.8 Chaine

Une chaine est un chemin non orienté.

Exemple :{(1,4), (5,4), (3,5)}

2.9 Cycle

Un cycle est une chaîne fermée.

Exemple :{(1,2), (2,5), (5,4), (1,4)}

2.10 Graphe connexe

Un graphe connexe est un graphe où pour tout couple de sommets(x, y), il existe une chaîne
d’arcs les joignant.

Exemple : Pour le couple(1,6), il existe une chaîne d’arcs, et il n’en existe pas pour (1,7).

2.11 Graphe fortement connexe

Un graphe fortement connexe est un graphe où pour tout couple de sommets (x, y), il existe
un chemin d’arcs les joignant.

3. Représentation des graphes

Il existe deux façons classiques de représenter un graphe G=(S, A) : par un ensemble de listes
d’adjacences, ou par une matrice d’adjacences.

3.1 Listes d’adjacence


1 ére année Master Module: algorithmiques et structures complexes

La représentation par listes d’adjacences d’un graphe G=(S, A) consiste en un tableau Adj de
|S| listes, une pour chaque sommet de S. Pour chaque u ∈ S, la liste d’adjacences Adj [u] est
une liste des sommets v tels qu’il existe un arc (u, v) ∈A. Autrement dit, Adj [u] est constituée
de tous les sommets adjacents à u dans G. Les sommets de chaque liste d’adjacences sont en
général chaînés selon un ordre arbitraire.

3.2 Matrice d’adjacence

Pour la représentation par matrice d’adjacences d’un graphe G=(S, A), on suppose que les
sommets sont numérotés arbitrairement 1, 2,..., |S|. La représentation par matrice d’adjacences
d’un graphe G consiste alors en une matrice |S|×|S|, M = (aij) telle que :

Exemple 1 : cas d’un graphe non orienté

Cas .1 Deux représentations d’un graphe non orienté. (a) Un graphe non orienté G possédant
cinq sommets et sept arêtes. (b) Une représentation de G par listes d’adjacences. (c) La
représentation de G par une matrice d’adjacences.

Remarque : On remarque que la matrice d’adjacences dans le cas. 1 (c) est symétrique par
rapport à sa diagonale principale. On définit la transposée d’une matrice M = (aij) comme la
matrice TM=(T aij) donnée par T
aij =aji. Comme dans un graphe non orienté, (u, v) et (v, u)
représentent la même arête, la matrice d’adjacences M d’un graphe non orienté est sa propre
transposée : M= TM. Dans certaines applications, il est intéressant de ne conserver que les
composantes situées sur et au-dessus de la diagonale de la matrice d’adjacences, ce qui réduit
presque de moitié la quantité de mémoire requise pour stocker le graphe.
1 ére année Master Module: algorithmiques et structures complexes

Exemple 2 : cas d’un graphe orienté

Cas .2 Deux représentations d’un graphe orienté. (a) Un graphe orienté G possédant six
sommets et huit arcs. (b) Une représentation de G par listes d’adjacences. (c) La
représentation De G par matrice d’adjacences.

4. Parcours de graphes

De même que pour les arbres, il est important de pouvoir parcourir un graphe selon certaines
règles, cependant, le parcours des graphes est un peu différent de celui des arbres. Dans un
arbre, si on commence à partir de la racine on peut atteindre tous les nœuds,
malheureusement, ce n’est pas le cas pour un graphe où on est obligé de reprendre le parcours
tant qu’il y a des sommets non visités. En plus un graphe peut contenir des cycles, ce qui
conduit à des boucles infinies de parcours.

Il existe deux types de parcours de graphes : le parcours en profondeur d’abord (Depth First
Search) et le parcours en largeur d’abord (Breadth First Search).

4.1 En largeur d’abord (BFS)

Étant donnés un graphe G=(S, A) et un sommet origine, le parcours en largeur emprunte


systématiquement les arcs de G pour « découvrir » tous les sommets accessibles depuis s. Il
calcule la distance (plus petit nombre d’arcs) entre s et tous les sommets accessibles. Il
construit également une « arborescence de parcours en largeur » de racine s, qui contient
tous les sommets accessibles depuis s. Pour tout sommet v accessible depuis s, le chemin
reliant s à v dans l’arborescence de parcours en largeur correspond à un « plus court chemin »
de s vers v dans G, autrement dit un chemin contenant le plus petit nombre d’arcs.
L’algorithme fonctionne aussi bien sur les graphes orientés que sur les graphes non orientés.

L’algorithme de parcours en largeur tient son nom au fait qu’il découvre d’abord tous les
sommets situés à une distance k de s avant de découvrir tout sommet situé à la distance k+1.
1 ére année Master Module: algorithmiques et structures complexes

La procédure PL ci-dessous de parcours en largeur suppose que le graphe d’entrée G=(S, A)


est représenté par des listes d’adjacences. Pour chaque sommet du graphe, elle maintient à
jour plusieurs structures de données supplémentaires. La couleur de chaque sommet u ∈ S est
stockée dans la variable couleur[u], et le parent de u est stocké dans la variable π[u]. Si u n’a
pas de parent (par exemple, si u=s ou si u n’a pas été découvert), alors π [u]=NIL. La distance
calculée par l’algorithme entre l’origine s et le sommet u est stockée dans d[u]. L’algorithme a
également recours à une file FIFO (premier entré, premier sorti) F pour gérer l’ensemble des
sommets gris.
1 ére année Master Module: algorithmiques et structures complexes

La Figure au-dessus représente l’action de PL sur un graphe non orienté. Les arcs de
l’arborescence sont ombrés quand ils sont produites par PL. Les valeurs d[u] sont données à
l’intérieur de chaque sommet u. La file F est représentée au début de chaque itération de la
boucle tant que des lignes 9–18. Les distances à l’origine sont représentées sous chaque
sommet de la file.

4.2 En profondeur d’abord (DFS)

Le principe du DFS est de visiter tous les sommets en allant le plus profondément possible
dans le graphe.
1 ére année Master Module: algorithmiques et structures complexes

Exemple : le parcours en profondeur appliqué sur le graphe représenté au-dessous donne le


résultat suivant : 1 2 4 5 3 6 7

Vous aimerez peut-être aussi