无向图中的DFS - 它可以有交叉边缘吗?

时间:2015-03-09 12:41:29

标签: algorithm graph depth-first-search

在无向图中,是否有可能将租用到已访问过的节点的边缘引向不是当前节点的上升的顶点?

为了更清楚,我想在无向图上实现深度优先搜索。如果我遇到连接当前顶点和已经访问过的顶点的边缘,我是否可以通过迭代父数组来保证从一个到另一个的路径?

最自然的答案似乎是肯定的。我还没有找到一个反例。你觉得怎么样?

在DFS术语中:
边缘是否可以是DFS中的交叉边缘 - 在无向图中,边缘是否导致已发现的节点(不是原点的祖先)?

1 个答案:

答案 0 :(得分:3)

DFS发现的边缘不能是交叉边缘,如果其目标是已发现的节点,则它必须是后边缘 - 因此它将导致源节点的祖先(在DFS树中)。 / p>

证明:

假设情况并非如此,并且在某个节点v中遇到一个已发现的节点(u),它不是您的“父节点”(在DFS树中)。
由于您发现了节点,因此存在边(v,u)
但是图表是无向的,因此边缘是对称的。

由于已发现u,因此您有以下选项:

  1. u已被发现但尚未“关闭”,在这种情况下,您基本上遍历的是以u为根的子树,u确实是{的父级{1}}。
  2. v已被发现并关闭。但是,考虑到您刚刚发现u并且有一条边v,这是不可能的。
  3. 因此,导致在无向图中已经发现边缘的边缘必须是后边缘,并且不能是交叉边缘。