Graphes et optimisation
Chapitre 2:
La connexité
Ghallabi Sameh
[email protected]
ISIMM
Accessibilité
graphe non orienté: Entre deux sommets, il existe une succession
d’arêtes.
• J est accessible depuis A
•A est accessible depuis J
•⇒l’accessibilité est symétrique
• ⇒Chaine
Définitions
Dans un graphe non orienté, une chaine est une suite finie,
débutant et finissant par un sommet.
Une chaîne est une succession d'arêtes mises bout à bout.
La longueur de la chaîne est le nombre d'arêtes qui la compose.
On dit qu'une chaîne est fermée si ses extrémités coïncident.
Un cycle est une chaîne fermée dont les arêtes sont toutes
distinctes.
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.
Exemple
Dans le graphe ci-contre,
A – B – C – D – E est une chaîne de longueur 4.
A – B – E – D – B – A est une chaîne fermée de longueur 5.
B – C – D – E – B est un cycle de longueur 4.
Accessibilité
graphe orienté: Entre deux sommets, il existe une succession d’arcs
x4 est accessible depuis x9
x9 n’est pas accessible
depuis x4
⇒l’accessibilité est non
symétrique
⇒Chemin
Chaine - Cycle ! Graphe non
orienté
Chaines (cas non orienté)
Liste d’arêtes consécutives (ou de sommets)
Longueur d’une chaine = nombre d’arêtes
Cycle (cas non orienté)
Chaine fermée
Longueur d’un cycle = nombre d’arêtes
Exemple: (A, B, D, E) et (H, K, J, I, G, H)
Chemin - Circuit ! Graphe orienté
Chemin (cas orienté)
Liste d’arcs consécutifs
Longueur d’un chemin = nombre d’arcs
Circuit (cas orienté)
Chemin fermé
Longueur d’un circuit = nombre d’arcs
Exemple: (x1, x2, x6, x3) et (x7, x1, x11, x10, x8, x7)
Définitions
Chaine/Cycle/Chemin/Circuit élémentaires
passe au maximum une seule fois par chacun des sommets
Chaine/Cycle/Chemin/Circuit simples
passe au maximum une seule fois par chacun des arcs/arêtes
(E, D, C, A, B): chaine élémentaire
(et simple)
(B, D, E, A, C): chaine élémentaire
(et simple)
(A, B, D, C, A, E, D): chaine simple
(non élémentaire)
Notions de connexité
Connexité
Cas des graphes non orientés. Un graphe non orienté est connexe si
chaque sommet est accessible à partir de n’importe quel autre.
Exemple: le graphe non orienté suivant n’est pas connexe, car il
n’existe pas de chaîne entre les sommets a et e
Le sous-graphe défini par les sommets {a, b, c, d} est connexe.
Notions de connexité
Forte Connexité :
Un graphe orienté est fortement connexe si chaque sommet est
accessible à partir de n’importe quel autre.
Exemple,
Un graphe est Un graphe n’ est pas
fortement connexe fortement connexe
Graphe acyclique
Un graphe non orienté est dit acyclique si il ne contient pas de
cycle.
Un graphe orienté est dit acyclique si il ne contient pas de circuit.
Notion de graphe eulérien
Un graphe est dit connexe si on peut relier deux quelconques de
ses sommets par une chaine.
Une chaine eulérienne est une chaine satisfaisant aux conditions
suivantes:
- elle contient toutes les arêtes du graphe
- chaque arête n’est pas décrite qu’une seule fois.
Plus simplement, on peut dire qu’un graphe est eulérien s’il
est possible de dessiner le graphe sans lever le crayon.
Exemple:
La chaîne B – A – D – B – C – D – E – A – C
est par exemple une chaine eulérienne.
Notion de graphe eulérien
Un cycle eulérien est une chaine eulérienne fermée.
Exemple:
Dans le graphe ci-contre, la chaîne
A – B – C – D – E – F – A est un cycle eulérien.
Notion de graphe eulérien
Théorème d'Euler : Soit G un graphe connexe.
-G admet un cycle eulérien si, et seulement si, tous les sommets
de G sont de degré pair.
- G admet une chaîne eulérienne si, et seulement si, deux
sommets de G exactement sont de degré impair. Dans ce cas, la
chaîne est d'extrémité ces deux sommets.
Notion de graphe eulérien
Théorème : Un multigraphe orienté fortement connexe admet un
circuit eulérien si et seulement si d ◦+(si) = d ◦−(si) pour tout sommet si
∈ S.
Théorème : Un multigraphe orienté connexe admet un chemin
eulérien si et seulement si il existe deux sommets v0 et v1 tel que
-d +(v0) = d −(v0) + 1,
-d +(v1) = d −(v1) − 1
- pour tout v ∈ V \ {v0, v1}, d −(v) = d +(v),
Notion de graphe eulérien
Exercice: Montrer que le graphe suivant est eulérien
Graphes planaires
Soit G un graphe orienté ou non. On dira que G est planaire s’il
admet une représentation où ses arêtes (ou arcs) ne se coupent pas.
Exemple:
Graphes planaires
Exercice : Montrer que les graphes suivants sont planaires :
Correction : on peut le représenter de la façon suivante.
Faces d’un graphe planaire
Etant donnée une représentation planaire d’un graphe G, le plan se
retrouve divisé en un certain nombre de régions qu’on appelle les
faces de la représentation planaire.
Théorème d’Euler: s + f = 2 + a
Par exemple, le graphe suivant : possède 4 faces (notées A, B, C et D).
Faces d’un graphe planaire
Exercice:
Considérons un graphe G dont les degrés de ses sommets sont
4, 4, 4, 4, 3, 3.
a) Combien d’arêtes possède G ? Justifier.
b) Donner une représentation planaire de G en déterminant
d’abord le nombre de faces.
c) Vérifier que la somme des degrés des faces est égal au
double du nombre d’arêtes.
Graphes hamiltoniens
une chaine hamiltonienne passe une et une seule fois par chacun
des n sommets du graphe.
On appelle cycle hamiltonien un cycle élémentaire de longueur n.
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.
Un graphe possédant un cycle ou une chaine hamiltonien sera dit
graphe hamiltonien.
Graphes hamiltoniens
Exemple:
G2
G1
le graphe suivant ne possède pas de
cycle hamiltonien, mais possède
Le graphe possède
une chaine hamiltonienne (< a, b, e,
un cycle hamiltonien
d, c >).
(< a, e, b, d, c, a >)
Graphes biparti
Un graphe est dit biparti s’il existe S1 et S2, deux sous-ensembles
de S tels
-qu'il n'y ait aucune arête entre éléments de S1 et aucune arête entre
éléments de S2
-S1 𝖴 S2 = S et S1 ∩ S2 = ∅
Graphes biparti
un graphe est dit biparti complet entre un ensemble de n
sommets et un ensemble à m sommets tel que:
-Chaque sommet du premier ensemble est relié à tous les sommets
du second ensemble.
-Si le premier ensemble m et le second ensemble n, le graphe
biparti complet est noté Kn,m.
Exemple:
arborescence
Une arborescence est un graphe orienté sans circuit.
Elle admet une racine s0 ∈ S telle que, pour tout autre sommet si
∈ S, il existe un chemin unique allant de s0 vers si .
Si l’arborescence comporte n sommets, alors elle comporte
exactement n − 1 arcs.
Par exemple, le graphe suivant est une arborescence de racine a :
Racine: sommet de degré
entrant = 0
Feuilles: sommet de degré
sortant = 0
Arbre
On appelle arbre tout graphe connexe sans cycle.
un graphe non orienté comportant n sommets, les propriétés
suivantes sont équivalentes pour caractériser 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,
-Nœuds de l’arbre = sommets du graphe
-Feuilles = sommets de degrés 1 / Noeuds interne = sommets de degré >
1
-Les sommets 1, 2 et 5 sont les feuilles
Codage et décodage d’un arbre –
Prüfer code
le codage de Prüfer est une méthode pour décrire de façon
compacte un arbre dont les sommets sont numérotés.
Ce codage représente un arbre de n sommets numérotés avec
une suite P=(x1,x2,x3,...,xn−2) de n-2 termes.
Une suite P donnée correspond à un et un seul arbre numéroté de 1
àn
Codage – Prüfer code
Codage d’un arbre – Prüfer code
Codage d’un arbre – Prüfer code
Codage d’un arbre – Prüfer code
Codage d’un arbre – Prüfer code
Décodage d’un arbre – Prüfer code
Décodage d’un arbre – Prüfer code
Construire l’arbre correspondant à codage de prufer suivant: [7, 6, 5, 4, 3]
Décodage d’un arbre – Prüfer code
Décodage d’un arbre – Prüfer code
Décodage d’un arbre – Prüfer code
Arbres couvrants
Un graphe couvrant de G = (V, E) est un graphe partiel de G qui
est un arbre et qui contient tous les sommets de V.
Arbres couvrants de poids minimum
Soit un graphe G=(V, E, w) est un graphe non orienté pondéré.
On appelle arbre couvrant de poids minimum de G.
-noté ACPM ou MST (minimum Spanning Tree).
- Tout arbre couvrant dont la somme de poids des arêtes le
constituant est minimal.
Arbres couvrants de poids minimum
Un graphe admet un arbre couvrant si, et seulement si, il est
connexe.
L’arbre couvrant de poids minimal n’est pas forcément unique.
Application
Soit le graphe G qui représente le réseau des rues d’une ville que
l’on cherche à câbler.
Pour câbler de façon optimale cette ville il faut trouver un graphe
connexe tel que:
- Chaque sommet doit avoir accès au réseau.
- Le cout du câblage doit être minimum.
Problème
Entrée : Un graphe (non-orienté) G connexe, avec une pondération
des arêtes
w : E(G) → R +
Comment trouver un arbre couvrant, T , de G qui minimise
ω(T ) ?.
Sortie: : Un arbre couvrant T de G, de poids minimum
Algorithme Kruskal: Principe
Algorithme Kruskal: Principe
Trier les arêtes par poids croissant
À chaque itération, on choisit l’arête de coût minimal
Ajouter une `a une les arêtes dans cet ordre sans créer de cycle.
L’algorithme se termine lorsqu’on a un seul arbre.
Algorithme Kruskal:
Algorithme Kruskal:
Algorithme Kruskal: exemple
Algorithme Kruskal: exemple
Algorithme Kruskal: exemple
Algorithme Kruskal: exemple
Algorithme Kruskal: exemple
Exercice