提问者:小点点

需要Reversi(Othello)想法的启发式函数


我刚刚研究了启发式函数,但我找不到用于反转(Othello)的启发式函数的想法,我只需要一个好主意来对板的某些状态进行分级

我想过:

  1. 计算移动次数
  2. 计算磁盘的数量
  3. 并计算角落里的光盘数量,给它们更好的分数,

我不知道它是否好。


共3个答案

匿名用户

不,这还不够好。磁盘的数量特别没用——尽管游戏的目标是收集尽可能多的磁盘,但除了最后一个之外,任何移动的计数都毫无意义。这里还有一些你应该考虑的事情:

  • 计算移动次数可以衡量你的即时移动性;在其他条件相同的情况下,你可以做出一个打开更多其他移动的移动的情况应该是有利的。你还需要测量潜在的移动性——开放空间旁边对手的磁盘数量。
  • X正方形-B2、B7、G2和G7。提前放置磁盘几乎肯定会泄露相邻的角落,所以启发式应该给它们很高的负重,至少在前40步中是这样
  • C方块-A2、A7、B1、G1、H2、H7、B8和G8。它们为对手提供角球,因此它们的值应该与其他方块不同,至少当边缘少于五个圆盘时

您可以在此处阅读关于构建相对强大(在击败人类新手的能力的意义上)的逆向小程序所使用的策略的相对简短的描述。

匿名用户

othello/reversi的一个好的启发式函数需要捕获位置的更多方面,包括:

  • 硬币平价
  • 流动性(可能移动的数量)
  • 角落囚禁(角落稳定/不能转弯,具有特殊重要性)
  • 稳定性(测量光盘不受翻转的影响)

我已经讨论了这些方面,并在这里提供了一个很好的启发式函数的实现:http://kartikkukreja.wordpress.com/2013/03/30/heuristic-function-for-reversiothello/

匿名用户

你可以试试。没有什么比数据更能得到答案了。

假设您使用合理的软件工程实践并抽象启发式,您可以很快检查它。