幅優先検索アルゴリズムの次の疑似コードがあります
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 whileq ≠ ∅
11 u = Dequeue(Q)
12 for each v ∈ Adj[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
はもちろん色ですが、それはπ
...ある種の変数のように見えますが、この疑似コードではその機能がわかりません。
ここでのπの使用は実際の「の親」だと思います。したがって、この場合、vの「親」はです。これは、に隣接するすべてのノードを調べるためです。
Πベクトルは、ノードvで使用したノードuを確実に保持します。これは、グラフのBFSツリーを構築する必要がある場合に役立ちます。必須ではありませんが、この手法は、BFSをより多くの時間実行する必要がある場合の複雑さを大幅に軽減します(例: Edmonds–Karpアルゴリズム グラフの2つのノード間の最大フローを計算するため)。この場合、BFSツリーを既に構築しており、葉からルートまでトラバースするため、BFSを何度も実行する必要はありません。