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

来源:互联网 发布:api接口怎么用java 编辑:程序博客网 时间:2024/04/29 10:14

在Alpha-Beta算法的并行化的过程中,一个较为困难的问题是判断从哪里开始并行搜索,因为一个分支的搜索可能会发现并行进行的另一个搜索完全可以避免.正因为如此,Alpha-Beta算法是一个很难并行的算法.

虽然仿真可能预计出设计的Alpha-Beta并行算法具有非常好的性能,但是很多仿真都是基于一些不现实的假设的基础上.在实际的实现中,以下的因素经常会导致Alpha-Beta并行算法的并行效率低下[11]:

1. 同步开销(Synchronization Overhead).如果算法中存在过多的同步点(synchronization point),那么处理器很多时候会处于空闲(idle)状态.

2. 通信开销(Communication Overhead).进程(process)之间需要互通信息,通信开销的影响程度取决于通信频率和通信延时(communication latency).

3. 搜索开销(Search Overhead).一个处理器完成的工作也许对另外一个处理器的搜索有利,如果这些信息不能很好地共享,会增加很多不必要的搜索.

这些开销并不相互独立,例如,增加通信会导致通信开销的增加,但是有可能减少搜索开销,再如,减少同步点能减少同步开销,但是可能会增加搜索开销.

在对Alpha-Beta算法进行并行化的时候,不仅要尽量利用算法的并行性,又要尽量减少上述的几种开销.基于不同的基本思想,很多的并行Alpha-Beta算法被先后提出来.对这些算法可以按照各种不同的标准进行分类和分析,例如[12]:

1. 按照处理器体系结构(processor hierarchy)分类.按照处理器树(processor tree)的可变性(rigidity)分为静态(static)和动态(dynamic),静态处理器树:一个或者多个处理器作为主处理器(master),其他处理器作为从处理器(salve).主处理器控制从处理器,这个结构在博弈树的搜索过程中都是固定的.动态处理器树则随着处理器的空闲和忙碌情况的变化而变化.

2. 按照控制分布(control distribution)分类.如果算法的进行由少部分主处理器控制,则称它为集中式的(centralized),如果算法的进行是由所有处理器控制,则称它为分布式(distributed)的.

3. 按照可发生并行的结点类型分类.在[4]的中将结点分成三类:type1,type 2,type 3.在次基础上,将type 2的结点分成两种:当在搜索完一个type 2的结点的子树之后,如果没有办法将它被剪枝,那么就将它称为bad type 2结点,否则称为good type 2结点.经过这样的分类,就可以列出一个算法可能并行搜索的结点.

4. 按照同步结点的种类分类.一些算法在搜索一个结点时,需要等待该结点的前几个子结点返回估值后才能并行搜索其他的子结点,这使得算法的并行性受到约束.按照上述结点分类,可以列出算法需要进行这种同步的结点的种类.

按照上述各种标准,可以对各算法进行定性的分析,但是如果脱离了算法的具体实现来对比算法性能,难以得到可靠的分析结果.这些具体实现中,一些需要考虑重要的因素包括:

1. 底层硬件(underlying hardware).算法的具体实现可能使用各种不同的底层硬件,一些实现中甚至使用软件实现的硬件仿真器来验证算法.

2. 博弈树的种类.常见的博弈树有国际象棋树(chess tree),黑白棋树(Othello tree),西洋跳棋树(checkerstree),和人工树.若博弈树不是由游戏的博弈程序产生的,则称这个博弈树为人工树(artifcialtrees).

3. 并行算法基于何种串行算法.很多串行算法进在Alpha-Beta算法的基础上进行了改进,并行算法基于的串行算法对最后的性能也有影响.

4. 转移表的实现方法.转移表中的信息共享效率对于并行算法的性能有着非常关键的影响.转移表的两种主要实现方法是分布式消息传递(distributedmessage-passing)和共享内存(shared-memory).共享内存的转移表的实现往往需要特殊的硬件支持,但是一般来说,它比基于消息传递的分布式转移表速度快.也有一些算法中处理器维护本地转移表(localtransposition tables),而不共享信息.


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

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

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

 [11]    Brockington, M. G. and Schaeffer, J. (1996). APHID Game-Tree Search.Presented at Advances in Computer Chess 8, Maastricht.

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