我已经阅读了大量关于BFS和DFS算法的信息,但它们都没有说到首先选择哪个顶点?
例如,在这张图片中,箭头是否意味着不能从c到b遍历,但可以从b到c遍历?
非常感谢你们的帮助。
选择哪个顶点作为源顶点?-取决于您的需求
。
例如:
如果您想要使用BFS(对于所有边具有相同成本或无权图的图)找到从源S到所有其他顶点的最短路径。然后您应该选择S作为源顶点。
如果您想要查找K顶点是否可达从顶点S开始,在这种情况下,您也必须从源顶点S开始启动BFS / DFS。
如果您想要解决迷宫中的老鼠问题,其中老鼠从源S开始并且必须使用DFS到达目的地,则再次必须从源S开始启动DFS算法。
箭头表示您无法从c到b遍历,但可以从b到c遍历吗?
这是一个有向图,是的。
当您执行DFS时,不需要指定要从哪个节点开始,因为您将遍历所有节点。
DFS的过程是:
DFSmain(G):
For v=1 to n: if v is not yet visited, do DFS(v).
DFS(v):
mark v as visited. // entering node v
for each unmarked out-neighbor w of v: do DFS(w).
return. // exiting node v.