artificial-intelligence - 极小极大 α-β 剪枝深度

标签 artificial-intelligence minimax alpha-beta-pruning

我已经实现了 connect 4 AI 来参加我类的锦标赛。我已经通过 alpha-beta 剪枝实现了深度有限的极小极大。我们可以提供一种深度作为锦标赛的论据。我的程序将采取行动,然后另一个学生将采取行动,这样一直持续下去,直到产生胜利者。它也是一种改进的连线4,将6×7游戏盘中的42个位置全部填满,每排4个都是一个点,得分最多的人获胜。

我的问题是关于 alpha-beta 修剪的。我们的 Action 必须花费“大约 1 秒”,所以任何低于 2 秒的 Action 都应该没问题。在没有 alpha-beta 修剪的情况下运行我的程序允许在深度 6 处移动约 1.3 秒或更短的时间。深度 7 是 Not Acceptable 。现在,通过 alpha-beta 剪枝,我能保证我可以改变深度以变得更深吗?我知道平均而言它会让我更深入,但我相信在最坏的情况下什么都不会被修剪,而且我会超出时间限制。这是正确的吗?

最佳答案

这是正确的:在最坏的情况下,α-β 与极小极大一样慢。

不过,这种情况发生的可能性很小。要优化 Alphabeta 并防止该问题,请在 Google 上搜索“move ordering alpha beta”。

如果你必须保持在时间限制内,我建议使用迭代加深(深度搜索1,2,...,x)。由于指数爆炸,这不应该成为问题。如果您的程序超时,只需执行您根据之前的搜索深度计算出的棋步即可。

关于artificial-intelligence - 极小极大 α-β 剪枝深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31620958/

相关文章:

pseudocode - 带有 alpha beta 修剪的换位表

python - 在tensorflow的输入中放入什么才能起作用

java - 来自随机值的 Minimax 结果给出了意想不到的低结果

java - TicTacToe minimax 算法在 4x4 游戏中返回意外结果

python - Alpha Beta 剪枝算法的绑定(bind)根

javascript - 在 Javascript 中实现 minimax 算法

machine-learning - Q-learning 和值(value)迭代有什么区别?

cuda - 使用 CUDA 实现神经网络

c++ - C++ 的效率

javascript - miniMax 算法是否能够处理任何输入