Python 一个更好的方法来实施;极小极大“;递归
我在一个游戏中使用最小最大值算法,因为存在很多可能性,最小最大值递归花费的时间太长,即使使用“alpha-beta修剪” 我的代码如下所示:Python 一个更好的方法来实施;极小极大“;递归,python,recursion,minimax,game-theory,Python,Recursion,Minimax,Game Theory,我在一个游戏中使用最小最大值算法,因为存在很多可能性,最小最大值递归花费的时间太长,即使使用“alpha-beta修剪” 我的代码如下所示: min(state,depth,alpha,beta): if stopingCond: return value for moves in allmoves: state.do(move) beta = min(beta, max(state,depth,alpha,beta) )
min(state,depth,alpha,beta):
if stopingCond:
return value
for moves in allmoves:
state.do(move)
beta = min(beta, max(state,depth,alpha,beta) )
if alpha >= beta: return beta
return beta
max(state,depth,alpha,beta):
if stopingCond:
return value
for moves in allmoves:
state.do(move)
alpha = max(beta, min(state,depth,alpha,beta) )
if alpha >= beta: return alpha
return beta
我知道有时候你可以用来代替递归
但是我找不到一个方法来转换它
如果有人有好主意,我很高兴听到
感谢,通常,minmax中的递归不能被等价的迭代算法所取代,这就是为什么有优化方法,如beta剪枝,试图通过尽快停止递归树的某些分支来提高性能
对于您的游戏,可能不需要完全使用最小最大值(或者,通常是递归算法),也可能有其他方法使用其他技术来找到最佳解决方案,但如果没有一套精确的规则,就无法判断。哪个游戏(要知道分支因子)哪个深度?mm。对我来说,这看起来像是普通的最小最大值(游戏是扑克牌的一种变体,在每一轮中可以有1到5个移动,最大深度为40(5个扑克牌)。什么是stopingCond
?这个问题似乎离题了,因为它属于on