web-dev-qa-db-fra.com

Qu'est-ce que PI signifie dans ce pseudocode d'algorithme BFS?

J'ai le pseudocode suivant pour de la largeur-première recherche algorithme

BFS(G,s)
 1 for each vertex uV(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 whileq ≠ ∅
11     u = Dequeue(Q)
12     for each vAdj[u]
13         ifcolor[v] == white
14             color[v] = gray
15             d[v] = d[u] + 1
16             π[v] = u
17             Enqueue(Q,v)
18     color[u] = black

image originale

Je ne comprends pas ce que la lettre π indique dans ce contexte. Je ne connais pas cet algorithme et il est difficile de deviner.

Je pense que d indique la distance, color est bien sûr la couleur, mais que π... Cela semble être une variable de quelque sorte, mais je ne comprends pas sa fonction dans ce pseudocode.

9
nbro

Je crois que l'utilisation de π est ici "parent de". Donc, dans ce cas, le "parent" de V est car nous examinons tous les nœuds adjacents à .

17
J Trana

Le vecteur π garde sûrement le noeud u avec lequel vous êtes entré au nœud v. Cela aide lorsque vous devez construire l'arborescence BFS du graphique. Bien que ce ne soit pas nécessaire, cette technique réduit beaucoup la complexité lorsque vous devez effectuer plus de temps le BFS (ex. Le EDMONDS-KARP ALGORITHM pour l'informatique le débit maximal entre deux nœuds dans un graphique). Dans ce cas, vous n'avez pas à exécuter le BFS plus de fois, car vous avez déjà l'arbre BFS construit et la traverser des feuilles à la racine.

0
Columb