Parcours Flashcards

(16 cards)

1
Q

Parcours de graphe

A

Visite de tous les sommets accessibles depuis un sommet de départ donné

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Comment parcourir un graphe

A

Marquage des sommets par des couleurs :
- Blanc = Pas encore visité
- Gris = En cours d’exploitation
- Noir = On a fini d’exploiter

Au début, le sommet de départ est gris et tous les autres sont blancs
A chaque étape, un sommet gris est sélectionné
Si tous ses voisins sont déjà gris ou noirs, alors il est colorié en noir
Sinon, il colorie un (ou plusieurs) de ses voisins blancs en gris
Jusqu’à ce que tous les sommets soient noirs ou blancs

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Stockage des sommes gris dans un BFS

A

File (FIFO)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Stockage des sommes gris dans un DFS

A

Pile (LIFO)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Structure de données pour représenter l’arborescence

A

Tableau π tel que π[si ] = null si si est racine, et π[si ] = père de si sinon

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

BFS (Breadth First Search)

A
1 Fonction BFS(g, s0)
2 	Soit f une file (FIFO) initialisée à vide
3 	pour chaque sommet si de g faire
4		π[si ] ← null
5 		Colorier si en blanc
6 Ajouter s0 dans f et colorier s0 en gris
7 tant que f n’est pas vide faire
8 	Soit sk le sommet le plus ancien dans f
9 	pour chaque si ∈ succ(sk ) tq si est blanc faire
10 		Ajouter si dans f et colorier si en gris
11 		π[si ] ← sk
12 	Enlever sk de f et colorier sk en noir
13 retourne π
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Complexité du BFS

A

O(n + p)
(sous réserve d’une implémentation par listes d’adjacence)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Que fait on quand on a le choix entre plusieurs sommets ?

A

On choisit le plus petit dans l’ordre lexicographique

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Utilisations possibles d’un BFS

A

Recherche de plus courts chemins (en nombre d’arêtes)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Plus court chemin en nombre d’arêtes

A
 Fonction calculeDistances(g, s0)
2 	pour chaque sommet si de g faire
3 		π[si ] ← null
4 		Colorier si en blanc
5 		d[si ] ← ∞
6 	Ajouter s0 dans f et colorier s0 en gris
7 	d[s0] ← 0
8 	tant que f n’est pas vide faire
9 		Soit sk le sommet le plus ancien dans f
10 		pour chaque si ∈ succ(sk ) tq si est blanc faire
11 			Ajouter si dans f et colorier si en gris
12			 d[si ] ← d[sk ] + 1
13 			π[si ] ← sk
14 		Enlever sk de f et colorier sk en noir
15 retourne d
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

DFS (Depth First Search)

A
1 Fonction DFS(g, s0)
2    Soit p une pile (LIFO) initialisée à vide
3	pour tout sommet si ∈ S faire
4 		π[si ] ← null
5 		Colorier si en blanc
6    Empiler s0 dans p et colorier s0 en gris
7    tant que p n’est pas vide faire
8 		Soit si le dernier sommet entré dans p
9 		si ∃sj ∈ succ(si ) tel que sj soit blanc alors
10 			Empiler sj dans p et colorier sj en gris
11 			π[sj ] ← si
12        sinon
13 			Dépiler si de p et colorier si en noir
14   retourne π
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Complexité du DFS

A

O(n + p)
(sous réserve d’une implémentation par listes d’adjacence)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

DFS récursif

A
1 Proc DFSrec(g, s0)
	Entrée : Un graphe g et un sommet s0
	Précond. : s0 est blanc
2 	début
3 		Colorier s0 en gris
4 		pour tout sj ∈ succ(s0) faire
5 			si sj est blanc alors
6 				π[sj ] ← s0
7 				DFSrec(g, sj )
8 		Colorier s0 en noi
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Utilisations possibles du DFS

A

Détection de circuits
Numérotation des sommets
Tri topologique d’un DAG
Recherche des composantes fortement connexes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Tri topologique d’un DAG

A

Ordre total <_topo sur S tel que ∀(si , sj ) ∈ A, si <_topo sj
Après l’exécution de DFSnum, pour tout arc (si , sj ) ∈ A : num[sj ] < num[si ]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

DAG

A

Graphe orienté sans circuit