BFS无法找到的最短路径?

时间:2015-03-05 18:36:38

标签: algorithm search graph-theory graph-algorithm breadth-first-search

我之前参加了一个考试,有一个问题让我和其他与我交谈的人感到困惑。它问了以下问题:

  

举例说明未加权的图 G 和两个顶点 s f ,以便 s之间存在最短路径 f 广度优先搜索(从 s 开始)将从不查找,无论它访问相邻顶点的顺序如何到了特定的边缘。

对我们来说,这似乎是不可能的。我的第一个想法是,如果最短路径包含一个顶点作为其 n 步骤,可以在 m 步骤中从 s 到达,其中< em> m &lt; n ,然后BFS永远不会找到该路径,因为顶点已经被标记为已访问。但如果是这种情况,那么所述路径根本不是最短路径,因为在 m 步骤中到达顶点然后继续正常会获得更短的路径。

我们的教授是否提出了一个不可能的问题(也许是一个错字),或者我错过了什么?

编辑:为了消除任何可能的歧义,问题并未要求举例说明BFS无法找到从 s f的最短路径。相反,它要求提供一个示例,其中存在从 s f 某些最短路径,BFS将永远找不到。因此,除非我误解了这些术语的含义,否则BFS完全和最优的事实并不排除这种可能性。

编辑2:也可以假设我们正在使用的BFS算法不会两次处理同一节点。例如,请参阅BFS Wiki上的算法大纲。

2 个答案:

答案 0 :(得分:7)

示例

G = (V,E)图表 V = ℕ ∪ {-1, 0}E = { {-1,t}, {t,0} | t ∈ ℕ }
并让s = -1f = 0。从sf存在无限长度为2的路径,但由于s具有无限数量的邻居,因此BFS永远不会到f

没有可能的有限例子

不存在有限图,因此BFS找不到从sf的最短路径。可以说G是一个有限图,s = a₀ → a₁ → ... → an → an+1 = f是从sf的最短路径。然后存在BFS的执行顺序,如下所示:

  

对于从i0的所有n,首先访问ai+1,然后访问ai的所有其他直接邻居。

由于G是有限图,因此每个节点ai也只存在有限的许多直接邻居。因此它将完成列表并进入路径上的下一个节点。由于路径是最短路径,因此它是第一个连接sf的路径。因此,不存在有限图,使得BFS找不到从sf的最短路径。

路径不能短于两条边

sf的路径短于2,也可能没有示例。
如果sf被认为不是同一节点,则可以想到的最短路径长度为1。但这意味着fs的直接邻居,因此存在一个首先访问f的BFS,然后继续访问无数其他邻居。

答案 1 :(得分:1)

我认为@hexaflexagonal可能错误地指出了问题。

在CLRS中应该是一个问题:

问题和解决方案:

由于BFS的性质,BFS不会产生某些E _ {\ pi}集。具有多个最短路径解的循环图就是这种情况。