You are on page 1of 62

Partie2-Graphes et algorithmes

December 15, 2021

Partie2-Graphes et algorithmes December 15, 2021 1 / 62


1 Motivation
2 Définitions et vocabulaires
3 Graphe non orienté
Notions élémentaires
Chaı̂nes et cycles
Graphe simple
Graphe complet
Graphe connexe
Graphe partiel et sous-graphe
Graphes eulériens
Graphes hamiltoniens
Stable
Coloration du graphe
Représentations non graphiques d’un graphe
Arbres
4 Graphe orienté
Partie2-Graphes et algorithmes December 15, 2021 2 / 62
Motivation

Motivation
Problème des sept ponts de Königsberg
A priori le premier problème resolu par la théorie des graphes (en
1736). Euler demontra qu’il était impossible de traverser chacun des
sept ponts de la ville russe de Konigsberg une fois exactement et de
revenir au point de depart. Les ponts enjambent les bras de la Pregel
qui coulent de part et d’autre de l’ı̂le de Kneiphof.

Partie2-Graphes et algorithmes December 15, 2021 3 / 62


Motivation

Motivation

Au XX eme siècle, la théorie des graphes va connaı̂tre un essor


croissant avec le développement des réseaux dont il faut optimiser
l’utilisation. On peut citer quelques exemples:
réseaux de transports routier, d’eau, d’électricité : les sommets
représentent les carrefours et les arêtes les rues.
réseaux informatiques : les sommets représentent les ordinateurs
et les arêtes les connexions physiques.
réseaux sociaux : les sommets représentent les membres du
groupe, deux personnes sont reliées par une arête si elles se
connaissent (Facebook, twiter...).

Partie2-Graphes et algorithmes December 15, 2021 4 / 62


Motivation

Motivation

graphe du web : les sommets représentent les pages web et


chaque arc corresponda un hyperliens d’une page vers une autre.
Réseau de transports de données (téléphonie, wifi, réseaux
informatique. . . ).
ordonnancement de projet : les sommets représentent les
différentes tâches com-posant un projet, deux tâches sont reliés
par une flèche si la deuxième ne peut pascommencer avant que
la première soit terminée.
L’étude des graphes se réalise sous deux point de vues
complémentaire. L’étude de de graphes ou de familles de graphes
et l’étude algorithmique de certaines propriétés.

Partie2-Graphes et algorithmes December 15, 2021 5 / 62


Définitions et vocabulaires

Définitions
un graphe est défini par un couple G = (V , E ) tel que:
V est un ensemble fini de n sommets(Vertices en anglais),
E est un ensemble de m couples de sommets(vi , vj ) ∈ V 2 ,
appelés arêtes (Edges en anglais).

Dans un graphe G on appelle:


Ordre d’un graphe le nombre de sommets n de ce graphe.
Taille d’un graphe est le nombre d’arêtes ou d’arcs.

Un graphe peut être :


orienté
non orienté
Partie2-Graphes et algorithmes December 15, 2021 6 / 62
Graphe non orienté

Graphe non orienté

Dans un graphe non orienté, les couples (vi , vj ) ∈ V ne sont pas


orientés, c’est à dire que (vi , vj ) est équivalent à (vj , vi ). Une paire
(vi , vj ) est appelée une arête, et est il représentée graphiquement par
vi − vj .

1 2

4 3

G = (V , E ) avec V = 1, 2, 3, 4,E = (1, 2), (2, 4), (3, 4), (3, 3).

Partie2-Graphes et algorithmes December 15, 2021 7 / 62


Graphe non orienté Notions élémentaires

Notions élémentaires

Deux sommets sont dadjacents, ou incidents s’il existe une


arête e qui relie ces sommets.
Une arête e est incidente à un sommet vi si vi est une
extrémité de e.
Deux arêtes incidentes à un même sommet sont adjacentes.
Un sommet est isolé s’il n’existe pas d’arête incidente à ce
sommet.
Si une arête à ses deux extrémités constituées du même sommet,
on dit que c’est une boucle.
Une arête e1 est appellée multiple s’il existe une autre arête
e1 ̸= e2 reliant les mêmes sommets que e1 ;e1 et e2 sont
parallèles.

Partie2-Graphes et algorithmes December 15, 2021 8 / 62


Graphe non orienté Notions élémentaires

Degré
Degré d’un sommet
On appelle degré du sommet v , et on note d(v ), le nombre d’arêtes
incidentes à ce sommet.
Attention ! Une boucle sur un sommet compte double.
Dans le multigraphe ci-contre, on a les degrés :

Theorem
La somme des degrés des sommets d’un graphe est égale à deux fois
le nombre d’arêtes.
Partie2-Graphes et algorithmes December 15, 2021 9 / 62
Graphe non orienté Notions élémentaires

Degré
Degré d’un graphe
Le degré d’un graphe est le degré maximum de tous ses sommets.

Dans l’exemple ci- dessous, le degré du graphe est 4, à cause du


sommet v3 .

Un graphe est dit régulier si tous les sommets ont le même degré.
Si le degré commun est k , alors on dit que le graphe est k-régulier.
Partie2-Graphes et algorithmes December 15, 2021 10 / 62
Graphe non orienté Chaı̂nes et cycles

Chaı̂nes

Une chaı̂ne dans G , est une suite de la forme


(v0 , e1 , v1 , e2 , ..., vk−1 , ek , vk ) ayant pour éléments alternativement des
sommets (vi ) et des arêtes (ei ), commençant et se terminant par un
sommet, et telle que les extrémités de ei soient vk−1 et vi , i = 1, ..., k.
Si v0 = u et vk = v , on dit que la chaı̂ne relie u et v .
Une chaı̂ne a une longueur k (c’est le nombre d’arêtes de la chaı̂ne).
Une chaı̂ne doit comporter au moins une arête.

Partie2-Graphes et algorithmes December 15, 2021 11 / 62


Graphe non orienté Chaı̂nes et cycles

Chaı̂nes

On appelle distance entre deux sommets la longueur de la plus


petite chaı̂ne les reliant.
On appelle diamètre d’un graphe la plus longue des distances
entre deux sommets.
Une chaı̂ne élémentaire est une chaı̂ne ne passant pas deux fois
par un même sommet, c’est-à-dire dont tous les sommets sont
distincts.
Une chaı̂ne simple est une chaı̂ne ne passant pas deux fois par
une même arête, c’est-à-dire dont toutes les arêtes sont
distinctes.
Une chaı̂ne telle que v0 = vk est appelée chaı̂ne fermée ou
cycle.

Partie2-Graphes et algorithmes December 15, 2021 12 / 62


Graphe non orienté Chaı̂nes et cycles

Cycles
Une chaı̂ne fermée simple est appelée cycle si seul le sommet de
départ apparaı̂t deux fois dans la chaı̂ne.
Une boucle est un cycle de longueur 1.
Un cycle élémentaire est un cycle dont les sommets sont
distincts

Theorem
Un graphe est biparti si et seulement s’il ne contient aucun cycle de
longueur impaire.
Partie2-Graphes et algorithmes December 15, 2021 13 / 62
Graphe non orienté Graphe simple

Graphe simple
Définition
Un graphe est simple s’il ne contient ni boucles ni arrêtes
multiples.
Si G est un graphe simple, le nombre d’arêtes incidentes à un
sommet v de G est appelé degré de v dans G , noté dG (v ) ou
d(u), avec 0 <= d(v ) <= n − 1.

Partie2-Graphes et algorithmes December 15, 2021 14 / 62


Graphe non orienté Graphe complet

Graphe complet

Définition
Le graphe G est dit un graphe complet à n sommets noté Kn si
toutes les paires de sommets sont directement reliées par une arête.
On appelle clique un sous-graphe complet de G.

Partie2-Graphes et algorithmes December 15, 2021 15 / 62


Graphe non orienté Graphe connexe

Graphe connexe
Définition
Un graphe est simplement connexe s’il existe une chaı̂ne reliant une
paire de sommets quelconques c.à.d à partir de n’importe quel
sommet, il est possible de rejoindre tous les autres en suivant les
arêtes.
Remarque
Un graphe non connexe se décompose en composantes connexes.

Partie2-Graphes et algorithmes December 15, 2021 16 / 62


Graphe non orienté Graphe partiel et sous-graphe

Graphe partiel
Un graphe G ′ = (V , E ′) est un graphe partiel de G (V , E ), si
obtient G ′ en enlevant une ou plusieurs arêtes au graphe G .

Sous-graphe
Un graphe G ′ = (A, E (A)) est un sous-graphe de G , si A est un
sous-ensemble de sommets de V et E (A) est formé de toutes les
arêtes de G ayant leurs deux extrémités dans A.

Partie2-Graphes et algorithmes December 15, 2021 17 / 62


Graphe non orienté Graphes eulériens

Graphes eulériens

Définition
On dit qu’un graphe est eulérien s’il est possible de trouver un
cycle passant une et une seule fois par toutes les arêtes.
On dit qu’un graphe est semi-eulérien s’il est possible de
trouver une chaı̂ne passant une et une seule fois par toutes les
arêtes.
Plus simplement, on peut dire qu’un graphe est eulérien (ou
semi-eulérien) s’il est possible de dessiner le graphe sans lever
le crayon (et sans passer deux fois sur le même trait!).

Partie2-Graphes et algorithmes December 15, 2021 18 / 62


Graphe non orienté Graphes eulériens

Graphes eulériens

Theorem
Un graphe connexe G admet un cycle eulérien si et seulement si tous
ses sommets sont de degré pair.

Theorem
Un graphe connexe G admet une chaı̂ne eulérienne distincte d’un
cycle si et seulement si le nombre de sommets de G de degré
impair est égal à 2. Dans ce cas, si u et v sont les deux sommets
de G de degré impair, alors le graphe G admet une chaı̂ne eulérienne
d’extrémités u et v .

Partie2-Graphes et algorithmes December 15, 2021 19 / 62


Graphe non orienté Graphes hamiltoniens

Graphes hamiltoniens

Définition
On dit qu’un graphe est hamiltonien s’il est possible de trouver
un cycle passant une et une seule fois par tous les sommets.
On dit qu’un graphe est semi-hamiltonien s’il est possible de
trouver une chaı̂ne passant une et une seule fois par tous les
sommets.
Un graphe possédant un sommet de degré 1 ne peut être
hamiltonien.
Si un sommet dans un graphe est de degré 2, alors les deux
arêtes incidentes à ce sommet doivent faire partie du cycle
hamiltonien.
Les graphes complets Kn sont hamiltoniens.

Partie2-Graphes et algorithmes December 15, 2021 20 / 62


Graphe non orienté Graphes hamiltoniens

Graphes hamiltoniens

Théorème: Soit G = (V , E ) un graphe simple d’ordre n >= 3. Si


pour toute paire (u, v ) de sommets non adjacents, on a
d(u) + d(v ) >= n, alors G est hamiltonien.
Corollaire Soit G = (V , E ) un graphe simple d’ordre n >= 3. Si
pour tout sommet u de G , on a d(u) >= n/2, alors G
est hamiltonien.

Partie2-Graphes et algorithmes December 15, 2021 21 / 62


Graphe non orienté Stable

Stable

Un sous-graphe est stable si ses sommets ne sont reliés par


aucune arête.
Un sous-ensemble S de V est un stable s’il ne comprend que des
sommets non adjacents deux à deux.

Partie2-Graphes et algorithmes December 15, 2021 22 / 62


Graphe non orienté Coloration du graphe

Coloration du graphe

La coloration des sommets d’un graphe consiste à affecter à tous les


sommets de ce graphe une couleur de telle sorte que deux sommets
adjacents ne portent pas la même couleur. Une coloration avec k
couleurs est donc une partition de l’ensemble des sommets en k
stables.

Le nombre chromatique du graphe G, noté γ(G ), est le plus petit


entier k pour lequel il existe une partition de V en k sous-ensembles
stables.

Partie2-Graphes et algorithmes December 15, 2021 23 / 62


Graphe non orienté Coloration du graphe

Coloration du graphe

Theorem
χ(G ) <= r + 1, où r est le plus grand degré de ses sommets.
χ(G ) <= r + 1 − α(G ), avec α(G ) la cardinalité d’un stable S.

Theorem
Le nombre chromatique d’un graphe est supérieur ou égal à celui de
chacun de ses sous graphes.
χ(G ) >= ω(G ) : le nombre chromatique du graphe sera supérieur ou
égal à l’ordre de sa plus grande clique.

Partie2-Graphes et algorithmes December 15, 2021 24 / 62


Graphe non orienté Coloration du graphe

Algorithme de coloration de Welsh et Powell


Cet algorithme couramment utilisé permet d’obtenir une assez bonne
coloration d’un graphe, c’est-à-dire une coloration n’utilisant pas un
trop grand nombre de couleurs. Cependant il n’assure pas que le
nombre de couleurs soit minimum (et donc égal au nombre
chromatique du graphe).
Étape 1: Classer les sommets du graphe dans l’ordre décroissant de
leur degré, et attribuer à chacun des sommets son numéro d’ordre
dans la liste obtenue.
Étape 2: En parcourant la liste dans l’ordre, attribuer une couleur
non encore utilisée au premier sommet non encore coloré, et attribuer
cette même couleur à chaque sommet non encore coloré et non
adjacent à un sommet de cette couleur.
Étape 3: S’il reste des sommets non colorés dans le graphe, revenir
à l’étape 2. Sinon, FIN.
Partie2-Graphes et algorithmes December 15, 2021 25 / 62
Graphe non orienté Représentations non graphiques d’un graphe

La matrice d’adjacence
La matrice d’adjacence est une matrice en deux dimensions. Chacune
des dimensions est indexée par les sommets du graphe. A
l’intersection de chaque ligne et colonne on trouve un nombre: il vaut
1 si une arête relie les deux sommets indexés par les coordonnées de
la case, et 0 sinon.

Partie2-Graphes et algorithmes December 15, 2021 26 / 62


Graphe non orienté Représentations non graphiques d’un graphe

Listes d’adjacences

OOn peut aussi représenter un graphe simple en donnant pour


chacun de ses sommets la liste des sommets auxquels il est adjacent.
Ce sont les listes d’adjacences.

Partie2-Graphes et algorithmes December 15, 2021 27 / 62


Graphe non orienté Arbres

Arbres
Définition
On appelle arbre tout graphe connexe sans cycle.
Un graphe sans cycle mais non connexe est appelé une forêt.

On distingue deux types de sommets dans un arbre :


Les feuilles dont le degré est 1;
Les sommets internes dont le degré est supérieur à 1.

Partie2-Graphes et algorithmes December 15, 2021 28 / 62


Graphe non orienté Arbres

Arbre

Theorem
Les affirmations suivantes sont équivalentes pour tout graphe G à n
sommets:
G est un arbre
G est sans cycle et connexe
G est sans cycle et comporte n − 1 arêtes
G est connexe et comporte n − 1 arêtes chaque paire u, v de
sommets distincts est reliée par une seule chaı̂ne simple (et le
graphe est sans boucle).

Partie2-Graphes et algorithmes December 15, 2021 29 / 62


Graphe orienté

Graphe orienté (digraphe)

Dans un graphe orienté, les couples(si , sj ) ∈ V sont orientés.


(si , sj ) est un couple ordonné, où si est le sommet initial, et sj le
sommet terminal.
Un couple(si , sj ) est appelé un arc, et il est représenté
graphiquement par si → sj .

1 2

4 3

G = (V , E ) avec V = 1, 2, 3, 4, E = (1, 2), (2, 1), (2, 4), (3, 4), (3, 3)
Partie2-Graphes et algorithmes December 15, 2021 30 / 62
Graphe orienté

Degré
Soit v un sommet d’un graphe orienté.
On note d + (v ) le degré extérieur du sommet v , c’est-à-dire le
nombre d’arcs ayant v comme extrémité initiale.
On note d − (v ) le degré intérieur du sommet v, c’est-à-dire le
nombre d’arcs ayant v comme extrémité finale.
d(v ) = d + (v ) − d − (v )

Calculer les degrés de chacun des sommets du graphe ci-dessous:


2 1

3 6

4 5
Partie2-Graphes et algorithmes December 15, 2021 31 / 62
Graphe orienté

Chemins et circuits

Un chemin conduisant du sommet a au sommet b est une suite


des sommets et des arcs, commençant par a et se terminant par
le sommet b, et telle que chaque arc est encadré à gauche par
son sommet origine et à droite par son sommet destination.
La distance entre deux sommets est la longueur du plus petit
chemin les reliant. S’il n’existe pas de chemin entre les sommets
a et b, on pose d(a, b) = ∞.
Un circuit est un chemin dont les sommets de départ et de fin
sont les mêmes.
Les notions de chemins et de circuits sont analogues à celles
des chaı̂nes et des cycles pour les graphes non orientés.

Partie2-Graphes et algorithmes December 15, 2021 32 / 62


Graphe orienté

Digraphe fortement connexe


Un digraphe est fortement connexe, si toute paire ordonnée
(a,b) de sommets distincts du graphe est reliée par au moins un
chemin.
On appelle composante fortement connexe tout sous-graphe
induit maximal fortement connexe.
Exemple d’un graphe fortement connexe:

v1 v2

v3

Partie2-Graphes et algorithmes December 15, 2021 33 / 62


Graphe orienté

Digraphe fortement connexe


Application
Déterminer les composantes fortement connexes des graphes suivants:

Partie2-Graphes et algorithmes December 15, 2021 34 / 62


Graphe orienté

Représentations non graphiques des digraphes


Matrice d’adjacences
Dans une matrice d’adjacences, les lignes et les colonnes
représentent les sommets du graphe.
Un 1 à la position (i, j) signifie qu’un arc part de i pour
rejoindre j .

Exemple: donner la matrice d’adjacences du digraphe G :

2 1

3 6

4 5

Partie2-Graphes et algorithmes December 15, 2021 35 / 62


Graphe orienté

Représentations non graphiques des digraphes


Application
Calculer les matrices M 2 et M 3 avec M est la matrice d’adjacences
du graphe de l’exemple.
Pour chacune de ces matrices, à quoi correspondent les nombres
obtenus ?

Partie2-Graphes et algorithmes December 15, 2021 36 / 62


Graphe orienté

Représentations non graphiques des digraphes

Listes d’adjacences
On peut aussi représenter un digraphe en donnant pour chacun de ses
sommets la liste des sommets qu’on peut atteindre directement en
suivant un arc (dans le sens de la flèche).

Exemple: donner les listes d’adjacences du digraphe G :

2 1

3 6

4 5

Partie2-Graphes et algorithmes December 15, 2021 37 / 62


Graphe orienté

Cheminement

Dans un graphe orienté pondéré G (V , E , W ) ,Wi,j est le poids


de l’arc (i, j) ∈ E .
Le poids (ou coût ou valuation) peut représenter par exemple
une distance, un coût de transport ou un temps de parcours.
La plupart du temps, le coût d’un chemin entre deux sommets
est la somme des coûts des arcs qui le composent.
Le problème consiste donc à trouver un chemin de coût minimal
(aussi appelé plus court chemin).

Partie2-Graphes et algorithmes December 15, 2021 38 / 62


Graphe orienté

Cheminement

Il existe trois types de problèmes de plus court chemin :


Problème 1: Soient s et t deux sommets du graphe G . Quel
est le plus court chemin de s à t?
Problème 2: Soit s un sommet du graphe G . Quel est le plus
court chemin de s vers tous les autres sommets de G ?
(algorithmes de Dijkstra, Bellman)
Problème 3: Quel est le plus court chemin entre tout couple
de points de G ?

Partie2-Graphes et algorithmes December 15, 2021 39 / 62


Graphe orienté

Algorithme de Dijkstra

L’algorithme de Dijkstra permet de trouver le plus court chemin d’un


sommet donné vers tous les autres sommets.
Il n’est utilisable que pour les graphes à valuations non-négatives, ce
qui implique qu’il n’y a pas de circuit de coût négatif dans le graphe.
De façon plus précise, à l’initialisation, chaque sommet à une
étiquette initialisée à +∞ sauf le sommet s qui a une étiquette à
0.
A chaque itération, l’algorithme choisit un sommet x et calcule
la valeur définitive de l’étiquette (label) V [x], valeur du plus
court chemin de s à x .
Puis, on cherche le sommet non fixé de plus petite valuation, et
on met à jour les étiquettes de ses successeurs.

Partie2-Graphes et algorithmes December 15, 2021 40 / 62


Graphe orienté

Algorithme de Dijkstra

Partie2-Graphes et algorithmes December 15, 2021 41 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 42 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 43 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 44 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 45 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 46 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 47 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 48 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 49 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 50 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 51 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 52 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 53 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 54 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 55 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 56 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 57 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 58 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 59 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 60 / 62


Graphe orienté

Exemple

Partie2-Graphes et algorithmes December 15, 2021 61 / 62


Graphe orienté

Complexité de l’algorithme
Lorsque la structure de données utilisée est une liste d’adjacence, la
complexité de l’algorithme est:
L’initialisation se fait en O(N),
Pour chacune des N itérations, la recherche du sommet x de
plus petite étiquette (lignes 6 à 10) se fait en O(N) et le
parcours des successeurs en O(d + (x)) .
La complexité globale de l’algorithme est donc O(N 2 ) .
Il est important de noter que la structure de données utilisée peut
être très importante sur la complexité des algorithmes.

Partie2-Graphes et algorithmes December 15, 2021 62 / 62

You might also like