郑州做网站企起宁波建设协会网站首页

diannao/2025/10/18 20:01:13/文章来源:
郑州做网站企起,宁波建设协会网站首页,wordpress二维码分享,海外网三农频道文章目录 引子定义实现讨论与尾记 引子 置换表是记忆化搜索技术的应用#xff0c;置换表保存了某一盘面的搜索结果。当博弈树搜索遇到相同的局面时可以调用这些信息来减少重复搜索。那么如何设计一个置换表的节点就显得比较重要#xff0c;本文在经典的置换表节点增加一个显… 文章目录 引子定义实现讨论与尾记 引子 置换表是记忆化搜索技术的应用置换表保存了某一盘面的搜索结果。当博弈树搜索遇到相同的局面时可以调用这些信息来减少重复搜索。那么如何设计一个置换表的节点就显得比较重要本文在经典的置换表节点增加一个显示当前玩家的字段这一字段补足了zobrist hash单向函数的缺点如果节点需要使用更浅深度的信息可以通过迭代的方式来求解丰富了置换表的信息。 定义 置换表中包换了搜索状态的散列值剪枝信息PV信息以及用于迭代获取浅层深度的玩家信息。 //EXACT 表示记录中存储的分数是一个精确的估值分数。 //hashfBETA 表示记录中存储的分数是一个下界lower bound。这意味着在搜索中发现了一个分数它至少是某一分支的分数下限可能更高。 //hashfALPHA 表示记录中存储的分数是一个上界upper bound。这意味着在搜索中发现了一个分数它至多是某一分支的分数上限可能更低。 struct NABtransportTableNode {quint64 key;int value;quint8 depth;quint8 flags;MPoint bestMove;MPlayerType lastPlayer; //当前hash状态下最后一个落子类型NABtransportTableNode() : key(InitialZobristHash), value(0), depth(InitialDepth), flags(hashfEmpty),bestMove(InvalidMPoint), lastPlayer(PLAYER_NONE){} };实现 置换表需要实现三个最主要的功能获取添加清除。根据获取信息的需求不同给出三个函数getNABTranspositionTable用于获取并修改搜索中的剪枝信息getPVNABTranspositionTable更关注获取某一指定盘面下的搜索结果getBestMoveNABTranspositionTable更暴力我只需要当前状下最佳着法即可。 //置换表[用于负极大搜索对于其他搜索方式需要修改未做测试]bool getNABTranspositionTable(int score, int depth, int alpha, int beta) const;bool getPVNABTranspositionTable(intscore, MPoint bestMove, int depth, const quint64 curhash) const;bool getBestMoveNABTranspositionTable(MPoint bestMove) const;void appendNABTranspositionTable(int depth, int val, int hashf, MPoint bestMove, MPlayerType lastPlayer);void clearNABTranspositionTable(quint8 minCutDepth InitialDepth);这里只给出置换表中使用最多的获取节点剪枝信息到置换表中实现。追加表项的方法和清除置换表的方法相对简单可以移步源代码一观。 //置换表 /*不用标记玩家或者交换上下界:因为评估是根据当前层的玩家决定的无论是否交换手 该层玩家始终没有变化区别只不过是Max还是Min玩家罢了*/ bool ZobristHash::getNABTranspositionTable(int score, int depth, int alpha, int beta) const {if(!globalParam::utilGameSetting.IsOpenTranspositionTable) return false;QReadLocker locker(globalParam::transportTableLock);NABtransportTableNode *hashNode globalParam::transportTable[m_hash globalParam::transportTableSizeMask];if (hashNode-key m_hash) {//因为不同棋子数目的棋盘分数没有可比性if(hashNode-depth depth) return false;int storedScore(-INT_MAX);if(hashNode-depth depth){storedScore hashNode-value;}else{MPoint nextMove hashNode-bestMove;MPlayerType nextPlayer UtilReservePlayer(hashNode-lastPlayer);if(nextMove InvalidMPoint || nextPlayer PLAYER_NONE) return false;quint64 nextHash generateHash(m_hash, nextMove, PLAYER_NONE, nextPlayer);for (int curDepth 1; curDepth depth; curDepth) {NABtransportTableNode *nextHashNode globalParam::transportTable[nextHash globalParam::transportTableSizeMask];if (nextHashNode-key nextHash) {nextMove nextHashNode-bestMove;nextPlayer UtilReservePlayer(nextPlayer);nextHash generateHash(nextHash, nextMove, PLAYER_NONE, nextPlayer);}}if(getLeafTable(globalParam::AIPlayer, storedScore, nextHash)){if(nextPlayer ! globalParam::AIPlayer) storedScore * -1;}}if(hashNode-flags hashfExact) {//精确值score storedScore;return true;}else if((hashNode-flags hashfLowerBound) score alpha) alpha score;//更新alphaelse if ((hashNode-flags hashfUperBound) score beta) beta score;//更新betaif(alpha beta){//剪枝score hashNode-value;return true;}}return false; }这里实现区别于网上经典的实现方法一般而言置换表中某一节点的深度越深得到的信息越可靠。然而在五子棋中并不能一概而论深度越深着法越可靠但是得分就不可靠了。深度不同叶子棋盘的落子数必然不同在得分没有归一化的情况下盲目使用是非常不安全的。基于这点发现实现是通过迭代寻找指定深度然后通过查找叶子表来求解分数这样避免了子数不一致进行尴尬局面。 这种实现方式也可以认为是一种时间换空间策略如果保存某一盘面的所有深度下搜索信息置换表将成倍数递增增加了程序的内存负担。 讨论与尾记 通过对极大极小的讨论我们可以知道一点剪枝算法是安全可靠的无论剪枝与否PV路径始终是可以被搜索出来然而置换表的引入虽加快了搜索但搜索的不稳定性问题便会凸显出来。在对弈基本技术-置换表篇中指出 当你用置换表时如果你允许搜索过程根据散列项来截断那就会产生另一个问题你的搜索会受“不稳定性”的捆扰。   不稳定性至少是由以下因素引起的   1. 你可能在做6层的搜索但是如果你在散列项中得到10层搜索的结果就可能根据这个值来截断。在后来的搜索中这个散列项被覆盖了因此你在这个结点上得到了两个不同的值。   2. Zobrist键值无法记录到达结点的线路这个结点上不是每条线路都有相同结果的。如果某条线路遇到重复局面那么散列项的值就会跟路线有关。因为重复局面会导致和局的分值或者至少不一样的分值。 还有一个原因已经在搜索篇章点出评分视角的不同评分会有差异如果直接使用这些信息截断极有可能将PV路径拒之门外。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站根目录在哪里苏州专业高端网站建设机构

第一步:安装虚拟机 1、安装 vagrant 本机是 mac, 但是这一步不影响,找对应操作系统的安装方式就行了。 vagrant 下载地址 brew install vagrant 2、下载 VirtualBox 虚拟机 VirtualBox 下载地址 找到对应系统下载,安装就可以。 尽量把…

怎样在门户网站做 推广wordpress文章显示不全

「在 JavaScript 中用 var, let, 以及 const 有什么差别?」是在前端、JavaScript 面试中常见的考题。在面试时可以先大方向地列点说出异同之处,然后再针对每一个点进行深入说明。以下是以第一人称撰写的参考拟答。 var, let, 以及 const 都是在 JavaScript 用来做变数宣告的…

用户等待网站速度重庆平台网站建设

与其说计算机改变了世界,不如说是计算机网络改变了世界。作为计算机网络通信实体之间的语言,网络通信协议对计算机正常通信起着极大的作用。 那么到底什么是网络协议与管理呢?今天给大家分享一份211页网络协议与管理文档,包含概念…

2021年建站赚钱俄罗斯做电商网站

基本思想 将原始图像的直方图分布转换为一个均匀分布的直方图,这样原图中的高频率亮度值会被展宽,而低频率亮度值则被压缩,从而达到增强图像对比度的效果。 计算过程 假设我们有一个灰度图像,其像素值范围从0到L-1(…

网站美工建设软件绥芬河市建设局网站

科目编号:1358 座位号 2018-2019学年度第一学期期末考试 民族理论与民族政策 试题 2019年 1月 填空题(每空2分,共16分) 1.我国现有的五个自治区为:内蒙古自治区、新疆维吾尔族自治区、广西壮族自治区、、。 2.______…

网页设计网站布局分析设计在线观看2014

RHEL5中实现各种服务的准备条件:(一)、制作YUM本地源:YUM简介:YUM是Yellow dog Updater Modified的简称,yum是软件的仓库,它可以是http或ftp站点,也可以是本地软件池,但必须包含rpm的header&…

眉山市住房城乡建设局 网站wordpress 教学培训

前面基于Xamarin做了一点效果;这不过年从老家回来一直成沉迷工作无法自拔,没时间来更新文章了;今天赶紧抽点时间再来更新一下效果;直接看看最终实现的效果:前台RadioButton的事件绑定选中状态绑定:后台对ScrollView的滚动处理:ScrollView的滚动对当前选中状态的修改&#xff1a…

成都网站建设cdsqywlwordpress 不显示文章图片

首先我们的目标是让 s[i][j]表示为其左方和上方形成的矩阵所有元素的和 加上s[i-1][j]和s[i][j-1]后 s[i-1][j-1]部分重复了所以减去 最后加上a[i][j]即可完成目标 s[i][j]s[i-1][j]s[i][j-1]-s[i-1][j-1]a[i][j]; 然后看题目要求 要求x1,y1,x2,y2围成的小正方形内的元素和…

制作购物网站企业网站开发培训

文章目录一、网络营销概述网络营销特点4Ps营销理论4Cs营销理论二、病毒营销特点传播方式(病毒载体)三、论坛营销优势技巧四、博客营销形式步骤五、微博营销六、微信营销优势七、软文营销软文营销的五种形式八、邮件营销效果评价一、网络营销概述 网络营…

单位网站 单位网页 区别洛卡博网站谁做的

后端项目中在登陆页面使用jsp,后端项目会通过接口返回给前端几个js的路径,这几个js呢,是由后端先构建好,然后返回给前端路径的,前端通过这个路径访问js执行。。。 总之,很奇怪的项目。。 1、首先要安装no…

建筑学院网站中卫网站制作公司报价

怀揣着为中小企业量身定做一整套开源软件解决方案的梦想开始了一个网站的搭建。http://osssme.org/ iDempiere OSGi ADempiere 一款ERP&CRM&SCM系统、助力中小企业发展 一句话概括iDempiere是一款基于Compiere/ADempiere的​开源企业级ERP&CRM&SCM系统​&…

简约网站版式云主机如何建网站

1:访问https://github.com/alibaba/nacos/releases下载nacos 2:下载到本地解压 3:点击startup.cmd 启动nacos 4:访问 http://127.0.0.1:8848/nacos 输入账号和密码,nacos/nacos

太原seo网站排名优化网站建设公司宣传标语

一、选题背景 数字电子技术在我们生活中的应用非常之广泛,不论是在各个方面都会涉及到它,小到家用电器的自动控制,大到神舟九号和天空一号航天器的设计,都无可避免的要运用它。并且鉴于以理论推动实践及理论实践相结合为指导思想,特此用我们所学的理论知识来实践这次课程设…

动易网站模板免费常熟网站建设icp备案

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路 链接:https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387 关于本题,前提是…

网站源码查看广州计算机软件公司排名

使用织梦cms有很多的功能,其中有一个是在dedecms后台添加发布软件,然后在前台大家可以直接下载软件,在织梦cms后台怎么添加发布软件呢?下面是织梦软件内容管理的主要操作步骤。使用织梦cms有很多的功能,其中有一个是在…

小兔自助建站绍兴高新区建设网站

UART 通用异步收发器,一般来说,在单片机上,名为UART的接口只能用于异步串行通信。 USART 名为USART的接口既可用于同步串行通信,也可用于异步串行通信。

相亲网站界面设计西安关键词优化软件

jasperreports这是JasperReports JSF插件系列的第一篇“用例文章” ,我将专注于一个简单的需求,并且我将进一步深入。 起点是我们已经为图书商店完成的项目设置,我将向其中添加一个列表,其中包含在数据库中注册的其他图书&#xf…

怎么建设公益网站佛山建设局网站

在日常开发中在lib包的里面添加了外部的jar,如何将外部的包添加到java类库中,这样项目就可以引用相应的jar包,操作如下: 1.先将需要的jar复制到lib包如下,如下截图,图标前面没有箭头,表示还未添…

南宁市网站维护与推广公司三门峡市住房的城乡建设局网站

很简单的一道题&#xff0c;但是我竟然蠢到想不明白为什么如果从头生成会出现大量重复的数字。 写的时候主要出现的错误在爆int上&#xff0c;一定要注意数据范围。 #include <iostream> #include <queue> #include <set>using namespace std; using ll lo…

万户网站管理系统4.0手机网站建设全包

实验拓扑图 实验思路 根据图中所属网段&#xff0c;配置ip地址和网关R1,R2,R3,R4配置缺省路由&#xff0c;可以是公网互通使用ppp验证&#xff0c;R1与R5为PAP验证&#xff0c;R5:aaa地址池&#xff0c;创建用户名以及密码&#xff0c;同时进行pap服务认证&#xff0c;同时在…