在minmax算法中,如何确定函数何时到达树的末端并终止递归调用。
我已经创建了一个max函数,在其中调用了min函数。在min函数中,我应该做什么?对于max函数,我只是返回最佳得分。
我已经创建了一个max函数,在其中调用了min函数。在min函数中,我应该做什么?对于max函数,我只是返回最佳得分。
def maxAgent(gameState, depth):
if (gameState.isWin()):
return gameState.getScore()
actions = gameState.getLegalActions(0);
bestScore = -99999
bestAction = Directions.STOP
for action in actions:
if (action != Directions.STOP):
score = minAgent(gameState.generateSuccessor(0, action), depth, 1)
if (score > bestScore):
bestScore = score
bestAction = action
return bestScore
def minvalue(gameState,depth,agentIndex):
if (gameState.isLose()):
return gameState.getScore()
else:
finalstage = False
number = gameState.getNumAgents()
if (agentIndex == number-1):
finalstage = True
bestScore = 9999
for action in gameState.getLegalActions(agentIndex):
if(action != Directions.STOP
我不知道该怎么继续了?我不能设置树的深度限制,它必须是任意的。
else: finalstage = False
的代码行处,你确实需要使用一个 else 子句,因为整个函数的剩余部分都在else
里面。我通常会写一些类似于#else ...
的注释,然后继续而不需要额外增加一个缩进级别。 - Hamish Grubijan