Théorie
des graphes
Maximilien Colange
Planches de Souheib Baarir
THEG 1 colange@[Link]
I
Introduction
&
Définitions
THEG 2 colange@[Link]
Historique
1735 Leonhard Euler expose une solution formelle au
problème des 7 ponts de Königsberg :
« Lors d'une promenade, est-il possible de passer sur
tous les ponts de la ville une et une seule fois ? »
THEG 3 colange@[Link]
Domaines d'applications
Chimie :
Modélisation des molécules (A. Cayley en 1860)
Mécanique :
Treillis
Biologie :
Réseau de neurones
Séquencement du génome
Sciences sociales :
Modélisation des relations
Et bien sûr dans divers domaines de l'informatique
THEG 4 colange@[Link]
Définition : graphe
Un graphe orienté G est un couple (S,A) où :
S un ensemble fini : ensemble des sommets
A une relation binaire sur S : ensemble des arcs
Un graphe NON orienté G est un couple (S,A) :
S un ensemble fini : ensemble des sommets
A paires non ordonnées : ensemble des arêtes
THEG 5 colange@[Link]
Exemple : graphe
● Cas orienté :
1 S = {1,2,3}
A ={(1,2) , (3,2) , (3,3)}
2 3
● Cas non-orienté :
1 S = {1,2,3}
A ={{1,2} , {3,2} , {3}}
2 3
THEG 6 colange@[Link]
Successeurs, prédécesseurs et voisins
Les successeurs d'un sommet x sont définis par
l'ensemble : δ+(x) ={y | (x,y) ∈ A}
Les prédécesseurs d'un sommet x sont définis par
l'ensemble : δ-(x) ={y | (y,x) ∈ A}
Les voisins d'un sommet x sont définis par l'ensemble :
δ(x) = δ-(x) ∪ δ+(x)
Note : dans le cas non orienté, δ(x) = δ-(x) = δ+(x)
THEG 7 colange@[Link]
Degré d'un sommet
Dans un graphe :
On appelle degré sortant d'un sommet :
le nombre d'arcs qui partent de ce sommet (d+(x) = |δ+(x)|)
On appelle degré entrant d'un sommet :
le nombre d'arcs qui arrivent à ce sommet (d-(x) = |δ-(x)|)
On appelle degré d'un sommet :
la somme des degrés entrant et sortant du sommet
(d(x) = |δ(x)|)
Note : dans le cas non orienté, d(x) = d-(x) = d+(x)
THEG 8 colange@[Link]
Chemin (1/2)
Un chemin d'un sommet u au sommet u' est une
séquence de sommets (v0,v1,v2, ... vk-1,vk ) tels que :
u = v0 , u' = vk et ∀ i, (vi-1 ,vi ) ∈ A
On dit que ce chemin a une longueur k
Ce chemin est élémentaire ssi ∀ i, j, vi ≠ vj
Un sommet u est accessible depuis un sommet v ssi :
il existe un chemin du sommet u au sommet v
THEG 9 colange@[Link]
Chemin (2/2)
Dans un graphe orienté :
Un chemin (v0,v1, ... ,vk ) forme un circuit ssi v0= vk
Ce circuit est élémentaire ssi ∀ i, j [1,...,k-1], vi ≠ vj
Une boucle est un circuit de longueur 1
Un graphe est acyclique ssi il ne contient aucun circuit
Dans un graphe non orienté :
Un chemin (v0,v1, ... ,vk ) forme un cycle ssi ( v0= vk )
Un graphe est acyclique ssi il ne contient aucun cycle
THEG 10 colange@[Link]
Propriétés
On dit d'un graphe qu'il est :
Réflexif ssi :∀ ui S , (ui ,ui ) A
Irréflexif ssi :∀ ui S , (ui ,ui ) ≠ A
Transitif ssi :
∀ ui , uj , uk S , (ui ,uj ) A ∧ (uj ,uk ) A ⇒ (ui ,uk ) A
On dit d'un graphe orienté qu'il est :
Symétrique ssi :∀ ui ,uj S , (ui ,uj ) A ⇒ (uj ,ui ) A
Anti-Symétrique (Assymétrique) ssi :
∀ ui , uj S , (ui ,uj ) A ∧ (uj ,ui ) A ⇒ ui = uj
THEG 11 colange@[Link]
Connexité
On dit d'un graphe non orienté qu'il est :
Connexe ssi pour toute paire de sommets (u,v)
il existe une chaîne entre les sommets u et v.
Complet ssi tous les sommets sont «reliés» 2 à 2 :
∀ u,v S , (u,v ) A
On dit d'un graphe orienté qu'il est :
Connexe ssi le graphe non-orienté correspondant est
connexe
Fortement connexe ssi pour tout (u,v) il existe un
chemin de u à v et un chemin de v à u
Complet ssi tous les sommets sont «reliés» 2 à 2 :
∀ u,v S , ( (u,v ) A ) ∨ ((v,u) A )
THEG 12 colange@[Link]
K-Connexe
Un graphe non-orienté est k-connexe ssi :
il reste connexe après suppression d'un ensemble
quelconque de k-1 arêtes et s'il existe un ensemble
de k arêtes qui déconnecte le graphe.
Un graphe orienté est k-connexe ssi :
le graphe non-orienté correspondant est k-connexe
Cette notion est utilisée :
en électronique pour le calcul de la fiabilité
dans l'étude de jeux de stratégie (cut and connect).
THEG 13 colange@[Link]
Exemple
Ce graphe orienté est-il :
1 Réflexif ?
Transitif ?
3 2 Antisymétrique ?
Connexe ?
4 Complet ?
ATTENTION :
Dans un graphe orienté :
Complet n'implique pas Fortement connexe.
Ex : il n'y a pas de chemin pour aller de 2 a 1
THEG 14 colange@[Link]
Graphes remarquables (1/2)
Certains graphes portent des noms particuliers :
Biparti = graphe qui peut être partitionné en
deux sous-ensembles de sommets S1 et S2 tels que
deux sommets du même ensemble ne sont jamais
voisins.
Hypergraphe = graphe non orienté où chaque
arête est une hyperarête qui relie un sommet à
un ensemble de sommets.
Forêt = graphe non orienté acyclique.
Arbre = graphe connexe non orienté acyclique.
THEG 15 colange@[Link]
Graphes remarquables (2/2)
Graphe valué (pondéré) = c'est un graphe
(orienté ou non) G =(S, A) muni d'une application
p: A→ℝ
( x , y) → p( x , y)
4 2
A B C D
12 2 3 Valuation (ou Poids)
-4 7 1 8 de l'arc (x,y)
-10 -3 4
E F G H
THEG 16 colange@[Link]
Représentation d'un graphe
Il existe deux façons de représenter un graphe (S, A) :
Liste d’adjacence : pour les graphes peu denses
2
Card (A) << ( Card (S) )
Matrice d'incidence : pour les graphes denses
2
Card (A) ≃ ( Card (S) )
THEG 17 colange@[Link]
Liste d'adjacence
Pour chaque sommet u S on a une liste d'adjacence :
Adj [u] liste des sommets v S tel que (u,v ) A
1
1 2 3
2 3 5
2 3 3 4
4 5
5 3
5 4
THEG 18 colange@[Link]
Liste d'adjacence
Pour chaque sommet u S on a une liste d'adjacence :
Adj [u] liste des sommets v S tel que (u,v ) A
1
1 2 3
2 1 3 5
2 3 3 1 2 52 24
4 5 3
5 2 3 4
5 4
NB : Si le graphe est pondéré, on rajoute un
champ avec le poids de l'arc (arête).
THEG 19 colange@[Link]
Liste d'adjacence : quelques complexités
● Stockage : Θ(|S|+|A|)
● Test d’existence arc : O(max{δ +(s) | s ∈ S})
● Parcours des arcs incidents à un sommet : O(max{δ +(s) | s ∈ S})
● Trouver un voisin : Θ( 1 )
THEG 20 colange@[Link]
Matrice d'adjacence
Pour un graphe orienté :
{
∀ i , j∈S a ij= 1 si i , j ∈ A
0 sinon
{ }
1
0 1 1 0 0
0 0 1 0 1
2 3
Mat S , A= 0 0 0 1 0
0 0 0 0 1
0 0 1 0 0
5 4
THEG 21 colange@[Link]
Matrice d'adjacence
Pour un graphe non orienté : ∀i , j ∈S a ij = {
1 si (i , j)∈ A
0 sinon
{ }
1 0 1 1 0 0
1 0 1 0 1
2 3
Mat S , A= 1 1 0 1 1
0 0 1 0 1
0 1 1 1 0
5 4
NB : Si le graphe est pondéré, aij = p(i,j)
THEG 22 colange@[Link]
Matrice d'adjacence : quelques complexités
● Stockage : Θ(|S|2)
● Test d’existence arc : Θ(1)
● Parcours des arcs incidents à un sommet : Θ(|S|)
● Trouver un voisin : O(|S|2)
THEG 23 colange@[Link]