最大值最小值算法(象棋博弈)
参考自:
人工智能之博弈二、最大最小值方法
象棋AI博弈算法(最大值最小值算法)
主要思想其实就还是暴搜,不过可以在搜索阶段进行剪枝+优化。
这个算法可以在竞赛中用于一些博弈题的打表,然后找规律。
有这么一个博弈题:
Take Apples
然后就如何用这个算法进行打表。
定义必赢态为先手必赢,必输态为先手必输。以下所说的必赢、必输都是对于先手而言。
首先,如何找到一个必赢态,假设目前是先手要进行操作,可以有k种操作,只有k种操作中有一个必赢态,那么他肯定选这个必赢态就行选择,那么对于先手这个必赢态是如何确定的呢,是后手在这个必赢态下(先手过了就后手,可以抽象为一棵树的节点)进行下一次操作的所有操作都是导致先手必赢,即后手怎么选都不能赢。直到最后某一个能一次拿完。
code
//因为每一轮是两个选手都要操作完之后才结束,所以get_max相当于是先手在操作,get_min是后手。
//1 表示先手赢 0表示先手输
int get_max(int n,int k){//返回的是先手是否赢或者输if(n<=k){//如果小于k,那么先手赢。return 1;}int maxx = -1;//相当于只要有一个1,那么就赢,与取max等价。for(int i = 1;i <= k;++i){maxx = max(maxx,get_min(n-i,k));}return maxx;
}int get_min(int n,int k){if(n<=k){//如果小于k,那么后手赢,即先手输。return 0;}int minn = 2;//必须全都是1,先手才能赢,与取min等价。for(int i = 1;i <= k;++i){minn = min(minn,get_max(n-i,k+1));}return minn;
}
最大值最小值算法(象棋博弈)相关推荐
- C++极值minmax最大值最小值算法(附完整源码)
极值minmax最大值最小值算法 极值minmax最大值最小值算法的完整源码(定义,实现,main函数测试) 极值minmax最大值最小值算法的完整源码(定义,实现,main函数测试) #includ ...
- 求两个数中的最大值最小值算法
给定两个数,用数学运算求出它们两中的最大的数和最小的数,设这两个数为a,b,最大值为max,最小值为min,则有 max = ((a+b)+|a-b|) / 2 ; min = ((a+b)-|a-b ...
- java最大值最小值_java算法-最大值、最小值
java求最大值的三种方法 一般方法: public class maxtest { public static void main(String[] args) { //############## ...
- JavaScript 数组排序及查找数组中最大值最小值方法
JavaScript 数组排序方法及查找最大值最小值方法 1. sort()方法排序 1.1 方法介绍 1.2 语法:arr.sort([compareFunction]) 1.3 参数说明 1.4 ...
- mysql查找最大值最小值_查找两个8位数字的最大值| 8086微处理器
mysql查找最大值最小值 Problem statement: 问题陈述: To find maximum of two 8-bit numbers using 8086 Microprocesso ...
- R语言max函数min函数计算各种数据对象最大值最小值实战
R语言max函数min函数计算各种数据对象最大值最小值实战 目录 R语言max函数min函数计算各种数据对象最大值最小值实战 #基本语法
- 均值定理最大值最小值公式_如何理解中值定理?三大微分中值定理的几何意义及其证明介绍。...
本文是为了下篇文章<三大微分中值定理的应用-经典例题>作基础准备 本文参考谢惠民<数学分析习题课讲义>和裴礼文<数学分析中的典型问题与方法>中的内容.已看过的同学可 ...
- python求最大值最小值_Python求可变参数的最大值最小值以及参数个数
求可变参数的最大值最小值以及参数个数 简介: 首先要做这个题,我们要使用函数来解决,这就要求我们要掌握函数的定义以及函数的调用.函数是一段具有特定功能的.可重用的,用来实现单一,或相关联功能的代码段. ...
- 求数组的最大值php,求PHP数组最大值,最小值的代码
求PHP数组最大值,最小值的代码,需要的朋友可以参考下. 代码如下: $fruits = array("155::vbscript::http://www.jb51.net/list/lis ...
最新文章
- 看我如何作死 | 将CPU、IO打爆
- linux 删除含有关键词的文件_linux 连个文件都删除不了,什么鬼!
- python字典转字符串后里面的冒号还在吗_Python字典、字符串及列表的相互转换
- iptables中state模块的连接状态
- Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突)
- Module Zero之用户管理
- 使用Spring WS创建合同优先的Web服务
- 独立线性度 最佳直线
- Cron表达式、定时任务
- Windows服务器放多个网站,测试无数次终于成功了,Windows服务器同时安装多个版本的MySQL的方法!...
- provide sth for sb; provide sb with sth
- Atitit.导出excel功能的设计 与解决方案
- 高等数学学习笔记——第九讲——数列收敛的判定方法
- 基于Python网易云音乐歌词爬取
- window.print() 实现A4纸张打图片分页,解决预览首页空白页、打印多出一张空白页问题
- IT行业现在的就业前景怎么样?
- 制作水晶报表基本步骤
- UnityPlayerActivity详解
- rqt teb参数动态调试工具_teb
- 操作无法完成因为文件已在syayem中打开怎么处理删除文件。