【发布时间】:2015-03-05 18:36:38
【问题描述】:
我早些时候参加了一次考试,有一个问题让我和其他与我交谈过的人都感到困惑。它问了以下问题:
给出一个未加权图G和两个顶点s和f的例子,使得s之间存在最短路径 和 f 广度优先搜索(从 s 开始)将永远找到,无论它访问相邻顶点的顺序如何到特定的边缘。
对我们来说,这似乎是不可能的。我的第一个想法是,如果最短路径包含一个顶点作为它的第 n 步,可以从 s 到 m 步,其中 mn,那么 BFS 将永远找不到该路径,因为该顶点已被标记为已访问。但如果是这种情况,则所述路径根本就不是最短路径,因为通过在 m 步中到达顶点然后正常继续前进会获得更短的路径。
我们的教授提出了一个不可能的问题(可能是错字),还是我遗漏了什么?
编辑:为了消除任何可能的歧义,该问题不要求给出 BFS 未能找到从 s 到 f 的最短路径的示例。相反,它要求给出一个示例,其中存在 BFS 永远找不到的从 s 到 f 的 some 最短路径。因此,BFS 本身是完整且最优的这一事实并不能排除这种可能性,除非我误解了这些术语的含义。
编辑 2: 还可以假设我们正在使用的 BFS 算法不会两次处理同一个节点。例如,参见BFS Wiki 上的算法大纲。
【问题讨论】:
-
即使 BFS 不跟踪访问过的节点,它也会最终触及每条可行的路径。我想这一定是一个错字。
-
确实如此。深度优先搜索可能会“迷路”(尽管只有在它无法检测到周期的情况下)。 BFS 不能。 BFS 被认为是一个完整的搜索,这意味着如果存在,它可以保证总是找到一个解决方案(给定无限的时间)。
-
您的推理几乎是正确的 - 不止一条路径可以是最短的(如果它们具有相同的长度),因此如果首先访问另一条路径(例如菱形),您可能会错过一条路径。但是,他明确表示对于任何访问顺序都找不到它,因此这也行不通
-
对,@Leeor。钻石是我的第一直觉,但正如你所指出的,这种解决方案和类似的解决方案在任意访问顺序下都无法成立。
-
图必须是有限的
标签: algorithm search graph-theory graph-algorithm breadth-first-search