下面这篇文章承接上文,人工智能,博弈论

一个局面对红方的优势为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;

博弈论 负极大值算法相关推荐

  1. 基本搜索技术--人机博弈算法(极大极小,深度优先,负极大值)

    极大极小值算法( Minimax algorithm) 在上文的博弈树中,如果我们令甲胜的局面值为1,乙胜的局面值为-1,而和局的值为0.当轮到甲走时,甲定会选择子节点值最大的走法:而轮到乙时,乙则会 ...

  2. 计算机博弈 Negamax 负极值算法

    在计算机博弈大赛中Negamax算法是Max-Min算法的一种变形,在代码实现上,它可以更加的简洁 原理 敌对方一定不会选择使我能获胜的节点,也就是一方要最大值,一方要最小值,只不过最小值用负值来表示 ...

  3. 象棋ai算法(极小-极大值搜索、负极大值函数、Alpha-Beta剪枝算法、渴望算法)

    ai的思考过程是怎样的?自然就是遍历所有的可能,找出相对最好的一种着法.我们首先要实现这个功能,之后再优化算法,使得效率更高. 本文介绍的算法: 极小-极大值搜索 负极大值函数 Alpha-Beta剪 ...

  4. 博弈论SG函数-算法介绍及例题

    一. 基本概念: 1.  Impartial Combinatorial Games(ICG) 公平组合游戏: 1. 两名选手 2. 交替进行某种游戏规定的操作,每操作一次,选手可以在有限的操作(操作 ...

  5. 博弈论与计算机科学,算法博弈论的一点感想和介绍

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 境选择有利于自身的操作策略并实现利益的最大化,这些策略之间最终达到一种相互制约的均衡状态.在达到的各种均衡状态中,有些是系统应用设计者所希望看到 的,有的 ...

  6. 是计算机实现研究的内容,计算机硕士论文开题报告分享

    计算机自发明以来极大地改变了人们的生产生活,提高了工作效率和准确度,可以说是人类的重要发明之一.下面是小编为大家整理的计算机硕士论文开题报告,希望对大家有帮助. 爱恩斯坦棋计算抓博弈系统的研究与实现 ...

  7. 游戏程序员的学习资料

    为什么80%的码农都做不了架构师?>>>    三维图形学:  搞三维图形学首先还是要扎扎实实的先看解析几何.线性代数.计算几何的教材,后面的习题一个都不能少.国内数学书还是蛮好的. ...

  8. [转载]一个游戏程序员的学习资料

    想起写这篇文章是在看侯杰先生的<深入浅出MFC>时,突然觉得自己在大学这几年关于游戏编程方面还算是有些心得,因此写出这篇小文,介绍我眼中的游戏程序员的书单与源代码参考.一则是作为自己今后两 ...

  9. 对弈类游戏的人工智能(3)--博弈树优化

    前言: 对弈类游戏的智能算法, 网上资料颇多, 大同小异. 然而书上得来终觉浅, 绝知此事要躬行. 结合了自己的工程实践, 简单汇总整理下. 一方面是对当年的经典<<PC游戏编程(人机博弈 ...

最新文章

  1. 组合计数 ---- 2020 EC final B. Rectangle Flip 2(枚举+组合计数)
  2. 高级指令——hostname指令【作用:操作服务器的主机名(读取、设置)】、id指令【查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…)】、whoami指令、ps -ef指令
  3. 钉钉服务器端SDK PHP版
  4. VTK:隐式选择循环用法实战
  5. python升级pip怎么出错了_Python,开启吐槽模式,新手必看!
  6. hasLayout属性
  7. 一个小技巧 禁止浏览器弹出Alert
  8. Java是否越来越接受静态导入?
  9. 格雷码 Gray Code
  10. 【电脑一点通】如何新建和切换Windows桌面
  11. java 繁体转简体_如何用java将繁体字转为简体字
  12. Cobbler实现系统自动安装和cobbler的web管理实现
  13. 微信分享功能踩坑过程
  14. 会声会影X3常见问题80个解答
  15. 用余弦算法做相似度匹配
  16. STM32F4PWM详解
  17. 《图形图像处理》— 使用matlab对图像进行二值化和灰度化处理
  18. JavaScript高级第01天笔记
  19. Android 4.2系统的手机使用LEAP企业Wifi网络 ( by quqi99 )
  20. PostgreSQL 用 CTE语法 + 继承 实现平滑拆分大表

热门文章

  1. 基于STM32的利用红外收发机制的人体感应设计
  2. 鼠标测试软件m,技嘉GM-M8
  3. 实战 .Net 数据访问层 - 23
  4. pri master hard disk:S.M.A.R.T. status BAD,backup and replace press FX to resume
  5. java 解析php序列化数据问题
  6. Vue中使用TinyMce方法
  7. ChatGpt中文角色大全
  8. 【深度学习】V-Net 3D医学图像分割 Dice loss 损失
  9. 电脑键盘的详细键值表
  10. 【IoT】如何使用 MSP430 内部频率 VLO 以及如何校正频率