web-dev-qa-db-ja.com

このBFSアルゴリズムの疑似コードでpiはどういう意味ですか?

幅優先検索アルゴリズムの次の疑似コードがあります

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

元の画像

この文脈で、πという文字が何を示しているのか理解できません。私はこのアルゴリズムに精通しておらず、推測するのが難しいです。

dは距離を示すと思います。colorはもちろん色ですが、それはπ...ある種の変数のように見えますが、この疑似コードではその機能がわかりません。

9
nbro

ここでのπの使用は実際の「の親」だと思います。したがって、この場合、vの「親」はです。これは、に隣接するすべてのノードを調べるためです。

17
J Trana

Πベクトルは、ノードvで使用したノードuを確実に保持します。これは、グラフのBFSツリーを構築する必要がある場合に役立ちます。必須ではありませんが、この手法は、BFSをより多くの時間実行する必要がある場合の複雑さを大幅に軽減します(例: Edmonds–Karpアルゴリズム グラフの2つのノード間の最大フローを計算するため)。この場合、BFSツリーを既に構築しており、葉からルートまでトラバースするため、BFSを何度も実行する必要はありません。

0
Columb