Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm BFS无法找到的最短路径?_Algorithm_Search_Graph Theory_Graph Algorithm_Breadth First Search - Fatal编程技术网

Algorithm BFS无法找到的最短路径?

Algorithm BFS无法找到的最短路径?,algorithm,search,graph-theory,graph-algorithm,breadth-first-search,Algorithm,Search,Graph Theory,Graph Algorithm,Breadth First Search,我早些时候参加了一次考试,有一个问题让我和我交谈过的每个人都感到困惑。它问了以下问题: 给出一个未加权图G和两个顶点s和f的示例,使得在s和f之间存在一条最短路径,宽度优先搜索(从s开始)将永远不会找到该路径,无论它访问与特定边相邻的顶点的顺序如何 对我们来说,这似乎是不可能的。我的第一个想法是,如果一条最短路径包含一个顶点作为它的第n步,它可以从s以m步到达,其中m是示例 设G=(V,E) V=ℕ ∪ {-1,0}和E={-1,t},{t,0}|t∈ ℕ } 让s=-1和f=0。从s到f存在无

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

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

对我们来说,这似乎是不可能的。我的第一个想法是,如果一条最短路径包含一个顶点作为它的第n步,它可以从s以m步到达,其中m是示例 设
G=(V,E)
V=ℕ ∪ {-1,0}
E={-1,t},{t,0}|t∈ ℕ }
s=-1
f=0
。从
s
f
存在无限多条长度为2的路径,但是由于
s
有无限多个邻居,BFS永远不会到达
f

不可能有有限的例子 不存在有限图,因此BFS无法找到从
s
f
的最短路径。假设
G
是有限图且
s=a₀ → A.₁ → ... → 一→ an+1=f
是从
s
f
的最短路径。然后存在如下BFS执行顺序:

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

由于
G
是一个有限图,因此每个节点的直接邻居也只有有限多个
ai
。因此它将完成列表并到达路径上的下一个节点。由于该路径是最短的路径,因此它是第一个连接
s
f
的路径。因此不存在这样的有限图BFS没有找到从
s
f
的最短路径

路径不能短于两条边 从
s
f
的路径也不能小于2。

如果认为
s
f
不是同一个节点,那么我们能想到的最短路径长度为1。但这意味着
f
s
的直接邻居,因此存在一个先访问
f
的BFS,然后再访问无限多的其他邻居。

@hexaflexagonal可能把问题说错了

这应该是CLRS中的一个问题:

问题和解决办法:


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

即使BFS不跟踪访问的节点,它最终也会触及所有可行的路径。我认为这一定是一个打字错误。事实上,深度优先搜索可能会迷失方向(尽管只有在无法检测周期的情况下)BFS不能。BFS被认为是一个完整的搜索,这意味着如果一条路径存在,它保证总能找到一个解决方案(给定无限时间)。你的推理几乎是正确的-多条路径可以最短(如果它们的长度相等),因此如果先访问另一条路径,你可能会错过其中一条(例如,钻石形状)“。但是,他明确表示,对于任何访问顺序都找不到它,因此这也不合适,@Leeor。钻石是我的第一本能,但正如你所指出的,这种解决方案和类似的解决方案在任意访问顺序下都不成立。图是否必须完成?你考虑过的图有无限多的节点。是吗?”有没有具有这种性质的有限图?@AnmolSinghJaggi我添加了一个证明,证明不可能存在一个有限图,这样BFS就不会找到最短路径伟大的例子和证明。谢谢!BFS在aleph_0+1步后找到了从s到t的路径。aleph_0+1不是有限的^^