我早些时候参加了一场考试,有一道题让我和我谈过的其他人都感到困惑。问题如下:
给出一个无权图 G 和两个顶点 s 和 f,使得在特定边相邻的顶点访问顺序下,从 s 开始的广度优先搜索永远找不到 s 和 f 之间的最短路径。
对我们来说,这似乎是不可能的。我的第一个想法是,如果最短路径包含一个作为其第 n 步的顶点,而该顶点可以从 s 中在 m 步内到达,其中 m < n,则 BFS 将永远无法找到该路径,因为该顶点已被标记为已访问。但如果是这种情况,所述路径根本不是最短路径,因为通过在 m 步内到达该顶点,然后继续正常进行,可以获得更短的路径。
我们的教授是否提出了一个不可能的问题(可能是笔误),还是我漏掉了什么?
给出一个无权图 G 和两个顶点 s 和 f,使得在特定边相邻的顶点访问顺序下,从 s 开始的广度优先搜索永远找不到 s 和 f 之间的最短路径。
对我们来说,这似乎是不可能的。我的第一个想法是,如果最短路径包含一个作为其第 n 步的顶点,而该顶点可以从 s 中在 m 步内到达,其中 m < n,则 BFS 将永远无法找到该路径,因为该顶点已被标记为已访问。但如果是这种情况,所述路径根本不是最短路径,因为通过在 m 步内到达该顶点,然后继续正常进行,可以获得更短的路径。
我们的教授是否提出了一个不可能的问题(可能是笔误),还是我漏掉了什么?
编辑: 为了消除任何可能的歧义,该问题并不要求给出BFS无法从s到f找到最短路径的例子。相反,它要求给出一个例子,其中存在从s到f的某些最短路径,BFS永远不会找到。因此,仅仅因为BFS是完备和最优的,并不能排除这种可能性,除非我误解了这些术语的含义。
编辑2: 还可以假设我们使用的BFS算法不会处理同一个节点两次。例如,请参见BFS Wiki上的算法概述。
s
到f
存在长度为m
的最短路径,你可以通过反证法轻松证明BFS会找到它,前提是所有边的权重相同(我认为这就是无权图的意思)。 - Ari