什么时候minimax算法的评估函数应该返回负值?

时间:2014-12-04 02:01:03

标签: minimax

我有连接四种类型游戏的评估功能。我不明白评估函数何时给出负值。我的评估函数基本上为每次移动分配一个值,psuedocode可能更容易显示

if player has 4 in a row
    return 5000;
if player has 3 in a row
    return 4000;
if opponent has 3 in a row or 3 in a column
    return 4000;
if opponent a disjoint 3 in a row or column //ie xx x
    return 4000;
if opponent has in row with spaces on both sides// ie ' 'OO' '
    return 100;
if opponent has two in arrow w/o spaces on both sides // ie XOO
    return 95;

这是基本思想,但由于没有负值,min函数总是返回0;

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

首先,您的评估函数不必给出负值。这只是一个简单的惯例,对于一个玩家来说是好的,对于玩家一个是积极的,对于玩家二是好的是负的,同样好的是零。这不应该导致你的min函数返回零。如果你发布你的min函数,也许我们可以帮助你。我个人经验的怀疑(我也做了一个连接四引擎)是min函数将默认值设置为零。这只适用于max函数。 min函数默认值必须设置为一个非常高的数字(在评估数字为5000的情况下)。否则,它所看到的所有动作都将永远不会为零。只是一个猜测