Minimax算法澄清

对不起,这可能是一个糟糕的问题,我正在尝试实现minimax算法,而我对如何创建'得分'感到困惑 . 我是否需要从一个状态一直到一个胜利状态,或者只是一个层,或者根本不需要制作一个包含各种可能组合的树? EX .

X 0 _ #1
0 0 _ #2
X X _ #3

各州会是 (X1),(X2),(X3) 还是 (X2,01,X3),(X1,02,X3),(X3),(X2,03,X1) ?对于得分,我是否需要深入考虑,或者我只是从这个深度确定最大/最小分数?

回答(1)

2 years ago

我认为你很有可能遍历整个树,直到 terminal state ,然后给出一个分数:

  • 1 为Max玩家获胜

  • -1 为闵球员获胜

  • 0 平局

对于遍历所有可能移动的整个树的游戏而言,计算成本太高(如国际象棋),您可以设置 terminal depth (例如,3或4层到树中)并返回该位置的分数 .

我想你也在询问评估是否需要考虑它的深度 . 答案是不 .

您可能会想知道,如果您没有完全遍历树,您如何评估位置?

有不同的方式,最重要的是做一些事情 efficient (为了更快地走到树下) . 对于国际象棋,有时只计算材料(片)的优势就足以产生一个基本的极小极大评分系统 .

看国际象棋编程维基的一些很好的解释:https://chessprogramming.wikispaces.com/Minimax