我有以下针对广度优先搜索算法的伪代码
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
在这种情况下,我不明白字母π表示什么。我对这种算法不熟悉,很难猜测。
我认为d
指示距离color
当然是颜色,但是π
……似乎是某种变量,但我不了解其在此伪代码中的功能。
2
@Snowman我会使用计算机科学和学术出版物中使用的样式,而不是专门使用数学,但是我同意总体思路。这个问题是关于这种用法的问题,可以通过阅读Wikipedia页面来解决,并且π不是常用的,而是特定于作者如何编写算法的。我担心伪代码会有太多变化,并询问每种样式中的每个字符意味着什么会失控。
伪代码中经常使用字母π吗? 有时,但是含义会根据上下文而变化。
—
Rufflewind
@Snowman:π不是函数。它是由顶点索引的可变顶点数组。
—
Rufflewind
在这种情况下,π只是算法中使用的符号,类似于d和color。有时,算法编写者喜欢使用单字母符号,而不是使用可爱的名称(如“ parentVertices”)或可能倾向于在编程语言中使用的名称。
—
布兰登2015年
@Snowman你在开玩笑吗?这不是一个数学问题。这是关于解释伪代码编写程序的,为什么这不应该与软件开发有关,我真的不明白。
—
nbro