博弈论基础

博弈论总结

什么是博弈论:

多人进行博弈,假设每个人都采取最优策略,一定有一个人胜出,在知道初态及规则的情况下,求解出

何人胜出的一类问题的理论及方法。

博弈论的一些性质

P点:必败点,N点:必胜点

1)无法进行任何移动的局面(也就是terminal position)是P-position

2)可以移动到P-position的局面是N-position

3)所有移动都导致N-position的局面是P-position

巴什博奕:

介绍:只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为

胜。

必定可以写成该式子 n=k*(m+1)+r

结论:若r=0,则先手必败,否则先手必胜。

if(n % (m + 1) == 0)cout<<"后手必胜"<<endl;elsecout<<"先手必胜"<<endl;

威佐夫博弈:

介绍:有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同

件物品,规定最后取完者胜利。

结论:若两堆物品的初始值为(xy),且x<y,则另z=y-x

w=int[((sqrt5+1/2*z ];(中间为熟知的黄金分割比)

w=x,则先手必败,否则先手必胜。

if(x > y)swap(x, y);int c = floor((y - x) * (sqrt(5) + 1) / 2);if(c == x)cout<<0<<endl;elsecout<<1<<endl;

尼姆博奕:

介绍:有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取

光者得胜.

结论:n堆石子全部做异或运算,结果为0则为必败结果

SG函数:

首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非

负整数。例如mex{0,1,2,4}=3mex{2,3,5}=0mex{}=0

对于任意状态 x 定义 SG(x) = mex(F),其中F x 后继状态的SG函数值的集合(就是上述mex中的数

值)。最后返回值(也就是SG(X))为0为必败点,不为零必胜点。

进一步解释一下F,就是题意中给出的可以移动的次数。举个例子来说,一堆石子,每次只能拿13

57个,那么S数组就是1357

假如说是在一个游戏中有多个石子堆该怎么办了。我们只需要把对每个石子堆进行sg函数的调用,将得

到的所有的值进行异或。得出来的结果为0则该情形为必败态。否则为必胜态。

int sg[MAXN];
int f[MAXM]; //可以取走的石子个数
bool Hash[MAXN];void getSG(int m)
{memset(sg, 0, sizeof(sg));for (int i = 1; i < MAXN; i++) {//枚举石子的个数memset(Hash, false, sizeof(Hash));for (int j = 0; j < m && f[j] <= i; j++)Hash[sg[i-f[j]]] = true;//枚举每次拿走的个数并标记for (int j = 0; j < MAXN; j++) {if (!Hash[j]) {sg[i] = j; //找到这个F[](该状态可以达到的状态)中不存在的最小的数break;}}}
} //例题:hdu1847
int main()
{int n, num = 1;for (int i = 0; i < MAXM; num <<= 1, i++)f[i] = num;//这里的F数组就是可以移动的步数,每次都是2的幂次getSG(MAXM);while (cin >> n){if (sg[n])cout << "Kiki" << endl;elsecout << "Cici" << endl;} return 0;
}

 

 

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

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

相关文章

矩阵论-范数理论及其应用

范数理论及其应用2.1向量范数及其性质2.2矩阵范数本系列博文主要总结学习矩阵论的心得笔记&#xff0c;参考数目《矩阵论》–张凯院&#xff1b;整个文章的整理体系参照行书过程。范数–非负实数&#xff0c;用于衡量线性空间元素&#xff08;如&#xff1a;向量&#xff0c;矩…

大数据学习(09)--spark学习

文章目录目录1.spark介绍1.1 spark介绍1.2 scale介绍1.3 spark和Hadoop比较2.spark生态系统3.spark运行框架3.1 基本概念3.2 架构的设计3.3 spark运行基本流程3.4 spark运行原理3.5 RDD运行原理3.5.1 设计背景3.5.2 RDD概念和特性3.5.3 RDD之间的依赖关系3.5.4 stage的划分3.5.…

探索 Pexpect

概述 通过本系列第一部分 《探索 Pexpect&#xff0c;第 1 部分&#xff1a;剖析 Pexpect 》&#xff08;请参阅参考资料&#xff09;的介绍&#xff0c;相信大家已经对 Pexpect 的用法已经有了比较全面的了解&#xff0c;知道 Pexpect 是个纯 Python 语言实现的模块&#xff…

Python的Pexpect详解 [图片]

Pexpect 是一个用来启动子程序并对其进行自动控制的纯 Python 模块。 Pexpect 可以用来和像 ssh、ftp、passwd、telnet 等命令行程序进行自动交互。继第一部分《探索 Pexpect&#xff0c;第 1 部分&#xff1a;剖析 Pexpect 》介绍了 Pexpect 的基础和如何使用后&#xff0c;本…

关系数据库——sql增删改

数据的插入 插入元祖 --1. 表名后没有指定属性列&#xff1a;表示要插入的是一条完整的元组&#xff0c;且属性列属性与表定义中的顺序一致 insert into student values (201215128, 陈东, 18, 男, IS);--2. 在表明后指定要插入数据的表名及属性列&#xff0c;属性列的顺序可…

机器学习中的聚类方法总结

聚类定义 定义 聚类就是对大量未知标注 的数据集&#xff0c;按数据 的内在相似性将数据集划分为多个类别&#xff0c;使 类别内的数据相似度较大而类别间的数据相 似度较小。是无监督的分类方式。 聚类思想 给定一个有N个对象的数据集&#xff0c;构造数据的k 个簇&#x…

学点数学(1)-随机变量函数变换

随机变量函数变换本文介绍一维随机变量函数变换&#xff0c;参考文献&#xff1a;https://wenku.baidu.com/view/619f74ac3186bceb19e8bbd0.html变换TTT作用于随机变量XXX&#xff0c;产生随机变量YYY. T:X−>Y或者写为yT(x)T:X->Y 或者写为 yT(x)T:X−>Y或者写为yT(x…

关系数据库——关系数据语言

关系 域&#xff1a;一组具有相同数据类型的值的集合&#xff08;即取值范围&#xff09; 笛卡尔积&#xff1a;域上的一种集合运算。结果为一个集合&#xff0c;集合的每一个元素是一个元组&#xff0c;元组的每一个分量来自不同的域。 基数&#xff1a;一个域允许的不同取值…

Python模块(2)-Numpy 简易使用教程

Numpy模块 简易使用教程1.数组创建2.数组基本属性-维度、尺寸、数据类型3.数组访问-索引、切片、迭代4.数组的算术运算-加减乘除、转置求逆、极大极小5.通用函数-sin,cos,exp,sqrtnp.dot与np.matmul的区别6.数组的合并和分割6.1 np.vstack(),np.hstack()6.2 np.stack()7.list与…

机器学习问题总结(01)

文章目录1.请描述推荐系统中协同过滤算法CF的原理2.请描述决策树的原理、过程、终止条件&#xff0c;以及如何防止过拟合2.1决策树生成算法2.2 剪枝处理&#xff08;防止过拟合&#xff09;2.3 停止条件2.4 棵决策树的生成过程2.5 决策树的损失函数3.请描述K-means的原理&#…

pthread_attr_init线程属性

1&#xff0e;线程属性 线程具有属性&#xff0c;用pthread_attr_t表示&#xff0c;在对该结构进行处理之前必须进行初始化&#xff0c;在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化&#xff0c;用pthread_attr_destroy对其去除初始化。 1&#xff0e; …

Python实例讲解 -- 解析xml

Xml代码 <?xml version"1.0" encoding"utf-8"?> <info> <intro>信息</intro> <list id001> <head>auto_userone</head> <name>Jordy</name> <number&g…

springboot3——Email

maven导入包&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.1.6.RELEASE</version></dependency> 参数配置&#xff1a; # MailPrope…

python(22)--面向对象1-封装

python面向对象1面向过程/面向对象2面向对象核心概念-类3类的设计3.1类三要素-类名、属性、方法3.2面向对象基础语法3.2.1查看对象的常用方法3.2.2类定义3.2.3创建类对象3.2.4__init__()方法3.2.5 self参数3.2.6类内置方法和属性_del_()方法--销毁对象_str_()方法--定制化输出对…

机器学习问题总结(02)

文章目录1.stacking模型以及做模型融合的知识1.1 从提交结果中融合1.2 stacking1.3 blending2. 怎样去优化SVM算法模型的&#xff1f;2.1 SMO优化算法2.2 libsvm 和 Liblinear3.现有底层是tensorflow的keras框架&#xff0c;如果现在有一个tensorflow训练好的模型&#xff0c;k…

python对操作系统的目录和文件操作

一、获取当前目录下的特定文件列表>>>import glob,os>>>curdir os.getcwd() #获取当前目录>>>os.chdir(workdir) #设置当前目录>>>dir glob.glob(*.dat) #获取当前目录的dat文件列表>>>os.chdir(curdir) #…

常见漏洞

Cookie without HttpOnly flag set 如果在Cookie上设置了HttpOnly属性&#xff0c;则客户端JavaScript无法读取或设置Cookie的值。 这种措施通过阻止某些客户端攻击&#xff08;例如跨站点脚本&#xff09;&#xff0c;通过阻止它们通过注入的脚本来简单地捕获cookie的值&…

python函数星号参数

2011-09-01 17:35 2人阅读 评论(0) 收藏 编辑 删除 今天有个工作是导出一个函数给脚本用 我自已先要测一下 先要客户端发送一个消息给服务器 看了下C部分的代码,如下 "def onNetMessage(self,playerID, msgName,msgParam):\n" //客户端调用服务器脚本 " …

MachineLearning(3)-流型

流型-manifold在很多机器学习的文章中会见到“嵌入在高维空间的低维流型”这样的字眼&#xff0c;下记录一些重要概念。参考资料&#xff1a;https://blog.csdn.net/sinat_32043495/article/details/789977581.流型 局部具有欧几里得空间性质的空间&#xff08;流型就是一个空间…

C/C++常见面试题(四)

C/C面试题集合四 目录 1、什么是C中的类&#xff1f;如何定义和实例化一个类&#xff1f; 2、请解释C中的继承和多态性。 3、什么是虚函数&#xff1f;为什么在基类中使用虚函数&#xff1f; 4、解释封装、继承和多态的概念&#xff0c;并提供相应的代码示例 5、如何处理内…