Parcours Graphe Flashcards

(63 cards)

1
Q

Quelle structure de données utilise BFS ?

A

Une file (queue) FIFO

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

Quelle est la complexité de BFS avec une liste d’adjacence ?

A

Θ(n + a), où n = sommets, a = arêtes

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

Quel parcours est utilisé pour l’ordre topologique ?

A

DFS (profondeur)

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

À quoi servent les couleurs blanc, gris et noir dans DFS ?

A

Blanc = non découvert, Gris = découvert, Noir = visité

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

Quelles composantes DFS permet-il de détecter ?

A

Cycles, composantes fortement connexes, ordre topologique

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

Quelle structure utilise BFS ?

A

Une file FIFO

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

Quelle structure utilise DFS ?

A

Une pile (implémentée par récursivité)

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

Vrai ou Faux : BFS peut détecter des cycles dans un graphe orienté

A

Faux BFS ne détecte pas de cycles dans un graphe orienté, parce qu’elle marque un sommet dès la première visite et n’explore pas ensuite les arêtes « de retour » qui pourraient boucler vers un ancêtre.

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

Vrai ou Faux : DFS ne peut pas servir à détecter les cycles

A

Faux

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

À quoi servent les couleurs dans DFS ?

A

Blanc = non découvert, Gris = découvert, Noir = terminé

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

Quelle est la complexité de BFS avec une matrice d’adjacence ?

A

Θ(n²)

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

Quel est l’ordre d’exploration de DFS ?

A

Explore en profondeur jusqu’à ce qu’un chemin échoue

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

Quel est l’ordre d’exploration de BFS ?

A

Explore tous les voisins d’abord (niveau par niveau)

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

Quel parcours est utilisé pour l’ordre topologique ?

A

DFS sur un graphe orienté acyclique (DAG)

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

Qu’est-ce qu’un DAG ?

A

Un graphe orienté sans cycle (Directed Acyclic Graph)

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

Vrai ou Faux : Un graphe non-orienté peut avoir un ordre topologique

A

Faux

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

BFS garantit-il un chemin minimal en nombre d’arêtes ?

A

Oui

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

Dans DFS, quand enregistre-t-on les timestamps ?

A

Au début (découverte) et à la fin (fin d’exploration)

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

Quel algorithme est souvent utilisé pour les composantes fortement connexes ?

A

Kosaraju ou Tarjan (basés sur DFS)

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

Quel parcours permet de construire un arbre de parcours ?

A

BFS ou DFS selon l’algorithme

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

Vrai ou Faux : Le graphe obtenu par DFS est toujours un arbre

A

Faux, seulement les arêtes de découverte forment un arbre

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

Quel est l’ordre des timestamps dans un DFS fini ?

A

Découverte < fin

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

Pseudo-code : que fait-on après avoir visité tous les voisins d’un sommet u en DFS ?

A

On passe u en noir et on enregistre son temps de fin

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

Vrai ou Faux : Un sommet gris peut avoir un voisin blanc

A

Vrai

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Que signifie un cycle dans un graphe orienté détecté par DFS ?
Présence d’une arête arrière (back edge)
26
Que veut dire DFS ?
DFS signifie Depth-First Search. C'est un algorithme de parcours de graphe qui explore les sommets en profondeur avant de revenir en arrière.
27
Explique pourquoi DFS peut détecter des cycles dans un graphe orienté.
Parce qu'on peut rencontrer un sommet déjà découvert (gris) lors de l’exploration, ce qui indique un cycle.
28
Explique pourquoi BFS est utilisé pour trouver le chemin le plus court.
Parce qu’il explore les sommets par niveau (distance croissante), donc la première fois qu’on atteint un sommet, c’est avec le plus court chemin.
29
Pourquoi DFS utilise-t-il une pile ?
Parce qu’il doit revenir en arrière dès qu’un chemin est terminé. La pile permet de mémoriser l'ordre de retour.
30
Que représente un arbre de parcours dans DFS ?
C’est l’ensemble des arêtes de découverte formant une structure arborescente à partir du sommet source.
31
Quell est le parcours BFS (Breadth-First Search) ou parcours en largeur en francais pour cet arbre. A / \ B C / \ D E
L’ordre de BFS depuis A est : A, B, C, D, E
32
Complète le pseudo-code de DFS : DFS(u): u.couleur ← gris pour chaque v dans voisins(u): SI v.couleur == ______ alors DFS(v)
blanc
33
Complète le pseudo-code de BFS : BFS(s): Q ← file vide Q.ajouter_fin(s) TANT QUE Q non vide: u ← Q.sortir_premier() pour chaque v dans voisins(u): SI v non visité alors ______
Q.ajouter_fin(v)
34
Quand BFS ne fonctionne-t-il pas pour trouver le plus court chemin ?
Quand les poids sont différents de 1 (il faut Dijkstra)
35
Quand DFS ne permet-il pas de trouver un chemin optimal ?
Quand il faut minimiser le nombre d’arêtes ou un coût
36
Complexité de BFS sur liste d'adjacence ?
Θ(n + a)
37
Complexité de DFS sur matrice d'adjacence ?
Θ(n²)
38
Vrai ou faux : Une matrice d’adjacence est toujours symétrique pour un graphe non orienté.
Vrai
39
Vrai ou faux : Les listes d’adjacence sont plus efficaces pour les graphes denses.
Faux
40
Vrai ou faux : Les matrices d’adjacence sont plus efficaces pour vérifier l'existence d'une arête.
Vrai
41
Vrai ou faux : BFS est plus rapide avec une liste d’adjacence qu’avec une matrice.
Vrai
42
Quelle est la complexité mémoire d'une matrice d’adjacence ?
Θ(n²)
43
Quelle est la complexité mémoire d'une liste d’adjacence ?
Θ(n + a)
44
Comment détecter si un graphe est orienté à partir d'une matrice d’adjacence ?
La matrice n’est pas symétrique (M[u][v] ≠ M[v][u] pour certains u, v)
45
Quelle est la complexité pour vérifier l’existence d’une arête (u,v) dans une matrice d’adjacence ?
Θ(1)
46
Quelle est la complexité pour vérifier l’existence d’une arête (u,v) dans une liste d’adjacence ?
Θ(degré(u))
47
Quel est le meilleur format pour représenter un graphe clairsemé ?
Liste d’adjacence
48
Comment traduire une matrice d’adjacence en liste d’adjacence ?
Pour chaque ligne u, ajouter v à la liste de u si M[u][v] == 1
49
Complète : La matrice d’un graphe non orienté est __________.
symétrique
50
Complète : La représentation en liste d’adjacence est meilleure pour les graphes __________.
clairsemés
51
Complète : La complexité mémoire de la liste d’adjacence est __________.
Θ(n + a)
52
Complète : Dans une matrice d’adjacence, une valeur de 1 à la position (u,v) signifie __________.
qu’il existe une arête de u vers v
53
Complète : Pour parcourir tous les voisins d’un sommet dans une liste d’adjacence, la complexité est __________.
Θ(degré(u))
54
Qu'est-ce que le parcours en largeur (BFS) ?
Le parcours en largeur (BFS) parcourt les nœuds d’un graphe à partir d’un sommet source. Le parcours se fait niveau par niveau par rapport à la distance au nœud source. ## Footnote Comme l’algorithme de Dijkstra mais avec des poids d’arêtes à 1.
55
Comment fonctionne le parcours en profondeur (DFS) ?
Le parcours en profondeur (DFS) explore les nœuds d’un graphe en allant aussi profondément que possible avant de revenir en arrière. On garde en mémoire deux temps : temps de découverte et temps de fin.
56
Quelle structure est utilisée dans BFS pour gérer les sommets à visiter ?
Dans BFS, on utilise une file (queue) pour gérer les sommets à visiter. Chaque sommet est marqué avec une couleur, et on met à jour la distance du sommet et son prédécesseur.
57
Quelle structure est utilisée dans DFS ?
Dans DFS, la structure utilisée est une pile (implémentée par récursion). On colore les nœuds en blanc, gris, puis noir selon leur état.
58
Quelles sont les limitations de l'algorithme de Dijkstra ?
Dijkstra est un algorithme de plus court chemin qui ne fonctionne pas si le graphe contient des poids négatifs. Il utilise une file de priorité pour toujours explorer le sommet avec la distance minimale.
59
Comment fonctionne l'algorithme de Kruskal ?
Kruskal construit un arbre couvrant de poids minimal (ACM) en triant les arêtes par poids croissant et en utilisant une structure de type Union-Find (ensembles disjoints) pour éviter les cycles.
60
Comment fonctionne l'algorithme de Prim ?
Prim construit l’ACM en partant d’un sommet arbitraire et en ajoutant à chaque étape l’arête de poids minimal qui relie un sommet visité à un sommet non visité.
61
Si on utilise un parcours en largeur, comment va t il parcourir les noeuds?
Le parcours en largeur (en. Breadth-First Search) parcours les noeuds d’un graphe à partir d’un noeud source donné en entrée. Le parcours se fait niveau par niveau par rapport à la distance au noeud source. IE. Parcourt tous les noeuds à distance de 1 ensuite tous les noeuds à distance de 2, etc. Enfaite il fonctionne exactement comme l'algorithme de Djikstra mais ici tous les poids des arcs/arêtes sont de 1.
62
Avec quel type de graphe le parcours en largeur fonctionne t il?
Il fonctionne avec Graphe orienté ou non orienté
63
Lien entre BFS (parcours en largeur) et Djisktra
BFS fonctionne exactement comme Dijkstra dans le cas où tous les poids des arcs/arêtes sont égaux à 1. - Il garantit alors un plus court chemin en nombre d’arêtes. - Il utilise une file FIFO au lieu d’une file de priorité.