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