06 搜索:博弈、极小化极大、α\alphaα-β\betaβ
如何让计算机下象棋?
1、分析 策略 战术——>移动(目前没有计算机能做到)
2、if-then rules
3、向前看并且评估(下面三步棋哪一个是最好的)
棋盘上的特征:静态值(没有探索后面可能会发生什么)
评估方法:线性计分多项式
4、大英博物馆算法
branching factor b 分支因子b
depth d 深度 d
末端数量:bdb^dbd
太多了,指数级的
5、实际做法:尽量往前看 ——极小化极大
极小化极大 minimax
max:我期望的
min:对手期望的
我下一步,对手下一步。无论我走哪一步,对手都希望是最小值,我们的目的是在对手想把我们最小化的背景下,将自己最大化。
α\alphaα-β\betaβ算法
对极小化极大的改进,会将搜索树的很大一部分分支(不可能被采用的分支)剪掉,优化算法运行速度。
这个节点的信息表max不会选择右边那条路。
深层剪枝:远端枝干与最上层的决策比较,依然可以作为剪枝的理由。
可以节省很多运算空间,能用的话一定要用
逐步深入 progressive deepening
每一层都算的计算成本和只计算最后一层差不多。所以可以通过计算b-1层,来避免对b层的计算。
在每次迭代中,算法会限制搜索的最大深度,并在该深度范围内进行深度优先搜索。如果在当前深度限制下没有找到解决方案,则增加深度限制并重新开始搜索。
anytime algorithms 随时算法:能够在有限时间内提供部分结果的算法,随着计算资源(如时间)的增加,结果的准确性会逐步提高。
DeepBlue 深蓝
深蓝就是minimax+α-β+progressive depending+一些其他的优化,结果的准确性会逐步提高。