转载自:https://blog.csdn.net/wenjianmuran/article/details/90633418
本文首发在我的个人博客:https://jlice.top/p/7q6ye/。欢迎大家前去参观,么么哒~
在局面确定的双人对弈里,常采用博弈树搜索。我方追求更大的赢面,而对方会设法降低我方的赢面。由于局面确定,因此可以对赢面进行评估。我方往较大赢面的方向走,同时考虑对方的走法。由于对方的走法不确定,就假设对方会选择最大程度降低我方赢面的方向走,我方应规避那些对方可以大幅降低我方赢面的走法。
Minimax算法
称我方为MAX
,对方为MIN
,图示如下:
例如,对于如下的局势,假设从左往右搜索,根节点的数值为我方赢面(倒推值):
我方应选择中间的路线。因为,如果选择左边的路线,最差的赢面是3;如果选择中间的路线,最差的赢面是15;如果选择右边的路线,最差的赢面是1。虽然选择右边的路线可能有22的赢面,但对方也可能使我方只有1的赢面,假设对方会选择使得我方赢面最小的方向走,那么经过权衡,显然选择中间的路线更为稳妥。
实际上,在看右边的路线时,当发现赢面可能为1就不必再去看赢面为12、20、22的分支了,因为已经可以确定右边的路线不是最好的。这个过程就是剪枝,可以避免不必要的计算。