Initial commit

This commit is contained in:
Pullarla 2021-10-19 15:54:28 +08:00
parent 28ffcf80a0
commit ad402a37b0
1 changed files with 9 additions and 9 deletions

View File

@ -10,13 +10,13 @@ Minimax 算法又名极小化极大算法,是一种找出失败的最大可能
通过分析可以发现,在利用穷举方法执行 Minimax 算法中有许多的无效搜索,也就是说,许多明显较劣的状态分支我们也进行搜索了。我们在进行极大值搜索的时候,我们仅仅关心,下面最大的状态,对于任何小于目前值的分支也都是完全没有必要进行进一步检查的。(α减枝) 通过分析可以发现,在利用穷举方法执行 Minimax 算法中有许多的无效搜索,也就是说,许多明显较劣的状态分支我们也进行搜索了。我们在进行极大值搜索的时候,我们仅仅关心,下面最大的状态,对于任何小于目前值的分支也都是完全没有必要进行进一步检查的。(α减枝)
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/008122f5dceee247a34ccdf40fd178be.writebug) ![](http://www.writebug.com/myres/static/uploads/2021/10/19/008122f5dceee247a34ccdf40fd178be.writebug)
通过上图,我们可以发现,我们可以减去大量无用的状态检查,从而降低我们的运算量。 通过上图,我们可以发现,我们可以减去大量无用的状态检查,从而降低我们的运算量。
同时,我们在进行极小值搜索的时候,我们仅仅关心,下面最小的状态,对于任何大于目前值的分支都是完全没有必要进行进一步检查的。(β 减枝) 同时,我们在进行极小值搜索的时候,我们仅仅关心,下面最小的状态,对于任何大于目前值的分支都是完全没有必要进行进一步检查的。(β 减枝)
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/1660b5600455ef92fadef661894a8f76.writebug) ![](http://www.writebug.com/myres/static/uploads/2021/10/19/1660b5600455ef92fadef661894a8f76.writebug)
通过上图,我们可以发现,我们可以减去大量无用的状态检查,从而降低我们的运算量。 通过上图,我们可以发现,我们可以减去大量无用的状态检查,从而降低我们的运算量。
@ -26,11 +26,11 @@ Minimax 算法又名极小化极大算法,是一种找出失败的最大可能
五子棋:是一种两人对弈的纯策略型棋类游戏,通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成 5 子连线者获胜。 五子棋:是一种两人对弈的纯策略型棋类游戏,通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成 5 子连线者获胜。
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/8bb59de479478d8ac23de93f14978870.writebug) ![](http://www.writebug.com/myres/static/uploads/2021/10/19/8bb59de479478d8ac23de93f14978870.writebug)
这里,我们采用了极大极小博弈树(MGT),来实现 AI。这里用一张井字棋的搜索示意图来说明。 这里,我们采用了极大极小博弈树(MGT),来实现 AI。这里用一张井字棋的搜索示意图来说明。
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/5adfb1724d5c6b047398c100cb6f74b6.writebug) ![](http://www.writebug.com/myres/static/uploads/2021/10/19/5adfb1724d5c6b047398c100cb6f74b6.writebug)
上图很清晰的展示了对局可能出现的所有情况(已经去除了等价的情况),如果让这个图延展下去,我们就相当于穷举了所有的下法,如果我们能在知道所有下法的情况下,对这些下法加以判断,我们的 AI自然就可以选择具有最高获胜可能的位置来下棋。极大极小博弈树就是一种选择方法由于五子棋以及大多数博弈类游戏是无法穷举出所有可能的步骤的状态会随着博弈树的扩展而呈指数级增长所以通常我们只会扩展有限的层数而 AI 的智能高低通常就会取决于能够扩展的层数层数越高AI 了解的信息就越多,就越能做出有利于它的判断。 上图很清晰的展示了对局可能出现的所有情况(已经去除了等价的情况),如果让这个图延展下去,我们就相当于穷举了所有的下法,如果我们能在知道所有下法的情况下,对这些下法加以判断,我们的 AI自然就可以选择具有最高获胜可能的位置来下棋。极大极小博弈树就是一种选择方法由于五子棋以及大多数博弈类游戏是无法穷举出所有可能的步骤的状态会随着博弈树的扩展而呈指数级增长所以通常我们只会扩展有限的层数而 AI 的智能高低通常就会取决于能够扩展的层数层数越高AI 了解的信息就越多,就越能做出有利于它的判断。
@ -46,15 +46,15 @@ Minimax 算法又名极小化极大算法,是一种找出失败的最大可能
对于一个二维的期面,五子棋不同于围棋,五子棋的胜负只取决于一条线上的棋子,所以根据五子棋的这一特征,我们就来考虑将二维的棋面转换为一维的,下面是一种简单的思考方式,对于整个棋盘,我们只需要考虑四个方向即可,所以我们就按照四个方向来将棋盘转换为 15 * 6 个长度不超过 15 的一维向量(分解斜向的时候,需要分为上下两个半区),参考下图: 对于一个二维的期面,五子棋不同于围棋,五子棋的胜负只取决于一条线上的棋子,所以根据五子棋的这一特征,我们就来考虑将二维的棋面转换为一维的,下面是一种简单的思考方式,对于整个棋盘,我们只需要考虑四个方向即可,所以我们就按照四个方向来将棋盘转换为 15 * 6 个长度不超过 15 的一维向量(分解斜向的时候,需要分为上下两个半区),参考下图:
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/578750182a4a7c57c1e6786721989f44.writebug) ![](http://www.writebug.com/myres/static/uploads/2021/10/19/578750182a4a7c57c1e6786721989f44.writebug)
我们的目的是为了为其评分,那么我们就还需要评估每个线状态,将每个线状态的评分进行汇总,当做我们的棋面评分: 我们的目的是为了为其评分,那么我们就还需要评估每个线状态,将每个线状态的评分进行汇总,当做我们的棋面评分:
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/d0f5d8c6e980af7da80e08b4f510936e.writebug) ![](http://www.writebug.com/myres/static/uploads/2021/10/19/d0f5d8c6e980af7da80e08b4f510936e.writebug)
接下来我们所要做的就是评价每一条线状态,根据五子棋的规则,我们可以很容易穷举出各种可能出现的基本棋型,我们首先为这些基本棋型进行识别和评价,并且统计每个线状态中出现了多少种下面所述的棋型,并据此得出评价值,得到如下图所示的静态估值表: 接下来我们所要做的就是评价每一条线状态,根据五子棋的规则,我们可以很容易穷举出各种可能出现的基本棋型,我们首先为这些基本棋型进行识别和评价,并且统计每个线状态中出现了多少种下面所述的棋型,并据此得出评价值,得到如下图所示的静态估值表:
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/cf8af1d7601101cceea19dd707f68eb8.writebug) ![](http://www.writebug.com/myres/static/uploads/2021/10/19/cf8af1d7601101cceea19dd707f68eb8.writebug)
根据这个表以及我们之前所谈到的规则我们就可以得到一个可以运行的AI了。 根据这个表以及我们之前所谈到的规则我们就可以得到一个可以运行的AI了。
@ -76,9 +76,9 @@ Minimax 算法又名极小化极大算法,是一种找出失败的最大可能
# 五、实验成果 # 五、实验成果
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/f35838e45157b3624edd0764123fd6dd.writebug) ![](http://www.writebug.com/myres/static/uploads/2021/10/19/f35838e45157b3624edd0764123fd6dd.writebug)
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/cf64dfc26f617ddbb6e734942f8b33dd.writebug) ![](http://www.writebug.com/myres/static/uploads/2021/10/19/cf64dfc26f617ddbb6e734942f8b33dd.writebug)
# 六、实验总结 # 六、实验总结