J'ai le pseudocode suivant pour l' algorithme de recherche en largeur
BFS(G,s)
1 for each vertex u ∈ V(G) \ {s}
2 color[u] = white
3 d[u] = ∞
4 π[u] = nil
5 color[s] = gray
6 d[s] = 0
7 π[s] = nil
8 Q = ∅
9 Enqueue(Q,s)
10 while q ≠ ∅
11 u = Dequeue(Q)
12 for each v ∈ Adj[u]
13 if color[v] == white
14 color[v] = gray
15 d[v] = d[u] + 1
16 π[v] = u
17 Enqueue(Q,v)
18 color[u] = black
Je ne comprends pas ce que la lettre π indique dans ce contexte. Je ne connais pas cet algorithme et il est difficile à deviner.
Je pense d
qu'indique la distance, color
c'est bien sûr la couleur, mais ça π
... ça semble être une variable quelconque mais je ne comprends pas sa fonction dans ce pseudocode.
Réponses:
Je crois que l'utilisation de π ici est réellement «parent de». Donc dans ce cas, le «parent» de v est u parce que nous regardons tous les nœuds adjacents à u .
la source
Le vecteur π conserve sûrement le nœud u avec lequel vous êtes venu dans le nœud v. Cela aide lorsque vous devez construire l'arborescence BFS du graphique. Bien qu'elle ne soit pas nécessaire, cette technique réduit considérablement la complexité lorsque vous devez exécuter plus de temps le BFS (par exemple, l' algorithme Edmonds – Karp pour calculer le flux maximal entre deux nœuds dans un graphique). Dans ce cas, vous n'avez pas besoin d'exécuter le BFS plusieurs fois car vous avez déjà construit l'arborescence BFS et le traversez des feuilles à la racine.
la source