1
我想在python中写一个国际象棋引擎,我可以找到给定位置的最佳举动,但我努力从该位置收集主要变化,以下是我所到目前为止已经试过:收集和检索从alphabeta框架的主要变化
def alphabeta(board, alpha, beta, depth, pvtable):
if depth == 0:
return evaluate.eval(board)
for move in board.legal_moves:
board.push(move)
score = -alphabeta(board, -beta, -alpha, depth - 1, pvtable)
board.pop()
if score >= beta:
return beta
if score > alpha:
alpha = score
pvtable[depth-1] = str(move)
return alpha
我使用pvtable[depth - 1] = str(move)
追加移动,但最后我发现,pvtable
包含随机非连贯的动作,像['g1h3', 'g8h6', 'h3g5', 'd8g5']
的起始位置的事情。
我知道类似的问题已经被问到,但我仍然没有弄清楚我能如何解决这个问题。
谢谢,我已经阅读了这个页面,这很有趣,但是我不能将它翻译成Python代码,因为我的C背景是0,你能给我一个例子吗? – Hedwig
我编辑了我的答案,让我知道这是否有效。 – ZzetT
非常感谢你,我刚刚编辑过'if score> alpha:alpha = score pline [:] = [str(move)] + line',它看起来不错,但仍不确定是否是正确的方法 – Hedwig