博弈一向被认为是最富挑战的智力游戏,有着难以言语的魅力。自从出现计算机后人们就开始有了与计算机下棋的想法。早在上世纪60年代就已经出现若干博弈程序,并达到较高的水平,现已出现计算机博弈程序能够与人类博弈大师抗衡的局面。博弈理论的研究不断为人类科学提供新的课题,同时也对深层次的知识研究提出了严峻的挑战。如何表示博弈问题的状态,博弈过程和取胜的知识是目前人类仍在探讨的问题。就拿五子棋游戏来讲,棋面有15×15 = 225 个落子点,对方走完一步后,计算机差不多有200多种选择每一种选择对应搜索树的一个节点,即棋局上的一个状态。计算机走完一步后就应该考虑对方会走哪一步,此时同样有200种选择,因此有200×200种可能的选择,对应搜索分支达到200×200个,如果博弈程序要考虑20回合,搜索树就有40层,总结点大约有10^92 个。这个数字即使是计算机以每秒万亿次的速度计算,走一步棋也要一年。因此提高博弈问题的求解程序效率,因该做到以下两点:
1,改进生产过程,使之只产生好的节点,即选择比较好的节点去扩展。
2,改进测试过程,使最好的步骤能够及时被确认,确认的代价不能太大。
目前博弈论比较常用的的搜索策略有极大极小搜索策略,深度优先的alpha-beta剪枝搜索等。本文仅讨论极大极小搜索策略和深度优先的alpha-beta剪枝搜索策略。
一,极大极小值搜索
极大极小值搜索始终站在博弈一方的立场上给棋局估值,有利于这一方的棋局给一个较高的评价值,不利于这一方(有利于另一方)的给予一个较低的评价值,双方优劣不明显的局面给予一个中间评价值(一般是0)本方行棋的时候选择评价值极大的节点走步,另一方行棋时则选择评价值极小的子节点走步