【问题标题】:AI Minesweeper project人工智能扫雷项目
【发布时间】:2012-07-06 20:37:33
【问题描述】:

我需要实现扫雷求解器。我已经开始实施基于规则的代理。 我已经执行了一些规则。我有一个启发式函数,用于为正在处理的当前单元格(包含有关周围单元格的信息)选择最佳匹配规则。因此,对于每个选定的单元格,它可以决定 8 个周围的单元格打开它们、标记它们或什么都不做。我是说。目前,代理获取一些已显示的单元格作为输入,并决定如何处理周围的单元格(目前,代理不知道如何决定要处理哪个单元格)。

我的问题是,要实施什么算法来决定要处理哪个细胞?

假设,对于第一步,智能体将显示一个角落单元(或其他一些,根据第一步的某些规则)。之后怎么办?

我知道我需要实现某种搜索。我知道很多搜索算法(BFS、DFS、A-STAR 和其他),这不是问题,我只是不明白如何在这里使用这些搜索。

我需要在人工智能原则中实施它:一种现代方法。

【问题讨论】:

    标签: artificial-intelligence game-engine minesweeper


    【解决方案1】:

    BFS、DFS 和 A* 在这里可能不合适。如果您在完全了解世界的情况下尝试计划行动方案,那么这些算法非常有用。在扫雷中,你没有这样的知识。

    相反,我建议尝试使用本书第 III 部分中的一些逻辑推理技术,尤其是使用 SAT 或第 10 章中的技术。这将让您得出关于矿山在哪里使用诸如“一个接下来的八个方格中的一个是地雷,而接下来的八个方格中恰好有两个是地雷。”在每一步都这样做将帮助您确定地雷在哪里,或者意识到您必须在继续之前猜测。

    希望这会有所帮助!

    【讨论】:

    • 我已经在规则中实现了其中一些技术,我已经实现了某些方法:treatCell(i_CellToTreat),它匹配最佳规则并执行它。我只是不知道以哪种顺序处理显示的细胞,以及选择下一个处理哪个,目前它只是在整个显示的细胞集合中迭代并处理它们。它在小板上工作得很好,但我需要实现一些更好的算法。
    【解决方案2】:

    我移植了这个(在一些帮助下)。这是它工作的链接:http://robertleeplummerjr.github.io/smartSweepers.js/。这是项目:https://github.com/robertleeplummerjr/smartSweepers.js

    玩得开心!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多