我的问题并不是真的关于任何一种搜索类型的机制。我觉得它比这更平凡 - 我不明白任何一个的输入和输出。更具体地说,在CLRS中,BFS将图形和源节点作为输入,但DFS仅使用图形。 DFS不关心你从哪里搜索?广度优先与深度优先搜索的输入/输出
这就是输入的混淆。输出的混淆是,在DFS中,当你完成后,你有一个类似于表的结构来记录每个节点的发现和结束时间,对吗?您如何从中提取解决方案,即从源节点到目标节点的路径?
我希望我有道理。谢谢!
编辑:这是我的意思是DFS没有采取源节点。这是CLRS的DFS伪码。我没有看到它在任何地方采取源节点。我看到它所做的只是通过图中的所有节点。
DFS(G)
1 for each vertex u ∈ V[G]
2 do color[u] ← WHITE
3 π[u]← NIL
4 time ← 0
5 for each vertex u ∈ V[G]
6 do if color[u] = WHITE
7 then DFS-VISIT(u)
DFS-VISIT(u)
1 color[u] ← GRAY ✄ White vertex u has just been discovered.
2 time ← time+1
3 d[u] ← time
4 for each v ∈ Adj[u] ✄ Explore edge (u,v).
5 do if color[v] = WHITE
6 then π[v] ← u
7 DFS-VISIT(v)
8 color[u] ← BLACK ✄ Blacken u;it is finished.
9 f [u] ← time ← time+1
回答我的问题完美! – 2010-11-20 06:14:53