精品alphabeta剪枝算法在黑白棋应用中的优化.docx

上传人:b****6 文档编号:7143374 上传时间:2023-01-21 格式:DOCX 页数:7 大小:91.46KB
下载 相关 举报
精品alphabeta剪枝算法在黑白棋应用中的优化.docx_第1页
第1页 / 共7页
精品alphabeta剪枝算法在黑白棋应用中的优化.docx_第2页
第2页 / 共7页
精品alphabeta剪枝算法在黑白棋应用中的优化.docx_第3页
第3页 / 共7页
精品alphabeta剪枝算法在黑白棋应用中的优化.docx_第4页
第4页 / 共7页
精品alphabeta剪枝算法在黑白棋应用中的优化.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

精品alphabeta剪枝算法在黑白棋应用中的优化.docx

《精品alphabeta剪枝算法在黑白棋应用中的优化.docx》由会员分享,可在线阅读,更多相关《精品alphabeta剪枝算法在黑白棋应用中的优化.docx(7页珍藏版)》请在冰豆网上搜索。

精品alphabeta剪枝算法在黑白棋应用中的优化.docx

精品alphabeta剪枝算法在黑白棋应用中的优化

 

alpha-beta剪枝算法在黑白棋应用中的优化

alpha-beta剪枝算法在黑白棋应用中的优化

摘 要:

alpha-beta剪枝算法是一种传统的搜索算法,它在博弈算法中有着非常广泛的运用,它大大减少了相同搜索深度下的计算量,但其仍然不能满足有限时间内进行搜索的需求。

为此,有很多针对该算法的优化方法,但这些优化方法大都是以消耗更多空间为代价的。

本文以黑白棋为例,从全局考虑,提出几种优化策略,以较少的计算量,获得较高智能性。

经过实验测试,在PC机中对相同的搜索层次,发现优化方法的算法可以较大幅度地提高效率.

 

关键词:

alpha-beta剪枝算法,人工智能,黑白棋,算法优化

Abstract:

alpha-betaalgorithmisakindoftypicalmethodforoptimizingadversarialsearch,whichisusedwidelyingameplayingalgorithmforitreducesthecomputationamountobviouslyinthesamesearchdepth,butitstilldoesnotmeettherequirementofsearchinginalimitedtime.So,therearemanyenhancementsonitsoptimization,butmostofthoseenhancementsconsumemorespace.Thispapertakesblackandwhitechessforexample,presentssomestrategiesofenhancementfromaglobalangle,andthosemethodscoulduselesscomputationamountandgetmoreintelligenceatthesametime.TheexperimentinPCshowsthattheoptimizedalgorithmcouldimproveefficiencyatahighextentcomparedtothenon-optimizedalgorithmatthesamecondition.

Keywords:

alpha-betapruningalgorithm;artificialintelligence;searchingtechnique;algorithmoptimize

引 言

目前,已经有很多对alpha-beta算法的优化,提高了搜索的性能,其中有一些已经被广泛证实是有效的算法,它们主要包括以下几种:

置换表(transpositiontables)、驳斥表(refutationtables)、窄窗搜索(aspirationsearch)和最小窗口搜索(minimalwindow)、启发式搜索(heuristic),它们的主要思想在这里就不再赘述。

本文提出了新的优化算法.

 

 

1博弈程序各部分性能分析

本文讨论的博弈程序主要是指确定的、二人、零和、完备信息的博弈搜索。

也就是说,没有随机因素的博弈在两个人之间进行,在任何一个时刻,一方失去的利益即为另一方得到的利益,不会出现“双赢”的局面,而且在任何时刻,博弈的双方都明确的知道每一个棋子是否存在和存在于哪里。

博弈程序就是产生一个对自己最有利的走步,主要产生过程就是,博弈程序根据当前棋盘上的局面,获得所有自己能够行进的所有走步,然后对每一种走步进行试探。

所谓试探就是如果博弈程序采用该走步,那么对手有可能会产生哪个走步,此时博弈程序会获得对方所有可能会出现的走步,再对对方的每一种可能的走步进行试探,如此反复,当达到指定的层次时,停止试探,并对局面进行评估,博弈程序选择对自己最有利或者选择对自己损害最小的那个走步,于是产生一个试探的路径,这个路径的第一步就是当前局面下最有利的一步。

从前面的博弈程序搜索过程可以看出,程序可以分成

4个模块:

(1)当前局面下,所有可走步的产生(Generate);

(2)对当前局面进行评估(Evaluate);

(3)产生新的局面(Forward);

(4)恢复前一个局面(Backward);

 

博弈程序消耗的时间与搜索的层数紧密相关,更准确地说,时间是与搜索的节点(局面)数紧密相关。

对于一般的最大最小搜索,即使每一步只有很少的走法,搜索位置的数目也会随着搜索深度的增加呈指数级增长。

如下图所示,一种简单的游戏树,每层更多的节点(局面)意味着将要在更多的局面下调用可走步产生模块;将要对更多的局面进行局面评估;将要调用更多的局面产生模块和恢复局面模块。

在大多数的棋形中,每步平均有十种下法,假设电脑搜索九步(程序术语称为搜索深度为九),就要搜索十亿个位置(十的九次方),这样极大地限制了电脑的棋力,我们总不能忍受电脑棋手一年才下一步棋。

因此降低博弈程序的时间就是尽可能地缩减搜索的节点数,而不能单一地减少某个模块消耗的时间,各模块的时间消耗都是依赖节点数的,即单一模块的性能提高与节点数的减少相比是微不足道的。

那么提高博弈程序性能的关键就是减少搜索的节点数。

减少搜索结点的最简单的方法是减小搜索深度,但这大大影响了电脑棋手的棋力.alpha-beta剪枝大大减少了检测的数目,提高电脑搜索的速度.很多棋类程序都采用了这种算法。

2.新的优化算法

alpha-beta剪枝大大减少了相同搜索深度下的计算量,但其仍然不能满足有限时间内进行搜索的需求。

因此就有必要对其再进行优化.我提出三种可能的优化方案.

一.对当前层的所有局面进行评估,而不是等到递归到最深层时才进行局面评估,然后删去对自己最不利的N个走步。

这就要求对可能的走步进行排序,这种思路基于如下的经验判断:

智者不会选择当前局面较差的走步,因为如果当前局面选择较差的走步,那么在更深一层能够进行弥补的概率几乎为零。

如果N取1,那么可以想象没有哪个智者会选择当前局面下最差的一步,这是合理的,也由此可以适当扩大N的取值,减少搜索的节点数。

搜索层数与搜索节点数上面的方法基于经验的成分大一些,理论性不十分可靠.

二.依靠估值函数对局面进行评估,确实存在不精确的问题,而且博弈游戏的规则千差万别很难找到一种很通用的估值方法,另外对局面的评估在一定程度上受博弈程序设计者主观的影响。

尽管如此,还是可以在局面评估之前,也就是在产生当前局面所有可走步的时候,理性选择或分好的走步和差的走步,这与上一种方法的估值不同,它是在可走步产生模块加入一些智能的分析,从而获得较少的节点,达到较少搜索节点的目的。

三.采用知识数据库减少搜索节点数,这要求设计的程序具有存储棋局信息和学习的能力.计算机在与人对弈时将有用的棋局信息进行存储,并挖掘出好的对弈策略,并在以后的对弈过程中运用这些策略,这能有效地减少搜索节点数,随着知识数据库的丰富计算机的棋力会得到提高.

以上三种方案不是孤立的,对于方案三能够很好地为方案一,二提供服务,如面对一种棋局时,计算机运用已有知识数据库能够对当前的局面进行较为智能的评估,而不是机械地采用固定的评估方式,快速删除对自己不利的走步从而达到减少搜索节点数的目的.

 

3实验设计

以黑白棋为博弈程序的实例,测试和比较两种优化方法。

选择黑白棋作为实例,主要基于以下几个原因:

(1)中国黑白棋的规则简单,使得估值函数受主观的影响较小,便于更客观地比较各种优化算法的性能,排除了一些主观因素。

(2黑白棋的棋子走法简单,便于测试和比较对可走步产生模块的优化方法。

(3)黑白棋的获胜规则简单,便于比较在保持相同智能性前提下,各种优化算法的性能

本实验所运行的环境:

硬件环境:

CPUIntelCore2DuoT75002.2G,RAM2G。

软件环境:

WindowsXPSP2,VisualStudio2008。

两种优化算法中的第一种算法直接删除最差的N个走步,需要对当前局面进行排序;第二种算法采用了与第一种算法不同的可走步生成函数,主要不同点是前者优化了可走步产生模块.把第一种算法命名为排序化算法,把第二种算法命名为智能产生算法,智能条件为:

边角判断,线判断,在实验中将两种优化算法都应用于优化程序中,为了保证测试有更好地对比性,在实验过程中尽可能以相同的方式同计算机进行对弈.

4 实验结果

未优化程序和优化程序都将执行的结果信息写进文本文中,数据如下

分析上述数据可以得出:

对于优化过的程序,每步棋的搜索次数有4%-7%的减少,搜索时间也有4%-8%的减少,但对于序号为2的那条数据有点特殊(优化程序的搜索时间反而更长),这是由于现在的操作系统为多任务式的,程序执行是由操作系统调度的,有可能在优化程序执行时系统处于繁忙时刻,导致搜索时间更长,但搜索次数还是更少,这符合事实.

5 总结

两种新的博弈程序算法是对标准alpha-beta算法的优化,从实验数据看优化算法获得良好的效果,这主要是由于在每层都减少了搜索的节点数,程序实现了两种解决方案,对于第三种还在研究中,这个具有一定的难度,但相信方案三如果能够实现将会更大程度地提高程序的性能和智能度.

 

参考文献

[1] SCHAEFFERJ.TheHistoryHeuristicandAlpha-BetaSearchEnhancementsinPractice[J].IEEETransactionsonpattern

analysisandmachineintelligence,11(11).

[2] GILLOGLYJ.Performanceanalysisofthetechnologychess

program[D].Pittsburgh:

Carnegie-MellonUniv.,1978.

[3] PLAATA,SCHAEFFERJ,PIJLSW,etal.SSS*=-β+TT[R].Canada:

TechnicalReportTR-CS-94-17,DepartmentofComputerScience,

UniversityofAlberta,Edmonton,AB,1994.

[4]王小春.PC游戏编程(人机博弈)[M].重庆大学出版社,2002.

[5]蔡自兴徐光祜人工智能及其应用[M].清华大学出版社,2004

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1