algorithm - 如何最佳解决洪水填充难题?

标签 algorithm search artificial-intelligence a-star flood-fill

我喜欢玩 Flood-It 益智游戏,可以在线玩:

https://www.lemoda.net/javascript/flood-it/game.html

它也可以作为 iGoogle 小工具使用。目的是用最少数量的连续洪水填充填充整个板。

我正在尝试编写一个程序来以最佳方式解决这个难题。解决这个问题的最佳方法是什么?理想情况下,我想使用 A* 算法,但我不知道估计剩余步数的函数应该是什么。我确实编写了一个程序,该程序进行了深度 4 蛮力搜索以最大化填充区域。它运行得相当好,在解决难题方面击败了我,但我对该算法并不完全满意。

有什么建议吗?提前致谢。

最佳答案

作为一种启发式方法,您可以构建一个图形,其中每个节点代表一组连续的、相同颜色的方 block ,并且每个节点都连接到它所接触的方 block 。 (每条边的权重为 1)。然后,您可以使用寻路算法来计算从左上角到所有其他节点的“距离”。然后,通过查看使用其他 5 种颜色中的每一种颜色进行填充的结果,确定哪一种颜色最小化到“最远”节点的距离,因为这可能是您的瓶颈。

将该计算的结果添加到到目前为止完成的填充数,并将其用作您的 A* 启发式。

关于algorithm - 如何最佳解决洪水填充难题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1430962/

相关文章:

android - 使用 epublib 搜索 epub 内容

algorithm - 在迷宫中广度优先搜索,我如何计算状态?

algorithm - 理解候选淘汰算法

algorithm - Intersection of n rectangles - 正好有 k 个矩形相交的区域的最大数量

mysql/统计 : Weighting an average to accentuate differences from the mean

php - 富媒体文件的全文搜索

algorithm - 多语言搜索匹配

algorithm - 一种确定不等式关系的算法

algorithm - 双向链表的分区排序

node.js - 未创建索引,$text 查询需要文本索引 - mongoose