Cours - Présentation - Les Graphes
Cours - Présentation - Les Graphes
Cours - Présentation - Les Graphes
➢Définitions et terminologies
➢Implémentation des graphes
➢Algorithmes de parcours d’un graphe
➢Algorithme de Dijkstra
Ponts de Konigsberg
Définitions et terminologies
Un graphe est la donnée d'un certain nombre de
points du plan, appelés sommets, certains étant
reliés par des segments de droites ou de courbes
appelés arêtes, la disposition des sommets et la
forme choisie pour les arêtes n'intervenant pas.
Exemples des situations
modélisées par un graphe
➢ Transport :
▪ Carte géographique : Recherche du chemin le plus court entre deux villes.
▪ Un réseau ferroviaire : chaque gare est un sommet, les voies entre deux
gares sont les arêtes. Idem avec un réseau routier.
▪ Les lignes aériennes
➢ Informatique :
▪ Le web : chaque page est un sommet du graphe, chaque lien hypertexte est
une arête entre deux sommets.
▪ Le routage des réseaux informatiques
▪ Un réseau social : les sommets sont les personnes, deux personnes sont
adjacentes dans ce graphe lorsqu’elles sont “amies”. Si la notion d’amitié
n’est pas réciproque, le graphe est orienté.
Exemple d’application 1
Des étudiants A, B, C, D, E et F doivent passer des examens dans
différentes disciplines, chaque examen occupant une demi-journée :
– Algorithmique : étudiants A et B.
– Compilation : étudiants C et D.
– Bases de données : étudiants C, E, F et G.
– Java : étudiants A, E, F et H.
– Architecture : étudiants B, F, G et H.
On cherche à organiser la session d’examen la plus courte possible.
Exemple d’application 1
Solution :
Exemple d’application 1
Solution :
Session 1:
Algo : A,B
BD : C, E, F, G
Session 2:
Java : A, E, F, H
Comp : C
Session 3:
Arch : B, F, G, H
Exemple d’application 2
Une chèvre, un chou et un loup se trouvent sur la rive d’un fleuve ; un
passeur souhaite les transporter sur l’autre rive mais, sa barque étant
trop petite, il ne peut transporter qu’un seul d’entre eux à la fois.
Comment doit-il procéder afin de ne jamais laisser ensemble et sans
surveillance le loup et la chèvre, ainsi que la chèvre et le chou ?
Exemple d’application 2
Solution :
Cette situation peut être modélisée à l’aide d’un graphe. Désignons par
P le passeur, par C la chèvre, par X le chou et par L le loup. Les sommets
du graphe sont des couples précisant qui est sur la rive initiale, qui est
sur l’autre rive. Ainsi, le couple (PCX,L) signifie que le passeur est sur la
rive initiale avec la chèvre et le chou (qui sont donc sous surveillance),
alors que le loup est sur l’autre rive.
Exemples :
A B C D A est un cycle
A B C A est un cycle
D C A D est un cycle
A B C A D C A n'est un cycle
Définitions et terminologies
➢Chemin : c’est une chaine bien orientée
Exemples :
A B C D est un chemin
A D C A B n'est pas un chemin
A B C A D n'est pas un chemin
Définitions et terminologies
➢Circuit : est un cycle "bien orienté", à la fois
cycle et chemin.
Exemples :
A B C A est un circuit
A B C D A es un circuit
A D C A est un cycle mais pas un circuit
Définitions et terminologies
Graphe Connexe : Un graphe connexe est un graphe dont
tout couple de sommets peut être relie par une chaine de
longueur n>=1
Exemples :
ABCD, ABDC, ACBD,ACBD
ACDB
Définitions et terminologies
➢Chaîne eulérienne : Chaîne passant une
seule fois par toutes les arêtes d’un graphe.
Exemples :
BACBDC est une chaîne eulérienne
ACDBACB n'est pas une chaîne eulérienne
Définitions et terminologies
➢Cycle hamiltonien : passant une seule fois
par tous les sommets d’un graphe et
revenant au sommet de départ
OUI NON
Retour à Konigsberg
Sous forme de graphe
• Parcours en profondeur
• Algorihtme de Dijkstra
Parcours en largeur d’un
graphe
Ce parcours peut être utilisé pour :
Algorithme :
1- S est le sommet de départ
2- Cet algorithme liste d'abord les voisins de S pour
ensuite les explorer un par un.
2- Répétez (1) pour chaque voisin.
Parcours en largeur d’un
graphe : Exemple
Pour tester :
L=[]
parcours_profondeur(GRAPHE, 'A', L)
print(L)
Algorithme de Dijkstra
En théorie des graphes, l'algorithme de Dijkstra sert à résoudre
le problème du plus court chemin.
Il s'applique à un graphe connexe dont le poids lié aux arêtes est un réel
positif.
Applications :
1. Chemin le plus court entre deux villes
2. Chemin le plus rapide entre deux poins en ville.
3. Routage d’information optimal
4. ….
Algorithme de Dijkstra
Exemple : Trouver le chemin optimal entre
A et G
Algorithme de Dijkstra
Initialisation de l'algorithme :
Etape 1
Etape 2
Etape 3
Etape 4
Etape 5
Etape 6
Etape 7
Algorithme de Dijkstra
Règles pour remplir les cases de chaque cellule:
Soit e le sommet de départ.
1. La valeur de chaque cellule est un couple : (d(v), p(v))
Où : d(v) est la distance minimale du sommet de départ e
au somment v et p(v) représente le sommet précédent du
chemin optimal reliant e et v.
2. d(e)=0 (e est le sommet de départ)
3. d(v)=∞ si la distance est non encore calculé
Algorithme de Dijkstra
Etapes de l’algorithme :
A B C D E F G
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
Etape 2 X
Etape 3 X
Etape 4 X
Etape 5 X
Etape 6 X
Etape 7 X
Algorithme de Dijkstra
Etapes de l’algorithme :
A B C D E F G
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
Etape 3 X
Etape 4 X
Etape 5 X
Etape 6 X
Etape 7 X
Algorithme de Dijkstra
Etapes de l’algorithme :
A B C D E F G
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
Etape 3 X
Etape 4 X
Etape 5 X
Etape 6 X
Etape 7 X
Algorithme de Dijkstra
Etapes de l’algorithme :
A B C D E F G
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
Etape 4 X X
Etape 5 X X
Etape 6 X X
Etape 7 X X
Algorithme de Dijkstra
Etapes de l’algorithme :
A B C D E F G
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
Etape 4 X X
Etape 5 X X
Etape 6 X X
Etape 7 X X
Algorithme de Dijkstra
Etapes de l’algorithme :
A B C D E F G
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
Etape 5 X X X
Etape 6 X X X
Etape 7 X X X
Algorithme de Dijkstra
Etapes de l’algorithme :
A B C D E F G
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
Etape 5 X X X
Etape 6 X X X
Etape 7 X X X
Algorithme de Dijkstra
Etapes de l’algorithme :
A B C D E F G
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
Etape 6 X X X X
Etape 7 X X X X
Algorithme de Dijkstra
Etapes de l’algorithme :
A B C D E F G
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
Etape 7 X X X X X
Algorithme de Dijkstra
Etapes de l’algorithme :
A B C D E F G
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
Etape 7 X X X X X X (6,D)
Algorithme de Dijkstra
Etapes de l’algorithme :
A B C D E F G
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
...
Etape 1 0 ∞ ∞ ∞ ∞ ∞ ∞
...