代码改变世界

随笔分类 -  博弈与算法实现

并行博弈树搜索算法-第8篇 写在最后的话:有趣的的博弈算法

2012-03-04 10:26 by myjava2, 495 阅读, 收藏, 编辑
摘要: 毛主席说过,与人斗其乐无穷。博弈就是一个人与人斗争的过程。既然是斗争,那就有利益的争端。利益存在此消彼长,是谓“零和”。既然斗争对方是人,那意味着他是一个有着主观能动性,有着智慧与能量的主体,因此才需要己方殚精竭虑,思考算计。人类如此聪明,与人斗尤嫌不够,还要造出机器来帮自己斗,与自己斗。发展到现在,不但在国际象棋界弄出了谁都斗不过的”深蓝“,而且大有不见黄河不死心,一发而永不可收拾之势。至于是否会玩着玩着,一不小心造出个怪物,反把自己斗挂了,还需要继续走着瞧。上面是闲话,总结一把:博弈树的搜索算法是人工智能领域一个重要的研究课题.满足完全信息且无随机因素的二人零和博弈问题都可以用博弈树搜索算 阅读全文

并行博弈树搜索算法-第7篇 另辟蹊径:其他的博弈树并行搜索算法

2012-03-02 22:12 by myjava2, 315 阅读, 收藏, 编辑
摘要: 除了基于Alpha-Beta算法的博弈树并行搜索算法外,还有其他的博弈树搜索算法.现简要介绍如下.7.1 SSS*算法及其并行化Alpha-Beta算法是一种基于Min-Max方法的固定深度(fixed-depth)搜索算法.说它是固定深度的搜索算法,是因为对每个结点,它依序从左到右搜索其所有子结点.与Alpha-Beta算法相同的是,SSS*算法[19](或者其对称算法DUAL*)也基于Min-Max方法,但与前者不同的是,它使用最佳优先(best-first)策略.即,SSS*算法不以结点在博弈树中所处的位置为标准,而按照它们前途有望的(promising)程度,由高至低搜素结点.为了实. 阅读全文

并行博弈树搜索算法-第6篇 百花齐放:各种并行Alpha-Beta算法

2012-03-01 22:38 by myjava2, 913 阅读, 收藏, 编辑
摘要: 下面开始介绍一些在Alpha-Beta算法中引入并行化的方法和算法.6.1 并行求值(Parallel Evaluation)游戏的博弈程序经常要在搜索深度和叶结点的求值复杂度之间进行平衡.一些博弈程序,使用简化的估值函数,以获得更深的搜索深度.但是花费在对叶结点的求值中的时间仍然占搜索时间的很大一部分.一个在博弈树搜索中应用并行性的思想[6]就是将求职函数设计得较为复杂,并将它划分到多个处理器中并行计算,然后综合各部分结果,得到最终的估值.6.2 并行吸出(Parallel Aspiration)并行吸出(Parallel Aspiration)或者窗口分裂(Window Spittting 阅读全文

并行博弈树搜索算法-第5篇 人多力量大(?):并行Alpha-Beta算法

2012-02-29 00:22 by myjava2, 509 阅读, 收藏, 编辑
摘要: 在Alpha-Beta算法的并行化的过程中,一个较为困难的问题是判断从哪里开始并行搜索,因为一个分支的搜索可能会发现并行进行的另一个搜索完全可以避免.正因为如此,Alpha-Beta算法是一个很难并行的算法.虽然仿真可能预计出设计的Alpha-Beta并行算法具有非常好的性能,但是很多仿真都是基于一些不现实的假设的基础上.在实际的实现中,以下的因素经常会导致Alpha-Beta并行算法的并行效率低下[11]:1. 同步开销(Synchronization Overhead).如果算法中存在过多的同步点(synchronization point),那么处理器很多时候会处于空闲(idle)状态. 阅读全文

并行博弈树搜索算法-第3篇 优秀的园丁:Alpha-Beta算法

2012-02-27 22:30 by myjava2, 559 阅读, 收藏, 编辑
摘要: 3.1 Alpha-Beta算法虽然博弈树的状态是有限的,但是状态个数却非常多.假设博弈树的深度为d,每个结点有b个分支,即分支因子(branchingfactor)为b,那么使用Min-Max方法搜索这个博弈树需要搜索个结点.然而幸运的是,Min-Max方法的一些搜索是没有必要的,故此可以剪除(cut-off)那些没有必要搜索,即对搜索进行剪枝(prune).Alpha-Beta算法是一种有效而常用的剪枝算法.Alpha-Beta算法是在Min-Max方法基础上的一个改进.它维护一个搜索窗口(search window):[α, β].其中α表示在搜索进行到当前状态,当前对抗者能确保达到的最 阅读全文

并行博弈树搜索算法-第4篇 更上一层楼:Alpha-Beta算法的改进

2012-02-27 22:29 by myjava2, 843 阅读, 收藏, 编辑
摘要: 在Alpha-Beta算法被广泛运用后,对该算法的很多改进算法也相继被提出.这些改进算法主要在以下几个方面对Alpha-Beta算法进行改进[7]:1. 择序(ordering).在搜索博弈树时,内部结点有多个可能的移动.择序指的是搜索这些分支的顺序.择序影响着搜索叶结点的个数,使得其数目在[,]区间内变化.如果择序使得博弈树是随机的,那么所需搜索的叶结点的个数较多,如果择序使得博弈树是强有序的,那么所需搜索的叶结点的个数较少.在Alpha-Beta算法中,提高择序的好坏就意味着提高剪枝发生的概率.所以一个好的移动(sufficientor good move)可以定义为:a. 导致剪枝的移动 阅读全文

并行博弈树搜索算法-第2篇 博弈过程的抽象:MinMax方法

2012-02-26 21:24 by myjava2, 757 阅读, 收藏, 编辑
摘要: 2.1 Min-Max方法假设在博弈过程中,对抗者1总是选择使得博弈值最小的移动,那么作为对手的对抗者2则总会选择是的博弈值最大的移动,对抗者1称为min,对抗者2称为max.由于博弈双方是交替移动的,所以博弈树的结点及其父结点分属于两个对抗者中的一个,他们的种类(type)分属max和min.博弈树上的每个结点对应于一个深度(depth),叶结点的深度为0.因此,在任意的结点node,对博弈双方均最优的博弈值为[3]:由此,很自然地得出Min-Max算法,用来求出满足一些条件的二人零和博弈问题的博弈值:MiniMax(node) 1: if node.depth = 0 then 2: r. 阅读全文

并行博弈树搜索算法-第1篇 什么是博弈树搜索算法

2012-02-26 13:00 by myjava2, 676 阅读, 收藏, 编辑
摘要: 博弈树的搜索是人工智能领域一个重要的研究课题.许多完全信息的二人零和博弈问题都可以用博弈树搜索算法解决。那么什么是二人零和博弈问题呢?有一系列的博弈问题拥有以下性质[1]:1. 有两个对抗者:对抗者1和对抗者2.2. 两个对抗者交替移动.在博弈的每一个位置,对于正在移动的参与者,都存在有限个可能的移动.3. 游戏是决定性的,即游戏中不存在随机性.4. 游戏是完全信息的,即在任意时刻,博弈双方知道所处状态的所有信息.例如国际象棋是完全信息的,因为博弈双方知道所有的棋子所处位置,而两人玩的扑克牌游戏则是非完全信息的,因为一个人看不到对方手上的扑克牌.5. 游戏有三种可能结局:对抗者1获胜,对抗者2 阅读全文