除了基于Alpha-Beta算法的博弈树并行搜索算法外,还有其他的博弈树搜索算法.现简要介绍如下.

7.1SSS*算法及其并行化

Alpha-Beta算法是一种基于Min-Max方法的固定深度(fixed-depth)搜索算法.说它是固定深度的搜索算法,是因为对每个结点,它依序从左到右搜索其所有子结点.与Alpha-Beta算法相同的是,SSS*算法[19](或者其对称算法DUAL*)也基于Min-Max方法,但与前者不同的是,它使用最佳优先(best-first)策略.即,SSS*算法不以结点在博弈树中所处的位置为标准,而按照它们前途有望的(promising)程度,由高至低搜素结点.

为了实现最佳优先策略,算法维护一个OPEN队列(OPEN list).OPEN队列的每项对应着一个结点,用的形式组织.其中n代表博弈树中的一个结点,s是一个状态标识,可能的取值是LIVE或SOLVED,h被称为merit,是一个实数值.一个使用状态空间搜索(State Space Search)概念描述的SSS*算法如下[20]:

1. 将插入OPEN队列中.

2. 将OPEN队列中h最大的p = 取出.由于OPEN队列是h的非降序列,所以p为队列的第一项.

3. 如果n = root且s = SOLVED 那么p就是目标状态,此时h就是博弈树的最大最小值,否则继续.

4. 通过执行状态空间操作Г,扩充p状态,将所有的输出状态Г(p)按序插入OPEN队列中.如果可能,清除OPEN队列中的多于状态.

5. 跳转到2.

操作Г的情况

输入状态满足条件

操作Г产生的新的状态

不操作

s = SOLVED

n = ROOT

达到最终状态,算法退出,博弈值为h

1

s = SOLVED

n ≠ ROOT

type(n) = MIN

将插入OPEN队列中,清除OPEN队列中满足m是k的祖先的

2

s = SOLVED

n ≠ ROOT

type(n) = MAX

next(n) = NIL

将插入OPEN队列中

3

s = SOLVED

n ≠ ROOT

type(n) = MAX

next(n) = NIL

将插入OPEN队列中

4

s = LIVE

first(n) = NIL

将插在所有merit值次小的项的前面.其中f(n)是结点n的最大最小值.

5

s = LIVE

first(n) ≠ NIL

type(first(n)) = MAX

将插在OPEN队列最前面

6

s = LIVE

first(n) ≠ NIL

type(first(n)) = MIN

将n修改为first(n)

执行下列操作,直到n = NIL

1. 将插在OPEN队列最前面

2. 将n修改为next(n)

的状态空间操作Г

Stockman证明了SSS*算法在某种意义上比Alpha-Beta算法好:它绝不会比Alpha-Beta搜索更多的叶结点.当两个算法搜索同一个良序的博弈树时,它们搜索的叶结点相同,但是平均来看,SSS*算法搜搜的叶结点数比Alpha-Beta算法少.虽然如此,SSS*算法存在着一些问题阻碍了它的实用性:

1. 算法太过复杂,使人难以理解.

2. OPEN队列占用的空间太大,其大小随着博弈树深度的增加而指数增长.

3. 为了维护OPEN队列的有序性,其插入和删除操作花费的时间开销很大.

在基本SSS*算法的基础上,许多改进算法也提出来,例如MT-SSS*算法[10].并行的SSS*算法也被提出来,例如HYBRID算法[21],PARSSS*算法[22]等.这里不做介绍.

7.2ER算法及其并行化

ER(Evaluate-Refute)算法[23]的基本思想是:在评估完一些强制性的工作(mandatorywork)之后,尝试驳斥博弈树中的其他结点.在这一点上它与MWF算法的基本思想有点类似,但是两者又有本质的不同.

ER算法[24]将结点分为E结点(e-node)和R结点(r-node).E结点将会被完全地搜索,而R结点将会进行部分搜索,得到估值后尝试剪除,这个尝试剪枝的过程称为驳斥(refutation).E结点的所有子结点将会被搜索,而R结点只会进行较少的子结点的搜索,少到只有一个子结点被搜索.因此,E结点比R结点开销大(morecostly).

博弈树的每个内部结点只有一个子结点是E结点,称这个结点为该父结点的E子结点.选择任意一个子结点作为E子结点都是允许的,但是为了性能的优化,选择结点n的E子结点的方法如下: ER算法搜索结点的长孙结点们(elder grandchildren),将博弈值最大的长孙结点n''的父结点n'作为n的E子结点.其中,长孙结点即为n的子结点们各自的第一个子结点(eldest child).当得到了结点n的E结点n'之后,算法首先搜索n'的所有子结点(n''除外,因为它的博弈值已经得到了).n剩下的子结点则会按序进行驳斥(refute).

在ER算法的并行实现时,长孙结点可以被同时搜索,因为这些是强制性的工作.又由于这些长孙结点本身又是E结点,所以他们的长孙结点们又也可以递归地并行搜索.如果ER算法只在进行强制性的工作时并行完成,那么E结点的兄弟结点就需要串行地进行驳斥了.但是为了防止处理器的空闲,ER算法还引入了下面两个方法提高并行度:

1. 并行驳斥.当E子结点n的E子结点n'已经搜索完成时,那么n''的兄弟结点可以并行地进行驳斥.

2. 多个E子结点.当E子结点n的E子结点n'已经搜索完成时,在n的子结点中选择次佳的子结点作为n的第二个E子结点.如果n'被证明不是n的最佳子结点(即n的其他结点不能被立即驳斥),那么就用第二个E子结点对其他子结点进行剪枝.

从某种意义上说,ER算法比Alpha-Beta算法的搜索效率低,因为它可能会错过一些深的剪枝(deep cutoff).另一方面,在ER算法上使用迭代深入和最小窗口的方法的效果如何,还需要进一步的实验测试[12].

本文章欢迎转载,请保留原始博客链接http://blog.csdn.net/fsdev/article

--------------------

[1]    Valavan Manohararajah(2001). Parallel Alpha-Beta Search on SharedMemory Multiprocessors. Master’s thesis, Graduate Department of Electrical andComputer Engineering, University of Toronto, Canada.

[2]    A. Newell and H.A. Simon (1972). Human Problem Solving.Prentice-Hall, 1972.

[3]    Stuart Russell and Prter Norvig (1995). Artificial Intelligence, AModern Approach. Prentice-Hall, Egnlewood Cliffs, 1995.

[4]    Knuth, D.E. and Moore, R.W. (1975). An Analysis of Alpha-Beta Pruning.Artificial Intelligence, 6:293–326.

[5]    Hopp, Holger and Sanders, Peter (1995). Parallel Game Tree Search onSIMD Machines. IRREGULAR '95: Proceedings of the Second International Workshopon Parallel Algorithms for Irregularly Structured Problems. 349-361.

[6]    Marsland, T.A. and Campbell, M.S. (1982). Parallel Search ofStrongly Ordered Game Trees. ACM Computing Surveys, Vol. 14, No. 4, pp.533-551. ISSN 0360-0300.

[7]    Schaeffer J.(1989). The History Heuristic and Alpha-Beta SearchEnhancements in Practice. IEEE Transactions on Pattern Analysis and MachineIntelligence. Vol. PAMI-11, No.11, pp. 1203-1212.

[8]    Marsland, T.A. (1986). A Review of Game-Tree Pruning. ICCA Journal,Vol. 9, No. 1, pp. 3-19. ISSN 0920-234X.

[9]    Korf , R.E. (1985). Depth-first Iterative-deepening Search: AnOptimal Admissible Tree Search. Artificial Intelligence, 27(1), 97-109.

[10]    Aske Plaat, Jonathan Schaeffer,Wim Pijls, and Arie de Bruin(1995). Best-First and Depth-First Minimax Searchin Practice. In Proceedings of Computing Science in the Netherlands 1995,Utrecht, the Netherlands, November 27-28, 1995, pages 182-193.

[11]    Brockington, M. G. andSchaeffer, J. (1996). APHID Game-Tree Search. Presented at Advances in ComputerChess 8, Maastricht.

[12]    Brockington, M.G. (1996). ATaxonomy of Parallel Game-Tree Searching Algorithms. ICCA Journal, Vol. 19, No.3, pp. 162-174.

[13]    Baudet G. M.(1978). The Designand Analysis of Algorithms for Asynchronous Multiprocessors. Carnegie MellonUniversity, Pittsburgh, PA, Available as Tech. Rep. CMU-CS-78-116.

[14]    Akl, S.G., Barnard, D.T. andDoran, R.J.(1982). Design Analysis and Implementation of a Parallel Tree SearchAlgorithm. IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.PAMI-4, No.2, pp. 192-203.

[15]    Feldmann, R., Mysliwietz, P.and Monien. B (1993). Game Tree Search on a Massively Parallel System. InAdvances in Computer Chess 7, 1993. (The conference was held in June1993, butthe proceedings have not published as of August 1993.)

[16]    Kuszmaul, B.C. (1994).Synchronized MIMD Computing. Ph.D thesis, Massachusetts Institute ofTechnology, Cambridge MA.

[17]    NewBorn M.(1988). UnsynchronizedIteratively Deepening Parallel Alpha-Beta Search. IEEE Transactions on PatternAnalysis and Machine Intelligence, Vol. PAMI-10, No.5, pp. 687-694.

[18]    Weill, J-C. (1996). The ABDADADistributed Minimax-Search Algorithm. ICCA Journal, Vol.19, No.1, pp. 3-16.

[19]    Mark Brockington and JonathanSchaeffer(1996). The APHID Parallel Alpha-Beta Search Algorithm , Eighth IEEESymposium on Parallel and Distributed Processing, pp. 432-436.

[20]    Stockman, G. C. (1979). AMinimax Algorithm Better than Alpha-Beta? Artifcial Intelligence, Vol. 12, pp.179-196.

[21]    Aske Plaat, Jonathan Schaeffer,Wim Pijls, and Arie de Bruin (1994). SSS* = Alpha-Beta + TT. Technical Report94-17, Department of Computing Science, University of Alberta, December 1994.

[22]    Leifker, D. B. and Kanal, L.N.(1985). A Hybrid SSS*/Alpha-Beta Algorithm for Parallel Search of Game Trees.In Proceedings of IJCAI-85, pp. 1044-1046.

[23]    Subir Bhattacharya and A.Bagchi (1989).Searching game trees in parallel using SSS*. Proc IJCAI-89,International Joint Conf on Artificial Intelligence, Detroit, USA, Aug 1989, pp42-47.

[24]    Steinberg, I. R. and Solomon,M. (1990). Searching Game Trees in Parallel. In Proccedings of the 1990International Conference on Parallel Processing (vol.3), pp. 9-17, UniversityPark, PA. Penn. State University Press.

[25]    Jaleh Rezaie and RaphaelFinkel(1992). A comparison of some parallel game-tree search algorithms.Technical report, University of Kentucky, Department of Computer Science,Lexington, USA.

[26]    Karp, R. M. and Zhang, Yanjun.(1989). On Parallel Evaluation of Game Trees. In Proceedings of SPAA '89, pp.409-420, New York, NY. ACM Press.

[27]    Richard M. Karp , Yangun Zhang(1998). On parallel evaluation of game trees, Journal of the ACM (JACM), v.45n.6, p.1050-1075, Nov.

[28]    PKU JudgeOnline, Problem 1085,Triangle War. http://acm.pku.edu.cn/JudgeOnline/problem?id=1085.

用java编写博弈树_并行博弈树搜索算法-第7篇 另辟蹊径:其他的博弈树并行搜索算法...相关推荐

  1. java编写存钱_用Java编写一个简单的存款

    package desposit.money; public class DespositMoney { public static void main(String[] args) { Custom ...

  2. java 编写代码_如果您在2016年编写过Java代码-这是您不容错过的趋势

    java 编写代码 2016年最有趣的Java相关主题 关于代码,有很多热门话题,而要跟上所有事情,这是一项全职的工作. 如果您想知道如何从谷壳中分离出小麦,我们已经为您完成了工作. 在下面的文章中, ...

  3. java 编写代码_如果您在2015年编写过Java代码-这是您不容错过的趋势

    java 编写代码 去年我们有机会遇到的最有趣趋势的实用概述 在这篇文章中,我们回顾了构成我们2015年对话的5个主题和新发展.与其他许多年终总结保持较高水平的不同,我们将做一个更实际的操作不用流行语 ...

  4. java编写代理服务器_如何编写Java代理

    java编写代理服务器 对于vmlens (轻量级Java竞争条件捕获器),我们使用Java代理来跟踪字段访问. 这是我们学习的实现此类代理的经验教训. 开始 使用"静态公共静态无效值pre ...

  5. java编写正则表达式_如何用Java编写最快的表达式评估器之一

    java编写正则表达式 当然,标题有点吸引人,但确实如此(您当然不相信自己没有伪造自己的基准,但这是另一回事了). 因此,上周我正在寻找一个小型且可用的库来评估数学表达式. 我几乎直接偶然发现了这个s ...

  6. java编写管理系统_用java编写学生信息管理系统

    <用java编写学生信息管理系统>由会员分享,可在线阅读,更多相关<用java编写学生信息管理系统(7页珍藏版)>请在人人文库网上搜索. 1.用java编写学生信息管理系统im ...

  7. java中的基本小程序_12个用Java编写基础小程序经典案例(收藏篇)

    原标题:12个用Java编写基础小程序&经典案例(收藏篇) 如果是刚接触或者刚学习java,练习一些基础的算法还是必须的,可以提升思维和语法的使用. 1.输出两个int数中的最大值 impor ...

  8. 用java编写圆锥_求java大神帮忙 求大神帮助!Java

    导航:网站首页 > 求java大神帮忙 求大神帮助!Java 求java大神帮忙 求大神帮助!Java 相关问题: 匿名网友: 普通类 public class CircularA { //求圆 ...

  9. java编写机器人_用JAVA编写自己的机器人一起“厮杀”

    什么是Robocode? 最近我在阅读一个关于极限编程(XP)的邮件列表,有人提议为对学习更多的XP方法学知识感兴趣的开发人员构建一个工作间.这位作者还建议,把一群人凑到一起,分成小组研究该方法学. ...

最新文章

  1. 从公司发展看技术人才需求
  2. 采用CreateThread()创建多线程程序
  3. CodeForces - 916D Jamie and To-do List(主席树+模拟)
  4. Java简单验证码的识别
  5. 几种关系型数据库比较
  6. 你根本不懂数据仓库!对于80%的大公司数仓只是地基,它才是房子
  7. LINUX的文件按时间排序
  8. IDEA 2021 的 debug 是怎么实现?出于这个好奇心,我越挖越深。。。
  9. 数据铁笼-郑州Android项目ViewPager刷新问题
  10. 【C语言入门】四人火柴游戏
  11. html+css+支付宝页面,HTML+CSS+JS简单实现支付宝付款界面效果
  12. k-Nearest Neighbors(k近邻算法)
  13. 美国十大汽车销售网站
  14. CSS入门二、美化页面元素
  15. VBA代码学习for循环
  16. 1-SIM卡复位ATR解析
  17. firefox v46如何添加xpath checker组件
  18. 十款经典php网店系统
  19. 科技新品 | 军规级户外运动智能手表;本田赛车合作款金属计时表;富士影像数字印刷设备...
  20. ksweb如何安装php5.6_KSWEB - server + PHP + MySQL

热门文章

  1. 年轻不妥协 纽曼K1四核官方报价1099元
  2. 服务器和lamb架构
  3. element UI el-upload多张图 隐藏上传空间
  4. 网店刷收藏会不会被降权
  5. 用python将图片变为油画_Python OpenCV绘画完成 油画效果、水彩效果
  6. jai_imageio-1.1-alpha.jar
  7. Arcgis制图之晕线效果
  8. 《数据新闻大趋势》:数据新闻将成为主流?
  9. 如何更改pdf文件的默认打开程序?
  10. JAVA版海关179号对接流程