我正在实现一种算法,该算法必须快速确定二维网格中两个单元格之间是否存在路径(对于类似迷宫的游戏)。它实际上不必提供路径。这个算法运行了数千次,所以它必须很快。
奇怪的是,这两个单元彼此非常接近(在曼哈顿距离 2 以内),因此对于大多数合理的迷宫来说,路径通常是微不足道的。现在我有纯粹的广度优先搜索,但我正在考虑实现一个双向变体。当然,问题是在路径不存在的情况下,双向搜索会失败得更慢,因为它搜索两个连接的组件而不是一个,尽管如果存在路径,它会更快地找到它(可能)。
所以我的问题是,是否有人对双向搜索有任何经验,以及在上述情况下它的表现如何?速度差异实际上是很小的吗?