一种基于剪枝搜索的简单吃墩博弈求解方法技术

技术编号:21454905 阅读:37 留言:0更新日期:2019-06-26 05:05
本发明专利技术请求保护一种基于剪枝搜索的简单吃墩博弈求解方法,其特征在于,包括以下步骤:101、建立决策树:102、建立哈希表:103、数据预处理:104、建立策略图:105、搜索决策树;106、查找缓存值:主要通过对简单吃墩博弈的数学原理进行研究,建立可以精确求解的剪枝树,通过递推遍历给定范围内的所有低阶实例,建立哈希缓存表,再通过数据地预处理与数据结构地等价转换,准确地求出给定实例地最优解,并且时间效率较朴素的极大极小搜索有巨大提升。简单吃墩博弈是桥牌和塔罗牌等经典吃墩博弈的真子博弈,因此本发明专利技术能够帮助桥牌或塔罗牌玩家在博弈时更精确地分析策略,能够帮桥牌或塔罗牌的计算机智能程序降低搜索空间,从而提升它们的时间效率。

【技术实现步骤摘要】
一种基于剪枝搜索的简单吃墩博弈求解方法
本专利技术属于博弈论、计算机博弈、集合论、人工智能
,尤其通过数学推理构建精确决策树、哈希缓存、特征构建、模型设计、流程设计等。
技术介绍
计算机博弈(也称机器博弈)是人工智能领域最具挑战性的研究方向之一。牌类博弈是人类长期从事的智力活动,对其泛型的研究与认知不仅能提高人类的智力水平,而且对工业生产、经济活动以及其他科学技术的研究都具有很高的指导价值。计算机牌类博弈的发展总体不及棋类,因为牌类博弈基本是不完全信息的,在计算机拥有中等人工智能以前,对不完全信息的策略分析主要基于概率统计和深度学习,决策能力远不及人类。因此,普遍的思路是把牌类博弈的研究分为其完全信息子类与根据不完全信息对完全信息的预测两个部分,而前者的已有一定的进展。牌类博弈的典型是吃墩博弈,吃墩博弈的典型有合约桥牌(简称桥牌)与塔罗牌等,桥牌的完全信息子类又叫“双明手桥牌”。目前,计算机双明手桥牌的求解方法主要有哈希缓存、机器学习、深度学习以及它们的组合,它们有一个共同的缺陷:如果把特征维度推广,则多项式时间内只能求近似解。而推广后的求解是否存在多项式算法,目前既未证明也未反证。任何问题的研究都应该从简单到复杂,从特殊到一般。要研究双明收桥牌的求解问题,从吃墩博弈的最简形式着手是一条新的思路。所谓最简单的吃墩博弈(后续统称简单吃墩博弈),即是把偶数张不带花色仅有大小之分的卡牌随机分发给两名玩家,双方一攻一守是一回合,产生一敦牌,赢墩方继续攻牌,最后结算墩数。简单吃墩博弈因其具有吃墩博弈最简形式的特点,其任何规律对于其他吃墩博弈而言都是元子的,对其进行的任何研究都可以作为对它们的研究的拆分和组成部分。
技术实现思路
本专利技术旨在解决以上现有技术的问题。提出了一种能够帮助桥牌或塔罗牌玩家在博弈时更精确地分析策略,能够帮桥牌或塔罗牌的计算机智能程序降低搜索空间,从而提升它们的时间效率的基于剪枝搜索的简单吃墩博弈求解方法。本专利技术的技术方案如下:一种基于剪枝搜索的简单吃墩博弈求解方法,其包括以下步骤:101、建立决策树:根据博弈理论,建立用于剪枝搜索精确最优解的决策树,包括:进攻分枝树、防守分枝树;进攻分枝树用于进攻方快速选择进攻策略,防守分枝树用于防守方根据进攻方的进攻策略快速回应防守策略;102、建立哈希表:建立哈希表,遍历给定范围内的阶数的所有博弈实例,求出每个实例的最优解,并以每个实例的输入为键、输出为值写入哈希表;103、数据预处理:根据输入的博弈实例,对实例的数据结构进行初步建模;104、建立策略图:根据内部策略连续性特征,对实例的数据结构进行再次包括策略排序、连续策略组合成结点、双方相邻策略结点连成边加工,建立与原始结构一一对应的有向图;105、搜索决策树、根据101所建立的决策树模型,对当前实例的策略进行决策搜索;106、查找缓存值:根据102所建立的哈希缓存表,当搜索进行到阶数低于缓存边界时,在缓存中查找局部博弈的最优解。进一步的,所述步骤101建立决策树,包括:进攻分枝树、防守分枝树,具体包括:进攻分枝树:在进行105搜索决策树且遍历到第n、n+1个进攻策略时,若采用CCn+1所造成的条件最优分数与采用CCn所造成的条件最优分数不同,则停止搜索,并返回两者中较大的一个作为最优分数:THENreturnmax(otd(CC1),otd(CC2))ELSEcontinue防守分枝树:当进攻方采用非最高价值策略时,回应“刚吃”策略,即采用价值大于进攻策略的防守策略中的最低价值策略;当进攻方采用最高价值策略且防守方拥有双方最低价值策略时,回应“垫让”策略,即采用该最低价值策略;其余情况需遍历所有防守策略:IFCCa<a.maxTHENCCb=g.next(CCa)ELSEIFb.min==g.minTHENCCb=b.minELSECCb=search(b)进一步的,所述步骤102建立哈希表,具体包括:构建N阶及以下阶数博弈的哈希缓存表:遍历n=1..N,采用排列组合算法逐个生成阶数为n的博弈实例,对每个实例采用搜索决策树进行求解,求解时只需搜索第一层树即可,搜索到第二层时阶数变为n-1,由于n-1阶及以下阶数的解已缓存,故直接进行查找缓存值,在生成哈希表的同时对每个阶数的最优解进行统计,按照最优解进行分组,得到相同最优解个数分布表及曲线图,该表和图可用于人类选手在博弈时进行对手牌实力的直观估计。进一步的,所述步骤103数据预处理,根据输入的博弈实例,对实例的数据结构进行初步建模,具体为:(1)定义:一类博弈称为简单吃墩博弈,记为STTG,满足:任取g属于STTG,g的参与者集合P的基数|P|=2,g具有属性集首攻守方{a,b}=P,g具有属性阶数o,任取pi属于P,pi具有属性卡牌集C包含于自然数集N,|C|=o,a.C与b.C之交=空集,令他们的并集为={1,2,…,o};(2)对具体的博弈实例,将其数据按照(1)定义所述模型建立对应的数据结构。进一步的,所述步骤104建立策略图:根据内部策略连续性特征,对实例的数据结构进行再次加工,建立与原始结构一一对应的有向图,具体包括:(1)定义:任取g属于STTG,称a.C的子集CC是a的一个连续区间:任取卡牌c属于b.C均有c<min(CC)或c>max(CC),任取ca属于a.C-CC均存在cb属于b.C使得ca<cb<min(CC)或max(CC)<cb<ca;同理可定义b的连续区间;显然,对于a,存在唯一的连续区间序列a.CCL={CCi}1..n使得a.C=CCi之并,同理存在b.CCL;(2)定义:任取g属于STTG,存在唯一的连续区间序列g.CCL=a.CCL与b.CCL之交,任取CCi,CCi+1属于g.CCL均有max(CCi)<min(CCi+1);以连续区间为节点,由路径g.CCL、a.CCL、b.CCL之并构成的有向图称为g的策略图,记为SGR;(3)定义:任取g属于STTG,g的两个参与者pi按极大极小最优策略进行博弈,最终所得墩数称为双方的最优墩数,记为t;墩数差a.t-b.t称为g的最优墩数差,记为otd;当首攻策略CC给定时,首守方采用极大极小最优策略,最终的最优墩数和墩数差记为t(CC)和otd(CC);(4)定义:任取g属于STTG,当a进攻时,a打出属于连续区间CC的某张卡牌,剩余的攻防均采用极大极小最优策略,则记g的最终墩数差为td(CC);当a的进攻策略为CCa轮到B防守时,b打出属于连续区间CCb的某张卡牌,剩余的攻防均采用极大极小最优策略,则记g的最终墩数差为td(CCa,CCb);(5)定义:任取g属于STTG,a进攻时的所有极大极小最优策略所属的连续区间构成的集合称为a的最优进攻策略集,记为OA,即任取CC属于OA,均有td(CC)=otd;当g.a进攻时打出某连续区间CCa中的牌,b防守时的所有极大极小最优策略所属的连续区间构成的集合称为b的最优防守策略集,记为OD(CCa),即任取CCb属于OD(CCa),均有td(CCa,CCb)=otd(CCa);对具体的博弈实例,将其预处理数据结构按照(1-2)所述模型建立策略图,并按照(3-5)所述本文档来自技高网
...

【技术保护点】
1.一种基于剪枝搜索的简单吃墩博弈求解方法,其特征在于,包括以下步骤:101、建立决策树:根据博弈理论,建立用于剪枝搜索精确最优解的决策树,包括:进攻分枝树、防守分枝树;进攻分枝树用于进攻方快速选择进攻策略,防守分枝树用于防守方根据进攻方的进攻策略快速回应防守策略;102、建立哈希表:建立哈希表,遍历给定范围内的阶数的所有博弈实例,求出每个实例的最优解,并以每个实例的输入为键、输出为值写入哈希表;103、数据预处理:根据输入的博弈实例,对实例的数据结构进行初步建模;104、建立策略图:根据内部策略连续性特征,对实例的数据结构进行再次包括策略排序、连续策略组合成结点、双方相邻策略结点连成边加工,建立与原始结构一一对应的有向图,;105、搜索决策树、根据101所建立的决策树模型,对当前实例的策略进行决策搜索;106、查找缓存值:根据102所建立的哈希缓存表,当搜索进行到阶数低于缓存边界时,在缓存中查找局部博弈的最优解。

【技术特征摘要】
1.一种基于剪枝搜索的简单吃墩博弈求解方法,其特征在于,包括以下步骤:101、建立决策树:根据博弈理论,建立用于剪枝搜索精确最优解的决策树,包括:进攻分枝树、防守分枝树;进攻分枝树用于进攻方快速选择进攻策略,防守分枝树用于防守方根据进攻方的进攻策略快速回应防守策略;102、建立哈希表:建立哈希表,遍历给定范围内的阶数的所有博弈实例,求出每个实例的最优解,并以每个实例的输入为键、输出为值写入哈希表;103、数据预处理:根据输入的博弈实例,对实例的数据结构进行初步建模;104、建立策略图:根据内部策略连续性特征,对实例的数据结构进行再次包括策略排序、连续策略组合成结点、双方相邻策略结点连成边加工,建立与原始结构一一对应的有向图,;105、搜索决策树、根据101所建立的决策树模型,对当前实例的策略进行决策搜索;106、查找缓存值:根据102所建立的哈希缓存表,当搜索进行到阶数低于缓存边界时,在缓存中查找局部博弈的最优解。2.根据权利要求1所述的一种基于剪枝搜索的简单吃墩博弈求解方法,其特征在于,所述步骤101建立决策树,包括:进攻分枝树、防守分枝树,具体包括:进攻分枝树:在进行105搜索决策树且遍历到第n、n+1个进攻策略时,若采用CCn+1所造成的条件最优分数与采用CCn所造成的条件最优分数不同,则停止搜索,并返回两者中较大的一个作为最优分数:THENreturnmax(otd(CC1),otd(CC2))ELSEcontinue防守分枝树:当进攻方采用非最高价值策略时,回应“刚吃”策略,即采用价值大于进攻策略的防守策略中的最低价值策略;当进攻方采用最高价值策略且防守方拥有双方最低价值策略时,回应“垫让”策略,即采用该最低价值策略;其余情况需遍历所有防守策略:IFCCa<a.maxTHENCCb=g.next(CCa)ELSEIFb.min==g.minTHENCCb=b.minELSECCb=search(b)。3.根据权利要求1所述的一种基于剪枝搜索的简单吃墩博弈求解方法,其特征在于,所述步骤102建立哈希表,具体包括:构建N阶及以下阶数博弈的哈希缓存表:遍历n=1..N,采用排列组合算法逐个生成阶数为n的博弈实例,对每个实例采用搜索决策树进行求解,求解时只需搜索第一层树即可,搜索到第二层时阶数变为n-1,由于n-1阶及以下阶数的解已缓存,故直接进行查找缓存值,在生成哈希表的同时对每个阶数的最优解进行统计,按照最优解进行分组,得到相同最优解个数分布表及曲线图,该表和图可用于人类选手在博弈时进行对手牌实力的直观估计。4.根据权利要求1所述的一种基于剪枝搜索的简单吃墩博弈求解方法,其特征在于,所述步骤103数据预处理,根据输入的博弈实例,对实例的数据结构进行初步建模,具体为:(1)定义:一类博弈称为简单吃墩博弈,记为STTG,满足:任取g属于STTG,g的参与者集合P的基数|P|=2,g具有属性集首攻守方{a,b}=P,g具有属性阶数o,任取pi属于P,pi具有属性卡牌集C包含于自然数集N,|C|=o,a.C与b.C之交=空集,令他们的并集为={1,2,…,o};(2)对具体的博弈实例,将其数据按照(1)定义所述模型建立对应的数据结构。5.根据权利要求1所述的一种基于剪枝搜索的简单吃墩博弈求解方法,其特征在于,所述步骤104建立策略图:根据内部策略连续性特征,对实例的数据结构进行再次加工,建立与原始结构一一对应的有向图,具体包括:(1)定...

【专利技术属性】
技术研发人员:王进罗俊逸孙开伟邓欣陈乔松
申请(专利权)人:重庆邮电大学
类型:发明
国别省市:重庆,50

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1