我正在为一款纸牌游戏编写人工智能,经过一些测试,我发现在我的alpha-beta算法中使用MTD(f)(一系列零窗口搜索)比仅使用alpha-beta要快。
MTD(f)算法在这里被很好地描述了:http://people.csail.mit.edu/plaat/mtdf.html
我的问题是,在MTD(f)搜索的每个传递中(每个猜测),即使链接上的说明建议我应该这样做(事实上在迭代之间清除表可加速算法),我也没有重用我存储的任何先前位置。
我的问题在于当我将一个位置和值存储在我的置换表中时,我还存储了它有效的alpha和beta值。因此,通过树的第二次遍历使用不同的猜测(因此alpha和beta不同)不可能重用任何信息。这是预期的结果吗?或者我在这里漏掉了一些基本的东西?
例如,如果对于alpha=3 beta=4,我们得出了结果7(显然是截断),那么我应该将其存储在表中,作为有效的alpha=3至beta=6的结果?还是beta=7?