网游练习总结(3)
2016-03-08 22:10
190 查看
废话不多说了,看基本算法:
博弈的要素:1.博弈方,2.决策,3.收益,4.博弈的次数与先后次序,5.博弈与信息。
博弈的分类:
(从博弈人数)[单人博弈][两人博弈(零和博弈)(非零和博弈)][多人博弈(结盟)(不结盟)];
(从博弈次数)[一次博弈(静态博弈)][多次博弈(动态博弈)(重复博弈)];
(从信息分类)[完全信息博弈(静态博弈)(动态博弈)][不完全信息博弈(静态博弈)(动态博弈)];
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308210713710-73323293.jpg)
设甲在最大最小策略下所能得到的最小值为:
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308211018725-1788463300.jpg)
乙在最小最大策略下准许甲能得到的最大值为:
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308211140835-1373799262.jpg)
则可以证明:
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308211326350-1805820014.jpg)
若
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308211449335-778447631.jpg)
则称其为最大最小或最小最大准则下博弈的值,记为v,此时的策略对为
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308211821632-1740577422.jpg)
最大最小策略或最小最大策略的解。
其实,有鞍点的博弈不是经常会有的。但是对于象棋接下来的算法有一点辅助性理解就行了。
接下来直接看中国象棋常用算法Alpha-Beta剪枝算法:
Alpha-Beta算法是对minimax算法的一种优化,它在搜索过程中,在当前已经有最优结果以后是否决定继续深度搜索下去。Alpha-Beta算法只能使用递归来实现,在递归运算时,分别传入Alpha和Beta值,alpha为搜索到的最好值,任何比alpha小的值直接被剪切掉;Beta是对于对手来说是最坏的值,因此,这个值也是对手所能接受的最坏值得底线,根据策略来说,如果在搜索过程中返回的是一个比Beta更好的值,对于我们走棋方来说就没有这个机会了,我们应该直接返回最坏的值,但出于对方的局势,他也总会找到一个比Beta更好的值。
中国象棋的算法生成:由于中国象棋每个局面的平均走法为20到60,相对而言相当复杂,平均每个局面为40个走法;
中国象棋价值评估:中国象棋不可能从一个局面直接进行搜索并计算出输赢,只能进行有限的搜索进行局面的优劣。
(1)棋子价值:一方棋子总价值等于该方所有棋子乘以相应棋子的价值的总和。简而言之,也就是说此局面该方有棋子的基本情况;
(2)位置价值:由于不同棋子在不同位置各自发挥的作用不同,因此,每个棋子在每个局面相对应的位置都会有不同的价值值;
(3)关系价值:棋子之间的关系,也是评估双方优劣的重要因素;
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308215150663-405461489.jpg)
在博弈树中,比如黑方胜棋局面是一个极大值,那么红方为极小值,和棋则为0. 那么,黑方就会让局面的分值一直拉大,而红方只能将局面分值减小。因此,黑方会选择分值更大的节点,而红方就会选择能够接受范围内的最小的分值节点。
关于博弈:
对于博弈,谢识予在《经济博弈论》中给出过一个非技术性的定义:博弈即一些个人、队组或其他组织,在面对一定的环境条件,在一定规则下,一次或多次,同时或先后,从各自允许选择的行动或策略中进行选择并加以实施,各自取得相应结果的过程。一个简单的定义就是在优先在预测胜率前做出的决策就是博弈。博弈的要素:1.博弈方,2.决策,3.收益,4.博弈的次数与先后次序,5.博弈与信息。
博弈的分类:
(从博弈人数)[单人博弈][两人博弈(零和博弈)(非零和博弈)][多人博弈(结盟)(不结盟)];
(从博弈次数)[一次博弈(静态博弈)][多次博弈(动态博弈)(重复博弈)];
(从信息分类)[完全信息博弈(静态博弈)(动态博弈)][不完全信息博弈(静态博弈)(动态博弈)];
零和博弈:
零和博弈指参与博弈的各方在严格竞争下一方的收益必然意味着另一方的损失,博弈各方的收益和损失相加总和永远等于零。有鞍点的零和博弈:
在矩阵中,一个数在所在的行是最大值,在所在的列中是最小值,或者在所在的列是最大值,在所在的行使最小值,则这个数就被称为鞍点。在零和博弈中,这个数就是一方的最大收益同时又是另一方的最小收益。零和博弈有鞍点的情形并不是很常见,大部分零和博弈是没有鞍点的。博弈的解:
博弈的解就是双方在使自己收益最大化的情况下不得不接受的一对均衡策略。有鞍点的零和博弈的解就是一个策略对,是由博弈局势所决定的,在对方的限制条件下,双方最后不得不接受的结局所对应的一对策略。有鞍点的零和博弈求解方法:
在博弈矩阵中每一行选出最小的数,在这些最小数中再选出最大的数;列中选出最大的数,在这些最大数中再选出最小的数,如果行与列选出的数值相等,则这个数就是博弈的值,而对应的行与列的策略就是这个问题的解。零和博弈的Von.Neumann与Mogenstern最大最小或最小最大策略解的一般描述:
博弈方为甲方I与乙方II,甲方的策略为I1到In,乙方的策略为II1到IIm,收益矩阵:![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308210713710-73323293.jpg)
设甲在最大最小策略下所能得到的最小值为:
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308211018725-1788463300.jpg)
乙在最小最大策略下准许甲能得到的最大值为:
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308211140835-1373799262.jpg)
则可以证明:
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308211326350-1805820014.jpg)
若
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308211449335-778447631.jpg)
则称其为最大最小或最小最大准则下博弈的值,记为v,此时的策略对为
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308211821632-1740577422.jpg)
最大最小策略或最小最大策略的解。
其实,有鞍点的博弈不是经常会有的。但是对于象棋接下来的算法有一点辅助性理解就行了。
接下来直接看中国象棋常用算法Alpha-Beta剪枝算法:
Alpha-Beta算法是对minimax算法的一种优化,它在搜索过程中,在当前已经有最优结果以后是否决定继续深度搜索下去。Alpha-Beta算法只能使用递归来实现,在递归运算时,分别传入Alpha和Beta值,alpha为搜索到的最好值,任何比alpha小的值直接被剪切掉;Beta是对于对手来说是最坏的值,因此,这个值也是对手所能接受的最坏值得底线,根据策略来说,如果在搜索过程中返回的是一个比Beta更好的值,对于我们走棋方来说就没有这个机会了,我们应该直接返回最坏的值,但出于对方的局势,他也总会找到一个比Beta更好的值。
中国象棋的算法生成:由于中国象棋每个局面的平均走法为20到60,相对而言相当复杂,平均每个局面为40个走法;
中国象棋价值评估:中国象棋不可能从一个局面直接进行搜索并计算出输赢,只能进行有限的搜索进行局面的优劣。
(1)棋子价值:一方棋子总价值等于该方所有棋子乘以相应棋子的价值的总和。简而言之,也就是说此局面该方有棋子的基本情况;
(2)位置价值:由于不同棋子在不同位置各自发挥的作用不同,因此,每个棋子在每个局面相对应的位置都会有不同的价值值;
(3)关系价值:棋子之间的关系,也是评估双方优劣的重要因素;
![](http://images2015.cnblogs.com/blog/781704/201603/781704-20160308215150663-405461489.jpg)
在博弈树中,比如黑方胜棋局面是一个极大值,那么红方为极小值,和棋则为0. 那么,黑方就会让局面的分值一直拉大,而红方只能将局面分值减小。因此,黑方会选择分值更大的节点,而红方就会选择能够接受范围内的最小的分值节点。
相关文章推荐
- 数字统计
- [LeetCode]Generate Parentheses
- libcpmt.lib 与 msvcprt.lib
- 重新发现梯度下降法--backtracking line search
- 使用Netty绑定一个端口如何分辨出多种类型的DTU的注册包
- UITextView实现图文混排效果
- JavaScript学习笔记——引用类型:Array类型
- html5+php实现拍照
- 【LeetCode】206. Reverse Linked List
- python编程书推荐9本免费的
- Django: 之Web框架完美解析
- 20. 手势识别之UISwipeGestureRecognizer
- swift中替换弹出键盘
- 简单的求和题
- HTML首行缩进两字符
- 知识与信仰
- 腾讯云不同QQ 账号之间数据也迁移
- App架构经验总结
- 填充算法
- 观感4