这是广度优先搜索的标准伪代码:
{ seen(x) is false for all x at this point }
push(q, x0)
seen(x0) := true
while (!empty(q))
x := pop(q)
visit(x)
for each y reachable from x by one edge
if not seen(y)
push(q, y)
seen(y) := true
此处push
和pop
被假定为队列操作。但是,如果它们是堆栈操作呢?生成的算法是否按深度优先顺序访问顶点?
如果您对“这很琐碎”的评论投了赞成票,请您解释一下为什么这很琐碎。我觉得这个问题很棘手。
5
我见过学生为此而苦苦挣扎,所以我认为这绝对不是太简单。但是,答案中除了“是”或“否”之外,还应包含什么?问题中尚不清楚所需的粒度。
—
拉斐尔
“是”将带有令人信服的论点;“否”将带有反例。但是,一旦您了解发生了什么,总比有/没有更好的答案……
—
rgrig
可以编写伪代码,以便仅通过更改
—
2012年
pop
堆栈或队列操作就可以得到dfs或bfs。编写伪代码的初衷似乎很容易,但事实并非如此。 ics.uci.edu//~eppstein/161/960215.html 是相关参考。