实现"MiniMax"递归的更好方法[closed]
-
21-12-2019 - |
题
我正在使用MinMax算法进行游戏,并且由于有很多可能性,即使使用"alpha-beta修剪",MinMax递归也会花费太长时间
我的代码看起来像这样:
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
循环而不是递归
但我找不到转换它的方法。
如果任何人有一个好主意,我会很高兴听到它!
谢谢,
解决方案
通常minmax中的递归不能被等效的迭代算法所取代,这就是为什么有优化方法,如beta修剪,试图通过尽快停止递归树的某些分支来提高性能。
对于您的游戏来说,可能不需要minmax(或者通常是递归算法),并且可能有其他方法可以使用其他技术找到最佳解决方案,但如果没有一组精确的规则是不可能
不隶属于 StackOverflow