【问题标题】:Shortest paths that are impossible for BFS to find?BFS 无法找到的最短路径?
【发布时间】:2015-03-05 18:36:38
【问题描述】:

我早些时候参加了一次考试,有一个问题让我和其他与我交谈过的人都感到困惑。它问了以下问题:

给出一个未加权图G和两个顶点sf的例子,使得s之间存在最短路径f 广度优先搜索(从 s 开始)将永远找到,无论它访问相邻顶点的顺序如何到特定的边缘。

对我们来说,这似乎是不可能的。我的第一个想法是,如果最短路径包含一个顶点作为它的第 n 步,可以从 sm 步,其中 mn,那么 BFS 将永远找不到该路径,因为该顶点已被标记为已访问。但如果是这种情况,则所述路径根本就不是最短路径,因为通过在 m 步中到达顶点然后正常继续前进会获得更短的路径。

我们的教授提出了一个不可能的问题(可能是错字),还是我遗漏了什么?

编辑:为了消除任何可能的歧义,该问题不要求给出 BFS 未能找到从 sf 的最短路径的示例。相反,它要求给出一个示例,其中存在 BFS 永远找不到的从 sfsome 最短路径。因此,BFS 本身是完整且最优的这一事实并不能排除这种可能性,除非我误解了这些术语的含义。

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

【问题讨论】:

  • 即使 BFS 不跟踪访问过的节点,它也会最终触及每条可行的路径。我想这一定是一个错字。
  • 确实如此。深度优先搜索可能会“迷路”(尽管只有在它无法检测到周期的情况下)。 BFS 不能。 BFS 被认为是一个完整的搜索,这意味着如果存在,它可以保证总是找到一个解决方案(给定无限的时间)。
  • 您的推理几乎是正确的 - 不止一条路径可以是最短的(如果它们具有相同的长度),因此如果首先访问另一条路径(例如菱形),您可能会错过一条路径。但是,他明确表示对于任何访问顺序都找不到它,因此这也行不通
  • 对,@Leeor。钻石是我的第一直觉,但正如你所指出的,这种解决方案和类似的解决方案在任意访问顺序下都无法成立。
  • 图必须是有限的

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


【解决方案1】:

示例

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₁ → ... → a<sub>n</sub> → a<sub>n+1</sub> = f 是从sf 的最短路径。然后存在一个 BFS 的执行顺序,如下所示:

对于从0n 的所有i,首先访问a<sub>i+1</sub>,然后是a<sub>i</sub> 的所有其他直接邻居。

由于G 是一个有限图,因此每个节点a<sub>i</sub> 的直接邻居也只有有限多个。所以它将完成列表并到达路径上的下一个节点。由于路径是最短的,所以它是第一个找到连接sf 的路径。所以不可能存在一个有限图,使得 BFS 找不到从 sf 的最短路径。

路径不能短于两条边

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

【讨论】:

  • 您考虑的图有无限数量的节点。有没有具有这种性质的有限图?
  • @AnmolSinghJaggi 我添加了一个证明不存在有限图,使得 BFS 找不到最短路径
  • 很好的例子和证明。谢谢!
  • BFS 在 aleph_0+1 步后找到从 s 到 t 的路径。
  • aleph_0+1 不是有限的^^
【解决方案2】:

我认为@hexaflexagonal 可能错误地陈述了问题。

这应该是CLRS的问题:

问题和解决方案:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2018-09-18
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多