[PDF] [PDF] Algorithmique Cours 7 : Parcours de graphes ROB3





Previous PDF Next PDF



Algorithmique des graphes - Cours 3 – Parcours en largeur

Algorithme 1 : Parcours en largeur BFS(Gs). Données : graphe G



Chapitre 2. Parcours de graphes

Algorithme 3 : PARCOURSLARGEURARBRE(A). Entrées : un arbre enraciné A. Sortie : la liste des sommets de l'arbre ordonné selon un parcours en largeur à partir de 



Parcours de graphes

28 mars 2011 Parcours en largeur (BFS). Données: Un graphe G = (VE) et un sommet source s. Résultat: Un ordre total ? de V. Initialiser la file S `a s.



Parcours en largeur (BFS)

chemin dans un graphe non valué. 33. 33. 34. Parcours en largeur (BFS). • Pour programmer l'algorithme on utilise une structure de file:.



Chapitre 3 : Exploration dun graphe - Algorithmique de graphes

1 Exploration d'un graphe / Parcours. 2 Parcours en largeur (BFS). Partition des sommets en couches. Principe de l'algorithme. Implémentation. Complexité.



Plus court chemin dans un graphe

Dans un parcours en largeur on visite d'abord le sommet origine



Première partie : Algorithmique avancée pour les graphes

Algorithme 2 : Parcours en largeur d'un graphe. 1 Fonction BFS(g s0). Entrée. : Un graphe g et un sommet s0 de g. Postcondition : Retourne une arborescence 



Parcours dun graphe

1 avr. 2013 Parcours en largeur : principe de l'algorithme. Vous devez parcourir toutes les pages d'un site web. Les pages sont les sommets d'un graphe ...



Parcours de graphes

Nous allons étudier le parcours en largeur en profondeur d'un graphe



Diapositive 1

sommets du graphe. Il y a deux stratégies de parcours différentes : partant d'un sommet le graphe est parcouru. ? en largeur. ? en profondeur.



[PDF] Algorithmique des graphes - Cours 3 – Parcours en largeur - LaBRI

Parcours en largeur ou BFS (Breadth First Search) Un parcours en largeur explore le graphe à partir d'un sommet donné (sommet de départ ou sommet source)



[PDF] Parcours de graphes - lycee rotrou dreux

Nous allons étudier le parcours en largeur en profondeur d'un graphe rechercher un cycle ou un certain chemin Quelques définitions :



[PDF] Parcours de graphes

Parcours en profondeur (Depth-First Search) Un parcours en profondeur (DFS) d'un graphe G Visite tous les sommets et toutes les arêtes de G



[PDF] Parcours de graphes - IGM

Les deux types de parcours principaux pour les graphes sont les parcours en profondeur et en largeur Ce cha- pitre couvre les algorithmes correspondants ainsi 



[PDF] Parcours dun graphe

Parcours en largeur : principe de l'algorithme Vous devez parcourir toutes les pages d'un site web Les pages sont les sommets d'un graphe et un lien entre 



[PDF] Première partie : Algorithmique avancée pour les graphes - CNRS

Dans ce chapitre nous étudions les deux principales stratégies d'exploration : — le parcours en largeur qui consiste à explorer les sommets du graphe niveau 



[PDF] Quelques rappels sur la théorie des graphes - CNRS

le parcours en largeur consiste à explorer les sommets du graphe niveau par niveau à partir d'un sommet donné ; le parcours en profondeur consiste 



[PDF] Algorithmique Cours 7 : Parcours de graphes ROB3

Parcours du graphe G=(SA) : Le graphe partiel de G formé des arêtes (arcs) (père L est un parcours en largeur de G si tout sommet visité s



[PDF] Parcours de graphes

Le parcours se fait en "largeur" avant de se faire en "profondeur" Structure de données pour représenter le graphe Algorithme du parcours en largeur



[PDF] Parcours de graphes - Normale Sup

Pour parcourir en largeur un graphe G à n sommets on utilisera les structures de données suivantes : • G : une liste de liste de longueur n qui contient la 

  • Comment parcourir un graphe en largeur ?

    L'algorithme de parcours en largeur (ou BFS, pour Breadth-First Search en anglais) permet le parcours d'un graphe ou d'un arbre de la manière suivante : on commence par explorer un nœud source, puis ses successeurs, puis les successeurs non explorés des successeurs, etc.
  • Comment parcourir un arbre en largeur ?

    Le parcours en largeur consiste à parcourir l'arbre niveau par niveau. Les nœuds de niveau 0 sont sont d'abord parcourus puis les nœuds de niveau 1 et ainsi de suite. Dans chaque niveau, les nœuds sont parcourus de la gauche vers la droite.
  • Comment se nomment les éléments d'un graphe reliant entre eux des nœuds ?

    Une boucle est une arête qui relie un nœud à lui même. Un lien double caractérise l'existence de plusieurs arêtes entre deux nœuds donnés.
  • Un graphe est orienté si ses arêtes ne peuvent être parcourues que dans un sens. L'orientation des arêtes est indiquée par des fl?hes sur les arêtes. Une arête orientée est aussi appelée un arc. Une boucle est un arc dont l'origine et l'extrémité sont identiques.

Algorithmique

Cours 7 : Parcours de graphes

ROB3 - année 2014-2015

Parcours : définitions et notations

Soit G=(S,A) un graphe.

B(T) : Bordure de T T S

Sous-ensemble des sommets de S-T dont au moins un voisin est dans T.

11765109

8Bordure de {6,9} = {8,10,5}

Soit L=(s1,s2,...,sp) une liste de sommets distincts :

L[i..j] est la sous-liste (si,...,sj)

11765109

8L = (8,6,5,9,10,7,11)

L[2..5] = (6,5,9,10)

Parcours du graphe G=(S,A) :

liste L=(s1,s2,...,sn) des n sommets de G telle que : pour tout i=2..n, le sommet si appartient à la bordure de {s1,s2,...,si-1} , si cette bordure n'est pas vide.

Soit L=(s1,s2,...,sn) un parcours de G.

Si B({s1,s2,...,si-1}) est vide, alors si est appelé point de régénération de L. Par convention, s1 est un point de régénération. L'étape i du parcours consiste à ajouter si (nouveau sommet visité) à la sous-liste L[1..i-1] des sommets déjà visités.

A la fin de l'étape i :

un sommet de L[1..i] est dit ouvert s'il possède au moins un voisin non visité ; dans le cas contraire, il est dit fermé. A la fin de l'étape 3, les sommets visités 1 et 4 sont fermés, le sommet visité 2 est ouvert.étape i L[1..i] B(L[1..i])

1 (1) (2,4)

2 (1,2) (3,4)

3 (1,2,4) (3)

4 (1,2,4,3) Z

5 (1,2,4,3,8) (6,9)

6 (1,2,4,3,8,6) (5,9)

7 (1,2,4,3,8,6,5) (9,7)

8 (1,2,4,3,8,6,5,7) (9)

9 (1,2,4,3,8,6,5,7,9) Z

13

247659

8Exemple (graphe non orienté) :

Parcours :L= (1,2,4,3,8,6,5,9,10,7,11,12,13)

Points de régénération : {1,3,8,12}11765109 8

1312124

3Exemple (graphe orienté) :

Forêt sous-jacente.

Soit L=(s1,s2,...,sn) un parcours de G.

On choisit pour chaque sommet sj (non point de régénération) On note alors pèreL(sj) le prédécesseur de sj choisi. Le graphe partiel de G formé des arêtes (arcs) (pèreL(sj),sj) est une forêt couvrante de G notée F(L). F(L) est formée de r arborescences A1(L), A2(L),....,Ar(L) où Ak(L) est une arborescence dont la racine est le kième point de régénération.

11765109

8

1312124

3

Un parcours :L= (1,2,4,3,8,6,5,9,10,7,11,12,13)

Points de régénération : {1,3,8,12}

Le graphe partiel des arcs rouges est une forêt F(L) sous-jacente du parcours L.

Parcours en largeur

Parcours en profondeur

L est un parcours en largeur de G si tout sommet visité si, qui n'est pas un point de régénération, est voisin du premier sommet visité ouvert de L[1..i-1].

Remarque : pèreL(si) est le premier sommet visité ouvert de L[1..i-1].Soit L=(s1,s2,...,sn) un parcours de G.

L est un parcours en profondeur de G si tout sommet visité si, qui n'est pas un point de régénération, est voisin du dernier sommet visité ouvert de L[1..i-1]. Remarque : pèreL(si) est le dernier sommet visité ouvert de L[1..i-1]. (1) (1,2) (1,2,4) (1,2,4,3) (1,2,4,3,8) (1,2,4,3,8,6) (1,2,4,3,8,6,9) (1,2,4,3,8,6,9,5) (1,2,4,3,8,6,9,5,7)Après chaque étape : - premier sommet visité ouvert en rouge ; - autres sommets visités ouverts en vert.1 324
7659

8Exemple de parcours

en largeur (1) (1,2) (1,2,4) (1,2,4,3) (1,2,4,3,8) (1,2,4,3,8,6) (1,2,4,3,8,6,9) (1,2,4,3,8,6,9,5) (1,2,4,3,8,6,9,5,7)Après chaque étape : - dernier sommet visité ouvert en rouge ; - autres sommets visités ouverts en vert.1 324
7659

8Exemple de parcours

en profondeur

Récapitulatif(graphe orienté)

La bordure B(T) d'un sous-ensemble T de sommets est constituée de l'ensemble des sommets de S-T dont au moins un prédécesseur est dans T. Parcours : rangement L = (s1,...,sn) des sommets du graphe où tout sommet si R B({s1,...,si-1}) ou B({s1,...,si-1}) = Ø Un sommet si tel que B({s1,...,si-1}) = Ø est un point de régénération (par convention, s1 est un point de régénération) On choisit pour chaque sommet sj (non point de alors pèreL(sj) le prédécesseur de sj choisi. Le graphe partiel de G formé des arcs (pèreL(sj),sj) est une forêt couvrante de G notée F(L).

Récapitulatif(graphe orienté)

Un sommet si est dit ouvert dans {s1,...,sk} si il comporte un successeur dans S - {s1,...,sk}. Parcours en largeur : tout sommet si (non point de régénération) est successeur du premier sommet ouvert dans {s1,...,si-1}. Parcours en profondeur : tout sommet si (non point de régénération) est successeur du dernier sommet ouvert dans {s1,...,si-1}. A un parcours en largeur ou en profondeur correspond une unique forêt couvrante. Algorithme de parcours en profondeur(graphe orienté)

Procédure Prof(G)

début pour chaque sommet de s de G faire visité[s] := faux ; pour chaque sommet s de G faire si non visité [s] alors Explorer(s) ; fin

Procédure Explorer(G,s)

début visité[s] := vrai ; prévisite(s) ; pour chaque t successeur de s faire { action sur l'arc (s,t) ; si non visité[t] alors Explorer(G,t) ; postvisite(s) ; fin A la fin de l'algorithme, on a visité[v]=vrai pour tout sommet v accessible à partir de s. Les procédures prévisite et postvisite sont optionnelles, et correspondent à des opérations qu'on réalise quand l'appel récursif sur un sommet débute, et quand il se termine.

Prévisite et postvisite

Pour chaque sommet s, on va noter les moments de deux

événements importants :

-Le moment du début de l'appel récursif Explorer(s) -Le moment de la fin de l'appel récursif Explorer(s) Propriété. A l'issue du parcours en profondeur, pour tout couple (s1,s2) de sommets : - soit les deux intervalles [pre(s1),post(s1)] et [pre(s2),post(s2)] sont disjoints, - soit l'un est contenu dans l'autre.Procédure prévisite(s) pre[s] := num num := num + 1Procédure postvisite(s) post[s] := num num := num + 1 (num est une variable globale initialisée à 1)

Exemple

Les arcs en pointillés n'appartiennent pas à la forêt sous-jacente.

Analyse de complexité

On suppose une représentation du graphe G par des listes de successeurs Il y a un appel récursif Explorer(s) par sommet s, du fait du tableau visité Lors d'un appel récursif Explorer(s), il y a les pas suivants :

1. Des opérations en temps constants + opérations de

pré/postvisite

2. Une boucle qui scanne les arcs issus de s

-La complexité cumulée du pas 1, en comptant tous les appels récursifs, est O(n) où n le nb de sommets, puisque chaque sommet est visité une seule fois -La complexité cumulée du pas 2, en comptant tous les appels récursifs, est O(m) où m le nb d'arcs de G, puisque chaque arc du graphe G est examiné une fois La complexité globale de l'algorithme est donc O(n+m) Remarque : la complexité cumulée en O(m) du pas 2 est liée à l'utilisation de listes de successeurs Soit L=(s1,s2,...,sn) un parcours en profondeur de G .

Soit F(L) sa forêt sous-jacente.

Les arcs de G sont classés en 4 groupes :

1)les arcs de F(L) ;

2)les arcs 'avant' (si,sj) : sj est un descendant de si dans F(L) ;

3)les arcs 'arrière' (si,sj) : si est un descendant de sj dans F(L) ;

4)les arcs 'transverses' (si,sj) : tous les autres arcs. Arcs associée à un parcours en profondeur

A B

CDarc (u,v)

F(L) / arc 'avant'

arc 'arrière' arc transversegroupe [3,4][1,8] [2,7] [5,6]

Existence d'un circuit

Problème :

Soit G= (S,A) un graphe.

Existe t-il un circuit dans G ?

Existence de circuit :

Soit L=(s1,s2,...,sn) un parcours en profondeur de G et soit F(L) sa forêt sous-jacente. G est sans circuit si et seulement s'il n'existe pas d'arc arrière pour L.

Graphe sans circuit → pas d'arc arrière

Par contraposée : si il existe une arête arrière (u,v), on construit un circuit en concaténant (u,v) et le chemin de v à u dans F(L) u v

Lemme des sommets accessibles

Soit L=(s1,s2,...,sn) un parcours en profondeur de G. Tous les sommets de {si+1,...,sn} accessibles à partir de si dans G seront ses descendants dans F(L).Graphe avec circuit → arc arrière Soit C=(s1,...,sk), un circuit dans G. Soit si le premier sommet de C visité dans le parcours en profondeur. D'après le lemme des sommets accessibles, les autres sommets de C sont des descendants de si dans F(L).

Donc (si-1,si) est un arc arrière.

12 34
5678

9C=(5,6,7,8)

6 visité en 1er

(5,6) arc arrière

Algorithme de détection de circuit

Algorithme de détection de circuit

Pour détecter s'il existe un circuit dans un graphe il suffit donc de faire un parcours en profondeur de ce graphe et détecter si l'on trouve un arc arrière.

Détection d'un arc arrière

A l'issue du parcours en profondeur, on parcourt les listes de successeurs (en O(n+m)) pour détecter si il existe un arc (u,v) tel que post(u)F(L) / arc 'avant' arc 'arrière' arc transversegroupe

3,42,54,6

1,7 uv12,15

9,168,17

10,11 (les numérotations pré/postfixe sont indiquées sur le graphe)13,14 Tri topologiqueRappel : un tri topologique de G est un rangement des sommets de G tel que v figure après u pour tout arc (u,v) de G. Un tri topologique est obtenu en rangeant les sommets dans l'ordre inverse de la numérotation postfixe d'un parcours en profondeur. Ce rangement peut être obtenu en O(n+m) à l'aide d'une pile sur laquelle on empile chaque sommet s lorsque l'appel récursif

Explorer(G,s) se termine.

Propriété

Dans un graphe orienté sans circuit, pour tout arc (u,v), post(u)>post(v).

1,7deab

c df gh efhdgabcd

171615141176542,5

3,45,6

8,179,16

10,1112,15

13,14 (pour chaque sommet s, post(s) est indiqué en rouge)tri topologiquequotesdbs_dbs16.pdfusesText_22
[PDF] parcours en profondeur itératif

[PDF] algorithme parcours en profondeur python

[PDF] parcours en largeur graphe java

[PDF] conflit de puissance définition

[PDF] parcours lecture acces pas cher

[PDF] parcours lecture pdf

[PDF] parcours lecture le petit chaperon rouge

[PDF] parcours lecture acces avis

[PDF] parcours lecture occasion

[PDF] coexistence pacifique cours

[PDF] archives militaire en ligne

[PDF] livret militaire en ligne

[PDF] la coexistence pacifique de 1953 ? 1962 pdf

[PDF] cornière catnic

[PDF] corniere galva pour brique