Algorithmes de parcours de graphes : BFS et DFS

Telechargé par mohamed ben youssef
5.
Problème de parcours
des graphes
Algorithmes de parcours d’un graphe
2
Définition
On appelle exploration ou parcours d’un graphe, tout
procédé déterministe qui permet de choisir, à partir des
sommets visités d’un graphe ou d’un arbre, le sommet
suivant à visiter. Le problème consiste à déterminer un
ordre sur les visites des sommets.
Définition
Le problème consiste à déterminer un ordre sur les
visites des sommets.
N.B La notion d’exploration / parcours peut être utilisée
dans les graphes orientés comme non-orientés.
1
2
Algorithmes de parcours d’un graphe
Permet ainsi de calculer les distances de tous les noeuds depuis
un nœud source dans un graphe non valué (orienté ou non
orienté).
Il permet aussi de déterminer si un graphe est connexe ou non
en basant le calcule sur les composantes connexes du graphe
3
Pour vérifier la connexité d’un graphe non orienté, il suffit pour
cela d’appliquer un des algorithmes suivants:
Parcours en Largeur (Breadth-First Search)
Parcours en Profondeur (Depth-First Search)
Algorithmes de parcours d’un graphe
Ces parcours sont des algorithmes de marquage qui
permettent d’explorer complètement un graphe à partir
d’un sommet quelconque
Avant de présenter les algorithmes de parcours des graphes, il
faut tout d’abord définir deux concepts de base:
4
Racine: Le sommet de départ, fixé à l’avance, dont on souhaite
visiter tous les descendants est appelé racine de
l’exploration
Parcours: Un parcours de racine rest une suite Lde sommets telle
que:
1. rest le premier sommet de L,
2. chaque sommet apparaît une fois et une seule dans L,
3. tout sommet sauf la racine est adjacent à un sommet
placé avant lui dans la liste.
3
4
Algorithmes de parcours d’un graphe
Parcours en largeur
Un parcours en largeur explore le graphe à partir d’un
sommet donné (sommet de départ ou sommet source).
L’algorithme simule la transmission d’un message à partir
d’un sommet source, en utilisant l’idée suivante : tout
sommet qui reçoit le message, le transférera à tous ses
voisins qui ne l’auront pas encore reçu
On continue avec le même principe jusqu’à visiter tous les
sommets du graphe, auquel cas le parcours est terminé ou
bien reprend en un sommet non encore visité
5
Algorithmes de parcours d’un graphe
Parcours en largeur
6
Un parcours en largeur (BFS) permet le parcours d'un graphe
en commençant par explorer un noeud source, puis ses
successeurs, puis les successeurs non explorés des successeurs.
Propriétés de l’algorithme BFS
BFS est un algorithme de parcours de graphe par recherche en
largeur d'abord (Breadth First Search).
Fonctionne avec les graphes orientés et non-orientés.
Permet la détection de cycle si on considère le graphe non-orienté.
Permet la détection de Composantes Simplement Connexes si il
reste des sommets non traités après un premier passage (rapide en
pratique)
5
6
Algorithmes de parcours d’un graphe
Parcours en largeur
7
Deux contraintes sont à respecter pour ce type de parcours sont :
Un sommet déjà visité ne doit pas être revisité.
On explore les sommets successeurs directs.
L'algorithme de base repose sur l'utilisation d'une pile qui
va maintenir à jour la liste des sommets à visiter.
Parcours en largeur: Exemple illustratif
8
Exemple: Prenons le graphe G ci-dessous . Imaginons que nous voulions
parcourir le graphe en largeur en partant du sommet 1.
Résultat:
Le parcours en largeur de ce graphe donnerait la liste suivante : 1 2 3 4 6 5 7 8.
Une autre solution serait la suivante : 1 3 2 6 4 5 8 7.
Elles sont toutes les deux valables.
7
8
Parcours en largeur: Exemple illustratif
9
1. On part du sommet 1, on liste tous les sommets successeurs, il s'agit donc des
sommets 2 et 3. Marquons-les d’une couleur différente pour ne pas les passer
deux fois.
2. Il n'y a plus de sommets directement accessibles à partir du sommet 1. Il faut
donc maintenant chercher ceux qui sont accessibles en passant par un
sommet. Ceci revient en fait à chercher les successeurs des sommets
précédemment parcourus. On doit donc parcourir à nouveau en largeur mais
en partant des sommets précédemment explorés. On commence par le
sommet 2, le seul successeur est le sommet 4, on l'affiche et on le marque
comme étant parcouru. On passe au sommet 3, tout comme le sommet 2, il
n'a qu'un seul successeur. On le marque comme déjà parcouru.
3. Il faut donc parcourir en partant des sommets 4 et 6. Le sommet 4 a deux
successeurs, le sommet 5 et le sommet 6. Or le sommet 6 a déjà été visité, on
ne doit donc pas le mettre dans la file des sommets à parcourir. On ajoutera
seulement le sommet 5 à la file des sommets à parcourir.
4. Concernant le parcours à partir du sommet 6, il n'y a rien à faire, en effet, celui-
ci n'a pas de successeurs. On réitère le processus jusqu'à avoir parcouru tous
nos sommets.
Parcours en largeur: Exemple illustratif
10
Les nœuds sont marqués en fonction de leur ordre de visite par le BFS : le
nœud n°1 correspond donc à l'origine. Les nœuds en cours de visite (c'est à
dire présents dans la file) sont coloriés en bleu. Les nœuds déjà visités et
extraits de la file sont coloriés en vert
9
10
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!