Graphes et optimisation
Cours 1 – Introduction
Contenu de l’UE
I graphes et leurs représentations
I algorithmes d’exploration
I parcours en largeur
I parcours en profondeur
I algorithmes d’optimisation
I arbre couvrant le moins cher
I calcul de distances (plus cours chemin)
I optimisation de flots
I complexité d’algorithmes
Qu’est-ce qu’un graphe ?
Qu’est-ce qu’un graphe ?
Qu’est-ce qu’un graphe ?
Graphes – définitions
Un graphe G = (V , E) est un couple d’ensembles finis, dont
I V est l’ensemble de sommets de G (représentant des
objets), et
I E est l’ensemble d’arêtes de G (représenant des
liens/relations entre des objets).
Une arête relie deux sommets (pas nécessairement distincts).
Si l’arête e relie les sommets u et v , on écrit e = uv , on dit que
u et v sont voisins ou adjacents.
Graphes – définitions
Pour un graphe G, on note
I V (G) l’ensemble des sommets de G
I n = |V (G)| le nombre de sommets de G – l’ordre de G
I E(G) l’ensemble des arêtes de G
I m = |E(G)| le nombre d’arêtes de G – la taille de G
Graphes – définitions
Une arête reliant un sommet à lui-même est une boucle.
Des arêtes reliant la même paire de sommets sont des arêtes
parallèles (des arêtes multiples).
Un graphe est dit simple s’il n’a ni boucles ni arêtes multiples.
Graphes – définitions
Une arête reliant un sommet à lui-même est une boucle.
Des arêtes reliant la même paire de sommets sont des arêtes
parallèles (des arêtes multiples).
Un graphe est dit simple s’il n’a ni boucles ni arêtes multiples.
Y a-t-il un graphe simple parmi ces deux-ci ?
Graphes – représentations
I Les listes d’adjacence : pour chaque sommet du graphe la
liste de ses voisins ;
A: [B, C, C]
A B B: [A, D, E]
E C: [A, A, D]
C D D: [B, C, E]
E: [B, D, E, E]
Graphes – représentations
I Les listes d’adjacence : pour chaque sommet du graphe la
liste de ses voisins ;
I La matrice d’adjacence : pour chaque paire de sommets il
est indiqué s’ils sont voisins ou pas ;
v1 v1 v2 v3 v4 v5
v1 0 1 1 0 1
v2 v5 v2 1 0 1 0 1
v3 1 1 0 1 0
v3 v4 v4 0 0 1 0 1
v5 1 1 0 1 0
Graphes – représentations
I Les listes d’adjacence : pour chaque sommet du graphe la
liste de ses voisins ;
I La matrice d’adjacence : pour chaque paire de sommets il
est indiqué s’ils sont voisins ou pas ;
I La matrice d’incidence : pour chaque sommet et pour
chaque arête il est indiqué s’ils sont incidents ou pas.
v1 e1 e2 e3 e4 e5 e6 e7
v1 1 1 1 0 0 0 0
v2 v5 v2 1 0 0 1 1 0 0
v3 0 1 0 1 0 1 0
v3 v4 v4 0 0 0 0 0 1 1
v5 0 0 1 0 1 0 1
Degrés
Le degré deg(v ) d’un sommet v est la longueur de la liste
d’adjacence de v .
Dans un graphe simple, deg(v ) est égal au nombre d’arêtes
qui lui sont incidentes.
Degrés
Le degré deg(v ) d’un sommet v est la longueur de la liste
d’adjacence de v .
Dans un graphe simple, deg(v ) est égal au nombre d’arêtes
qui lui sont incidentes.
e1 e2 e3 e4 e5 e6 e7
v1 1 1 1 0 0 0 0
v2 1 0 0 1 1 0 0
v3 0 1 0 1 0 1 0
v4 0 0 0 0 0 1 1
v5 0 0 1 0 1 0 1
Quel est le degré de v2 ?
Degrés
Théorème (lemme des poignées de main)
Soit G un graphe. La somme des degrés de sommets de G est
égale au double du nombre d’arêtes de G :
X
deg(v ) = 2 · |E(G)|.
v ∈V (G)
Degrés
Théorème (lemme des poignées de main)
Soit G un graphe. La somme des degrés de sommets de G est
égale au double du nombre d’arêtes de G :
X
deg(v ) = 2 · |E(G)|.
v ∈V (G)
Démo. (par double comptage)
Posons sur chaqueP sommet du graphe autant de jetons que
son degré. Il y a v ∈V (G) deg(v ) de jetons au total.
Degrés
Théorème (lemme des poignées de main)
Soit G un graphe. La somme des degrés de sommets de G est
égale au double du nombre d’arêtes de G :
X
deg(v ) = 2 · |E(G)|.
v ∈V (G)
Démo. (par double comptage)
Posons sur chaqueP sommet du graphe autant de jetons que
son degré. Il y a v ∈V (G) deg(v ) de jetons au total.
Tout sommet passe un jeton à toute arête incidente.
Degrés
Théorème (lemme des poignées de main)
Soit G un graphe. La somme des degrés de sommets de G est
égale au double du nombre d’arêtes de G :
X
deg(v ) = 2 · |E(G)|.
v ∈V (G)
Démo. (par double comptage)
Posons sur chaqueP sommet du graphe autant de jetons que
son degré. Il y a v ∈V (G) deg(v ) de jetons au total.
Tout sommet passe un jeton à toute arête incidente.
Chaque arête reçoit deux jetons.
Degrés
Théorème (lemme des poignées de main)
Soit G un graphe. La somme des degrés de sommets de G est
égale au double du nombre d’arêtes de G :
X
deg(v ) = 2 · |E(G)|.
v ∈V (G)
Démo. (par double comptage)
Posons sur chaqueP sommet du graphe autant de jetons que
son degré. Il y a v ∈V (G) deg(v ) de jetons au total.
Tout sommet passe un jeton à toute arête incidente.
Chaque arête reçoit deux jetons.
Il y a donc 2m jetons, d’où l’égalité.
Degrés
Théorème (lemme des poignées de main)
Soit G un graphe. La somme des degrés de sommets de G est
égale au double du nombre d’arêtes de G :
X
deg(v ) = 2 · |E(G)|.
v ∈V (G)
Degrés
Théorème (lemme des poignées de main)
Soit G un graphe. La somme des degrés de sommets de G est
égale au double du nombre d’arêtes de G :
X
deg(v ) = 2 · |E(G)|.
v ∈V (G)
Démo. (par double comptage)
Degrés
Théorème (lemme des poignées de main)
Soit G un graphe. La somme des degrés de sommets de G est
égale au double du nombre d’arêtes de G :
X
deg(v ) = 2 · |E(G)|.
v ∈V (G)
Démo. (par double comptage)
P
v ∈V (G) deg(v ) est la somme des sommes de lignes de la
matrice d’incidence de G ;
Degrés
Théorème (lemme des poignées de main)
Soit G un graphe. La somme des degrés de sommets de G est
égale au double du nombre d’arêtes de G :
X
deg(v ) = 2 · |E(G)|.
v ∈V (G)
Démo. (par double comptage)
P
v ∈V (G) deg(v ) est la somme des sommes de lignes de la
matrice d’incidence de G ;
2m est la somme des sommest de colonnes de la dite matrice,
d’où l’égalité.
Chaînes et connexité
Une chaîne entre deux sommets u et v d’un graphe G est une
séquence d’arêtes consécutives, par exemple
(u0 u1 , u1 u2 , . . . , uk −1 uk ), telle que u = u0 et v = uk .
La longueur d’une chaîne est le nombre d’arêtes qui la
composent (ici k ).
u
Chaînes et connexité
On dit qu’un sommet v est accessible à partir du sommet u s’il
existe une chaîne reliant u et v .
Un graphe est dit connexe si ses sommets sont tous
accessibles entre eux, i.e., pour toute paire de sommets u et v
il existe une chaîne reliant u et v .
u
Chaînes et connexité
La distance dist(u, v ) entre deux sommets u et v du graphe G
est la longueur d’une plus courte chaîne entre u et v .
(S’il n’existe pas de chaîne entre ces sommets, la distance est
définie comme infinie.)
u
Cycles et arbres
Une séquence d’arêtes distinctes consécutives reliant un
sommet à lui même est appelée un cycle ; la longueur du cycle
est le nombre d’arêtes composant le cycle.
Toute boucle est un cycle de longueur 1.
Toute paire d’arêtes parallèles forme un cycle de longueur 2.
Cycles et arbres
Un arbre est un graphe connexe sans cycle.
Un arbre est-il toujours simple ?
Cycles et arbres
Un arbre est un graphe connexe sans cycle.
Un arbre est-il toujours simple ?
Un graphe H est un arbre couvrant du graphe G si H est un
arbre que l’on peut obtenir en supprimant des arêtes de G.