Python 一个更好的方法来实施;极小极大“;递归

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) )

我在一个游戏中使用最小最大值算法,因为存在很多可能性,最小最大值递归花费的时间太长,即使使用“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