9

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

我想过:

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

不知道好不好。

4

3 回答 3

11

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

  • 计算移动的数量可以让您衡量即时移动性;在其他条件相同的情况下,您可以采取能够开辟更多其他举措的举措的情况应该受到青睐。您还需要测量潜在的移动性- 靠近开放空间的对手磁盘的数量。
  • X 方块 - B2、B7、G2 和 G7。将你的圆盘提前放在那里几乎肯定会放弃相邻的角落,所以你的启发式应该给他们高负权重,至少在前 40 步中
  • C 方格 - A2、A7、B1、G1、H2、H7、B8 和 G8。它们让对手可以进入角落,因此它们的值应该不同于其他方格的值,至少当边上的圆盘少于五个时

您可以在此处阅读有关构建相对强大(在其能够击败人类新手的能力)黑白棋小程序中使用的策略的相对简短描述。

于 2012-11-10T13:20:05.243 回答
8

一个好的黑白棋/黑白棋启发式函数需要捕捉位置的更多方面,包括:

  • 硬币平价
  • 移动性(可能移动的数量)
  • 弯道囚禁(弯道稳定/不能转弯,特别重要)
  • 稳定性(测量圆盘免于转动)

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

于 2013-11-10T12:12:04.130 回答
-7

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

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

于 2012-11-09T20:50:54.273 回答