博弈论 负极大值算法
下面这篇文章承接上文,人工智能,博弈论
一个局面对红方的优势为X,那么对于黑方的优势就是-X;一个局面对红方的优势为-X,对黑方的优势就是X。在负极大值搜索算法中,没有了极小点,只有极大点。需要注意的是,局面对一方的优势转化为另一方的优势时需要加负号。局面估计区间是一个关于0点对称的区间:
[-MaxValue,MaxValue].需要注意的是,为了能使负极大值搜索算法得到正确的评价,必须修改局面评估函数的返回值,原来在极大极小搜索算法中始终返回的是红方的优势,现在要改为当前走棋方的优势。
负极大值搜索算法:
输入:搜索深度
输出:节点的最佳走法,及对应的最佳估值
函数形式:int negaMaxSearch(int depth)
初始化最优值best=负无穷大 //都是极大点
如果depth小于等于0
调用评估函数,并将结果赋给value
返回value值
否则
生成当前所有合法的走法
对于每一步走法
执行走法
value= -negaMaxSearch(depth-1) //注意函数之前有负号
撤销走法
如果 value> best
best=value
如果 depth == Max_Depth
bestMove=mv
返回best //返回某个搜索分支的最优评估值
评估函数的算法:
输入:棋局
输出:局面对当前走方的优势
rValue:红方的优势总和
bValue:黑方的优势总和
分别进行评估,具体问题具体设计,获得rValue和bValue的值
如果当前局面是红方走棋
return rValue-bValue;
否则
return bValue-rValue;
博弈论 负极大值算法相关推荐
- 基本搜索技术--人机博弈算法(极大极小,深度优先,负极大值)
极大极小值算法( Minimax algorithm) 在上文的博弈树中,如果我们令甲胜的局面值为1,乙胜的局面值为-1,而和局的值为0.当轮到甲走时,甲定会选择子节点值最大的走法:而轮到乙时,乙则会 ...
- 计算机博弈 Negamax 负极值算法
在计算机博弈大赛中Negamax算法是Max-Min算法的一种变形,在代码实现上,它可以更加的简洁 原理 敌对方一定不会选择使我能获胜的节点,也就是一方要最大值,一方要最小值,只不过最小值用负值来表示 ...
- 象棋ai算法(极小-极大值搜索、负极大值函数、Alpha-Beta剪枝算法、渴望算法)
ai的思考过程是怎样的?自然就是遍历所有的可能,找出相对最好的一种着法.我们首先要实现这个功能,之后再优化算法,使得效率更高. 本文介绍的算法: 极小-极大值搜索 负极大值函数 Alpha-Beta剪 ...
- 博弈论SG函数-算法介绍及例题
一. 基本概念: 1. Impartial Combinatorial Games(ICG) 公平组合游戏: 1. 两名选手 2. 交替进行某种游戏规定的操作,每操作一次,选手可以在有限的操作(操作 ...
- 博弈论与计算机科学,算法博弈论的一点感想和介绍
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 境选择有利于自身的操作策略并实现利益的最大化,这些策略之间最终达到一种相互制约的均衡状态.在达到的各种均衡状态中,有些是系统应用设计者所希望看到 的,有的 ...
- 是计算机实现研究的内容,计算机硕士论文开题报告分享
计算机自发明以来极大地改变了人们的生产生活,提高了工作效率和准确度,可以说是人类的重要发明之一.下面是小编为大家整理的计算机硕士论文开题报告,希望对大家有帮助. 爱恩斯坦棋计算抓博弈系统的研究与实现 ...
- 游戏程序员的学习资料
为什么80%的码农都做不了架构师?>>> 三维图形学: 搞三维图形学首先还是要扎扎实实的先看解析几何.线性代数.计算几何的教材,后面的习题一个都不能少.国内数学书还是蛮好的. ...
- [转载]一个游戏程序员的学习资料
想起写这篇文章是在看侯杰先生的<深入浅出MFC>时,突然觉得自己在大学这几年关于游戏编程方面还算是有些心得,因此写出这篇小文,介绍我眼中的游戏程序员的书单与源代码参考.一则是作为自己今后两 ...
- 对弈类游戏的人工智能(3)--博弈树优化
前言: 对弈类游戏的智能算法, 网上资料颇多, 大同小异. 然而书上得来终觉浅, 绝知此事要躬行. 结合了自己的工程实践, 简单汇总整理下. 一方面是对当年的经典<<PC游戏编程(人机博弈 ...
最新文章
- 组合计数 ---- 2020 EC final B. Rectangle Flip 2(枚举+组合计数)
- 高级指令——hostname指令【作用:操作服务器的主机名(读取、设置)】、id指令【查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…)】、whoami指令、ps -ef指令
- 钉钉服务器端SDK PHP版
- VTK:隐式选择循环用法实战
- python升级pip怎么出错了_Python,开启吐槽模式,新手必看!
- hasLayout属性
- 一个小技巧 禁止浏览器弹出Alert
- Java是否越来越接受静态导入?
- 格雷码 Gray Code
- 【电脑一点通】如何新建和切换Windows桌面
- java 繁体转简体_如何用java将繁体字转为简体字
- Cobbler实现系统自动安装和cobbler的web管理实现
- 微信分享功能踩坑过程
- 会声会影X3常见问题80个解答
- 用余弦算法做相似度匹配
- STM32F4PWM详解
- 《图形图像处理》— 使用matlab对图像进行二值化和灰度化处理
- JavaScript高级第01天笔记
- Android 4.2系统的手机使用LEAP企业Wifi网络 ( by quqi99 )
- PostgreSQL 用 CTE语法 + 继承 实现平滑拆分大表
热门文章
- 基于STM32的利用红外收发机制的人体感应设计
- 鼠标测试软件m,技嘉GM-M8
- 实战 .Net 数据访问层 - 23
- pri master hard disk:S.M.A.R.T. status BAD,backup and replace press FX to resume
- java 解析php序列化数据问题
- Vue中使用TinyMce方法
- ChatGpt中文角色大全
- 【深度学习】V-Net 3D医学图像分割 Dice loss 损失
- 电脑键盘的详细键值表
- 【IoT】如何使用 MSP430 内部频率 VLO 以及如何校正频率