我已经实现了一个连接4 AI,可以在我的课程中参加锦标赛。我用alpha-beta修剪实现了深度限制的极小极大值。我们被允许给出一个深度作为比赛的参数。我的计划将采取行动,然后另一名学生将采取行动,并持续到有赢家为止。它也是一个改进的连接4,其中6×7游戏板中的整个42个点被填充,并且每个4-a-row是一个点,并且最多的点获胜。
我的问题是关于alpha-beta修剪。我们的举动必须“大约1秒钟”,所以2秒以内的任何事情都应该没问题。在没有alpha-beta修剪的情况下运行我的程序允许在深度6处移动大约1.3秒或更短。深度7是不可接受的。现在,通过alpha-beta修剪,我可以保证我可以改变深度以进一步深入吗?我平均知道它会让我更深入,但我相信在最坏的情况下,没有任何东西会被修剪,我会超过时间限制。这是对的吗?
答案 0 :(得分:1)
这是正确的:在最坏的情况下,alpha-beta和minimax一样慢。
这种情况发生的可能性非常小。为了优化alphabeta并防止出现这个问题,请搜索"移动排序alpha beta"在谷歌。
如果你必须留在时间限制内,我建议使用迭代加深(搜索深度1,2,...,x)。由于指数爆炸,这应该不是问题。如果你的程序没时间用完,只需用你之前的searchdepth播放你想出的动作。