【问题标题】:Which metaheuristics are appropriate for building a Minesweeper solver?哪些元启发式算法适合构建扫雷求解器?
【发布时间】:2012-10-06 12:30:56
【问题描述】:

我必须构建一个扫雷求解器,但我真的不知道从哪里开始。问题是,我必须使用一些元启发式算法,比如蚁群优化、模拟退火、遗传编程等。我在网上找到了一些相关的资料,但我不确定哪些有用,哪些没用,因为没有什么是“完美契合”的。看来我必须自己调整一些元启发式算法,而不是遵循以前做过的人写的一些文章。这就是为什么我想在开始之前了解所有我需要知道的事情。

  1. 如何制定我的问题以使其适合使用元启发式算法来解决它?我知道这基本上是一个 CSP(约束满足问题),但不知道如何利用这些知识找到合适的算法来解决它。
  2. 哪种元启发式方法适合解决我的问题(以及为什么)?
  3. 对于我的问题,有什么需要特别注意的吗?

【问题讨论】:

    标签: algorithm np-complete minesweeper


    【解决方案1】:

    “蚁群优化、模拟退火、基因编程”......大词,但我不知道你会如何使用它们!

    我建议有两个求解器:

    1. 完美求解器:有完美答案且毫无疑问地求解。
    2. 不完美的求解器:如果有疑问,您希望找到危害最小的解决方案。

    先应用完美求解器,如果失败,再应用不完美求解器。

    完美的求解器需要找到所有的组合可能性,并检查其中哪些有效。实际上这并不难,因为您一次会考虑 1-5 个图块(作为人类求解器,我通常限制自己使用那么多图块),最多只有 32 个易于检查的组合。

    对于不完美的求解器,你可以考虑所有的组合,找出有效的组合,使用有效的组合计算不同位置的雷概率,然后选择雷概率最小的那个。

    想想看,这两种方法是一样的!在完美求解器中,您将选择具有 0 地雷概率的图块。所以,总结一下:

    1. 选择 1-10 个无标记的连续或最多有一个间隙连接的图块,每个图块都连接到至少一个已显示的非地雷位置。
    2. 查找所有有效组合
    3. 如果我在任何位置的概率为 0,请立即选择该选项。
    4. 或者,以最小地雷概率跟踪位置。
    5. 转到步骤 1

    第 1 步并不像听起来那么糟糕,因为只有少数组合同时满足这两个条件(与已解决的非矿山位置相邻和相邻)。

    【讨论】:

    • 是的,但这并不是真正的元启发式...或者是吗?就我对这个词的理解而言,它不是。问题是,我必须使用元启发式。如果不可行,我必须说我是一个尴尬的位置。
    • @iCanLearn 你处境尴尬,因为这个问题不需要元启发式算法!你可以发明方法来填充它,但这是必要的。
    • 是的,这就是我害怕的。我不会接受你的回答,因为它对我没有帮助,但我会赞成。
    【解决方案2】:

    元启发式可能不是扫雷的最佳算法 - 至少对于简单的部分来说不是。

    相反,一个简单的推理规则引擎可能已经标记了许多炸弹并显示了空闲点。使用该信息标记炸弹后,需要进行推理以进一步推理。如需灵感,请参阅 drools 的 conway's game of life 示例。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多