Introduction aux graphes et matrices
Introduction aux graphes et matrices
Représentations matricielles
Sous-graphes
Cheminement
Encodage
Algorithmique de graphes
Notions de base
Sophie Toulouse
20 septembre 2019
Graphe
Définition (graphe)
Un graphe est un couple (V , E ) où :
V est un ensemble de points appelés sommets du graphe
E est un ensemble de liaisons entre des paires de points, appelées
arêtes
Vocabulaire / notations :
le nombre |V | de sommets est appelé ordre du graphe
les cardinalités |V | et |E | sont usuellement notées n et m
Illustration
v1
e1 e2
v4 e4
G = (V , E ) : v2
e6 e7
e5
e3
G est un graphe d’ordre 4 où : v3
V = {v1 , v2 , v3 , v4 }
E = {e1 , e2 , e3 , e4 , e5 , e6 , e7 } où :
e1 = {v1 , v4 } (aussi notée v1 v4 , mais encore {v4 , v1 } ou v4 v1 )
e2 = {v1 , v2 } (aussi notée {v2 , v1 }, v1 v2 ou v2 v1 )
...
Arêtes particulières
Définition (boucle)
Les sommets extrémités d’une arête peuvent être les mêmes. L’arête est
alors appelée boucle.
e1 e2
v4 e6 est une boucle
e4
Exemple : v2
les arêtes e3 et e7 sont
e6 e7
e5
e3
parallèles
v3
Sophie Toulouse Algorithmique de graphes
Vocabulaire
Représentations matricielles Sommets, arêtes
Sous-graphes Adjacence, incidence
Cheminement Graphes particuliers
Encodage
Adjacence, incidence
v1
e1 e2 v1 et v2 sont adjacents
v4 e4
Exemple : v2 e1 et v1 sont incidents
e6 e7
e5 e1 et e2 sont adjacentes
e3
v3
v1
e1
Γ(v1 ) = {v2 , v3 , v4 }
e2
v4 e4 Γ(v2 ) = {v1 , v3 }
Exemple : v2
e6 e7 Γ(v3 ) = {v1 , v2 , v4 }
e5
e3
Γ(v4 ) = {v1 , v3 , v4 }
v3
Définition (degré)
Le degré d’un sommet est le nombre de fois qu’il est incident à une arête.
On note d(v ) le degré d’un sommet v .
v1
e1
d(v1 ) = 3
e2
v4 e4 d(v2 ) = 3
Exemple : v2
e6 e7 d(v3 ) = 4
e5
e3
d(v4 ) = 4
v3
Graphe simple
Rappel :
une boucle est une arête dont les deux extrémités coïncident
deux arêtes sont parallèles si elles relient les deux mêmes sommets
Propriété
Dans un graphe simple, le degré d’un sommet v est pécisément le
nombre |Γ(v )| de ses voisins.
Graphe complet
Exemples : K4 K5
Graphe biparti
Exemples :
Remarques :
un graphe biparti ne contient pas de boucle
siP
toute arête de G
P a une extrémité dans L et l’autre dans R, alors
v∈L d(v ) = v∈R d(v ) = |E |
Propriété
La matrice d’adjacence d’un graphe (non orienté) est symétrique.
Exemple
v1 v2
e7 e1 v1 v2 v3 v4 v5
v1 1 1 0 1 0
v5 v2 1 0 2 1 0
e6 e3 e4
e8 v3 0 2
e10 e2
e9 v4 1 1
v4 e5 v3 v5 0 0
Remarques :
sur une ligne v , la somme des coefficients vaut d(v )
sur une colonne e, la somme des coefficients vaut 2
Sophie Toulouse Algorithmique de graphes
Vocabulaire
Représentations matricielles
Matrice d’adjacence
Sous-graphes
Matrice d’incidence
Cheminement
Encodage
Exemple
v1 v2
e7 e1
v5
e6 e3 e4
e8
e10 e2
e9
v4 e5 v3
B(G ) e1 e2 e3 e4 e5 e6 e7 e8 e9 e10
v1 1 0 0 0 0 1 2 0 0 0
v2 1 1 1 1 0 0 0 0 0 0
v3 0 0
v4 0 0
v5 0 0
Sous-graphe
Définition (sous-graphe)
Si G = (V , E ) est un graphe, on appelle sous-graphe de G tout graphe
H = (W , F ) où W ⊆ V et F ⊆ E .
v3
Illustration : e3 e5
v1 v2 v4
e2 e4
G = e6
e1 e8 e7
(V , E ) e9
v6 v5
Sous-graphe partiel
Définition (sous-graphe partiel)
Un sous-graphe H = (W , F ) d’un graphe G = (V , E ) où W = V est
appelé sous-graphe partiel de G .
v3
e3 e5
Illustration : v1 v2 v4
e2 e4
e6
G = (V , E ) e1 e8 e7
e9
v6 v5
Illustration
v3
e3 e5
v1 v2 v4
e2 e4
G = (V , E ) e1
e6
e8 e7
e9
v6 v5
si W = {v2 , v4 , v5 , v6 }, G [W ] =
Chaîne
Définition (chaîne)
Une chaîne γ dans un graphe est une suite alternée
Remarques
Remarque : une chaîne peut emprunter plusieurs fois une même arête.
Illustration
v1 v2
e1
(v1 , e1 , v2 ) (ou (v1 , v2 ), mais aussi (v2 , e1 , v1 ) ou
(v2 , v1 )) est une chaîne de longueur 1
e3 (v1 , e1 , v2 , v5 , e7 , v4 ) n’est pas une chaîne
e2 e4
(v1 , e1 , v2 , e3 , v3 , e4 , v2 ) est une chaîne de
longueur 3
v5 v3
e8 (v5 , e7 , v4 , e6 , v4 , e5 , v3 , e5 , v4 , e6 , v4 ) (ou
(v5 , v4 , v4 , v3 , v4 , v4 )) est une chaîne de longueur
e5 5
e7
(v4 ) est une chaîne de longueur 0
Cycle
Définition (cycle)
Un cycle est une chaîne (v1 , e1 , v2 , . . . , vk , ek , vk+1 ) où vk+1 = v1 .
Illustration
v1 v2
e1
G = (V , E )
Théorème
Un graphe est biparti si et seulement s’il ne contient pas de cycle de
longueur impaire.
Démonstration ⇒.
Supposons que G est biparti et contient un cycle de longueur impair
(v1 , e1 , v2 , . . . , v2k+1 , e2k+1 , v1 ). Alors . . .
Illustration
v1 v2
e1
e3
e2 e4
le cycle (v2 , e3 , v3 , e4 , v2 ) est simple, le cycle
(v2 , e3 , v3 , e3 , v2 ) ne l’est pas
v5 v3
la chaîne (v5 , v4 , v4 , v3 ) est simple, les chaînes
e8 (v5 , v4 , v4 , v4 , v3 ) et (v5 , v4 , v4 , v3 , v4 ) ne le sont
pas
e5
e7 les cycles (v4 ) et (v4 , v4 ) sont simples, le cycle
(v4 , v4 , v4 ) ne l’est pas
v4 e6
G = (V , E )
Illustration
v1 v2
e1
e3
e2 e4
(v2 , e1 , v1 , e2 , v3 , e3 , v2 , e4 , v3 , e8 , v3 , e5 , v4 , e6 , v4 , e7 , v5 )
v5 v3
est une chaîne eulérienne de G
e8
G n’est pas eulérien
e5
e7
G [{v2 , v3 }] est eulérien
v4 e6
G = (V , E )
Théorème
Un graphe est eulérien si et seulement si ses sommets sont tous de degré
pair.
Démonstration ⇒.
Par hypothèse, on peut regarder E comme un cycle simple (v1 , e1 , v2 , . . . , vm+1 = v1 ).
Illustration
v1 v2
e1
e3
e2 e4
la chaîne (v4 , e5 , v3 , e3 , v2 , e4 , v3 ) est simple, mais
pas élémentaire
v5 v3
la chaîne (v4 , e5 , v3 , e3 , v2 ) est élémentaire
e8
la cycle (v3 , e3 , v2 , e4 , v3 , e8 , v3 ) est simple, mais
e5 pas élémentaire
e7
la cycle (v3 , e3 , v2 , e4 , v3 ) est élémentaire
v4 e6
G = (V , E )
Rappel :
Une chaîne simple ne passe pas deux fois par une même arête
Une chaîne élémentaire, quand on la parcourt, ne revient jamais sur
un sommet déjà visité (sauf s’il s’agit du premier et du dernier
sommet visités)
Propriété
Une chaîne (dont un cycle) élémentaire est simple.
Remarque :
une chaîne hamiltonienne d’un sommet u à un sommet v 6= u est de
longeur |V | − 1
un cycle hamiltonien est de longeur |V |
Illustration
v1 v2
e1
e3
e2 e4
v4 e6
G = (V , E )
Encombrement mémoire :
les tableaux DEB et FIN sont de dimension n
le tableau LS est de dimension
⇒ O(m + n) espace mémoire
Illustration
v1
e1 e2
v4 e4
G = (V , E ) v2
e6 e7
e5
e3
v3
On stocke dans DEB et FIN les indices 1 et 3 pour v1 , puis 4 et 6 pour v2 , ... :
1 2 3 4
1 4 DEB
3 6 FIN
Encombrement mémoire :
le tableau des listes est de dimension n
le nombre total de maillons manipulés dans les listes est
⇒ O(m + n) espace mémoire
Illustration
v1
e1 e2
v4 e4
G = (V , E ) v2
e6 e7
e5
e3
v3
Discussion