我原本是使用遞歸來創建我的樹,只有我有評分的樹葉,但是因爲我需要知道深度才能知道是最小還是最大,我切換到depth=0
開始。然而,由於有時候currentRoot.ia = None
因爲沒有得分已經被計算得那麼深。我想要的是跟蹤深度,並找到currentRoot.ia
評估過的最深的葉子,以及每個葉子深度的最小值。Python遞歸樹或fowards?修復和簡化代碼
我檢查是否有孫輩,因爲當我評估一個得分的位置時,我還添加了一個給出該得分的移動節點,所以在葉節點處不應該有任何分數。得分來自發動機的角度,所以我必須在奇怪的深處否定,儘管如果我總是最大化得分,也許我可以逃避。
def minimax(currentRoot, depth):
if len(currentRoot.children) > 0 and len(currentRoot.children[0].children) > 0: #There are grandchildren
for child in currentRoot.children:
minimax(child, depth+1)
else:
if depth%2 == 0:
currentRoot.score = currentRoot.ia
else:
currentRoot.score = -currentRoot.ia
return currentRoot.score
measure = min if depth % 2 else max
currentRoot.score = measure(c.score for c in currentRoot.children)
return currentRoot.score
那麼......問題是什麼? –
@Tadhg currentRoot.score = measure(c在currentRoot.children中的c.score) TypeError:無法訂購的類型:NoneType
Josh
下一次請在問題中發佈錯誤,如果可能的話整個回溯。 –