algorithm - 边到边推荐的最短路径算法

标签 algorithm graph graph-algorithm

我有一个移动应用程序的棋盘游戏,显示在这个链接中:http://i45.tinypic.com/23u8u1h.png

起点可以是任何单元格。获胜者是垂直(绿色玩家)或水平(红色玩家)连接他/她的人。

节点是彩色单元格。白细胞可以被认为是重量吗?我不确定如何实现它,但当我想到 Dijkstra 算法时,我相信当板处于这种状态时,它会花费大量时间来计算直到它得出正确答案:http://i50.tinypic.com/35ivofd.png (我必须将算法应用于那四个绿色单元格)

我想要一个算法来告诉我“http://i48.tinypic.com/28c2ijl.png”黑色、棕色、蓝色和紫色路径是合理时间内最短的路径。

提前致谢。

最佳答案

我认为 Dijkstra 在这里工作得很好,尤其是与 Union Find algorithm 结合使用时用于连接彼此相邻的字段并填充白色以外的颜色。通往白场的边成本为 1,通往自己场的边成本为 0,而通往敌方场的边成本为无穷大(例如 mn)。然后,您不会在代表单个字段的节点上运行 Dijkstra,而是在这些字段的联合(非白色字段的集群)上运行。

Dijkstra 将在这里工作大约 O(mn log^2(mn)),其中 nm 是电路板的尺寸, 并且 Union Find 将在 O(log mn) 时间内通过简单的优化工作,如链接文章底部所述。

关于algorithm - 边到边推荐的最短路径算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12758763/

相关文章:

java - n组所有可能的组合

javascript - 负载图上的 Highstock 仅显示一个点

algorithm - 哪种算法可用于对图进行分区以使每个分区组(或组件)的值相等或平衡?

c++ - 编写相邻列表图形时发生未知错误

algorithm - 独立于旋转、镜像或位置获取形状的唯一哈希值

将具有大小/位置的平面对象列表转换为树的算法?

arrays - 算法:从数组中找到最大的子集

algorithm - 正负根的求根算法

algorithm - 如何从给定的数字中找到最接近的一组数字?

algorithm - 如何创建具有常量行列总和的 1's and 0' 的对称矩阵