【发布时间】:2014-02-25 07:48:53
【问题描述】:
我在游戏中使用了 MinMax 算法,由于有很多可能性,MinMax 递归花费的时间太长,即使是“alpha-beta pruning”
我的代码看起来像这样:
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
我知道有时您可以使用for 循环而不是递归
但我找不到转换它的方法。
如果有人有好主意,我会很高兴听到它!
谢谢,
【问题讨论】:
-
哪个游戏(要知道分支因子)哪个深度?
-
嗯。对我来说,这看起来很简单。 :(
-
该游戏是扑克的变体,每轮可以有 1 到 5 步,最大深度为 40(5 O-Poker)
-
stopingCond是什么? -
这个问题似乎是题外话,因为它属于codereview.stackexchange.com
标签: python recursion minimax game-theory