Artificial intelligence 缓存可以用于alpha-beta搜索算法吗?

Artificial intelligence 缓存可以用于alpha-beta搜索算法吗?,artificial-intelligence,tic-tac-toe,minimax,alpha-beta-pruning,Artificial Intelligence,Tic Tac Toe,Minimax,Alpha Beta Pruning,我正在研究一个极小极大的tic-tac-toe算法。我让它工作得很好,缓存树中的每个状态 然后我实施了alpha-beta修剪,这似乎影响了游戏。我认为问题在于,如果节点的任何子节点、子节点、孙子节点等被删除,节点就不能被信任。这是真的吗 现在,我只缓存没有修剪后代的状态。图中显示的是我的点,而不是tic-tac-toe。最大玩家是向上的三角形,应该选择左边的移动。但是,如果在alpha-beta修剪过程中缓存了右侧的移动,则红色三角形的值将为4,因此右侧的移动将被错误选择。如果缓存指的是换位表

我正在研究一个极小极大的tic-tac-toe算法。我让它工作得很好,缓存树中的每个状态

然后我实施了alpha-beta修剪,这似乎影响了游戏。我认为问题在于,如果节点的任何子节点、子节点、孙子节点等被删除,节点就不能被信任。这是真的吗


现在,我只缓存没有修剪后代的状态。图中显示的是我的点,而不是tic-tac-toe。最大玩家是向上的三角形,应该选择左边的移动。但是,如果在alpha-beta修剪过程中缓存了右侧的移动,则红色三角形的值将为4,因此右侧的移动将被错误选择。

如果缓存指的是换位表,则不能始终信任换位表中的值。也就是说,当您在转置表中存储一个值时,您还需要存储alpha和beta值,可能是该状态下用于搜索的深度。如果alpha和beta值不相同*,则不能使用转置表中的值

*实际上,它们不必完全相同,表只需要具有包含当前节点上使用的值的超集的值,您要用缓存的值替换这些值

编辑:在大型游戏中处理此问题的其他信息。在节点上搜索时,最终值上有一个下限alpha和上限beta。如果返回值介于alpha和beta之间,则您知道它是状态的真实值。如果它等于alpha或beta,那么您知道它只是最终值的一个界。但是,您仍然可以使用这些信息来帮助搜索

特别是,假设您在当前搜索中有alpha=10和beta=20,并且转置表中的值为[alpha=12,beta=30,value=12]。然后,当您在分支下方重新搜索时,可以使用alpha=10和beta=12的边界进行搜索


这是因为你已经证明了价值在于感谢!我和我的教练提过,他说了类似的话。