Algorithm 哪些超启发式适合于构建扫雷舰解算器?

Algorithm 哪些超启发式适合于构建扫雷舰解算器?,algorithm,np-complete,minesweeper,Algorithm,Np Complete,Minesweeper,我必须建立一个扫雷舰解算器,但真的不知道从哪里开始。问题是,我必须使用一些元启发式算法,如蚁群优化、模拟退火、遗传编程等。我在互联网上找到了一些相关材料,但我不确定其中哪些有用,哪些不有用,因为没有什么是“完美匹配”。看起来我将不得不自己调整一些元启发式算法,而不必跟随以前做过的人写的文章。这就是为什么我想在开始之前知道所有我需要知道的事情 我如何制定我的问题,使之适合使用元启发式来解决它?我知道这基本上是一个CSP(约束满足问题),但不知道如何利用这些知识找到一个合适的算法来解决它 哪些超启发

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

  • 我如何制定我的问题,使之适合使用元启发式来解决它?我知道这基本上是一个CSP(约束满足问题),但不知道如何利用这些知识找到一个合适的算法来解决它
  • 哪些超启发式算法适合解决我的问题(为什么)
  • 对于我的问题,有什么我应该注意的事情吗 “蚁群优化,模拟退火,遗传规划”。。。大词,但我不知道你会怎么用它们

    我建议有两个解决方案:

  • 完美解决者:毫无疑问,有一个完美的答案并解决它
  • 不完美的解决方案:有疑问的地方,你想找到危害最小的解决方案
  • 首先应用完美解算器,如果失败,则应用不完美解算器

    完美的解算器需要找到所有的组合可能性,并检查其中哪些可行。事实上,这并不是那么困难,因为您将同时考虑1-5个瓷砖(作为一个人类解算器,我通常限制自己使用那么多瓷砖),最多只有32个组合,很容易检查

    对于不完全求解器,可以考虑所有组合,找出有效组合,利用有效组合计算不同位置的矿山概率,并选择最小挖掘概率的一个。 想想看,这两种方法是一样的!在“完美解算器”中,您将选择概率为0的磁贴。因此,总结一下:

  • 选择1-10个相邻或最多通过一个间隙连接的未标记瓷砖,其中每个瓷砖至少连接到一个显示的非矿区位置
  • 找到所有有效的组合
  • 如果在任何位置地雷的概率为0,请立即选择该选项
  • 或者,以最小的地雷概率跟踪位置
  • 转到步骤1
  • 步骤1并不像听起来那么糟糕,因为只有少数组合同时满足这两个条件(与已解决的非采矿位置相邻或相邻)。

    “蚁群优化、模拟退火、遗传编程”。。。大词,但我不知道你会怎么用它们

    我建议有两个解决方案:

  • 完美解决者:毫无疑问,有一个完美的答案并解决它
  • 不完美的解决方案:有疑问的地方,你想找到危害最小的解决方案
  • 首先应用完美解算器,如果失败,则应用不完美解算器

    完美的解算器需要找到所有的组合可能性,并检查其中哪些可行。事实上,这并不是那么困难,因为您将同时考虑1-5个瓷砖(作为一个人类解算器,我通常限制自己使用那么多瓷砖),最多只有32个组合,很容易检查

    对于不完全求解器,可以考虑所有组合,找出有效组合,利用有效组合计算不同位置的矿山概率,并选择最小挖掘概率的一个。 想想看,这两种方法是一样的!在“完美解算器”中,您将选择概率为0的磁贴。因此,总结一下:

  • 选择1-10个相邻或最多通过一个间隙连接的未标记瓷砖,其中每个瓷砖至少连接到一个显示的非矿区位置
  • 找到所有有效的组合
  • 如果在任何位置地雷的概率为0,请立即选择该选项
  • 或者,以最小的地雷概率跟踪位置
  • 转到步骤1

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

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


    相反,一个带有推理的简单规则引擎可能已经标记了许多炸弹,并显示了自由点。一旦一枚炸弹被贴上标签,有了这些信息,就需要进行进一步的推理。有关灵感,请参见drools的示例。

    超启发式算法可能不是扫雷舰的最佳算法-至少不是简单的部分


    相反,一个带有推理的简单规则引擎可能已经标记了许多炸弹,并显示了自由点。一旦一枚炸弹被贴上标签,有了这些信息,就需要进行进一步的推理。要获得灵感,请参阅drools的例子。

    是的,但这不是真正的元启发式。。。还是这样?就我对这个词的理解而言,它不是。问题是,我必须使用超启发式。如果不可行,我必须说我处境尴尬。@我知道你处境尴尬,因为这个问题不需要超启发式!你可以想方设法填满它,但这是必要的。是的,这就是我害怕的。我不会接受你的答案,因为这对我没有什么帮助,但我会投赞成票。是的,但这不是一个真正的元启发式。。。还是这样?就我对这个词的理解而言,它不是。问题是,我必须使用超启发式。如果这不可行,我必须说我处境尴尬。@我知道你处境尴尬,因为这个问题