首页 > 其他分享 >博弈论入门

博弈论入门

时间:2023-04-28 11:44:23浏览次数:38  
标签:状态 结点 有向图 入门 Nim 必败 博弈论 游戏

博弈论

有向图游戏

Nim 游戏

Nim游戏的定义是,给定\(n\)堆石子,两个玩家去交替的拿石头,每次只能拿某一堆的石头,如果此时有一个玩家无法进行这个游戏了,则游戏结束。为了解决这个问题,比较直接的会先想到一个类似于\(DP\)的思路,考虑当前每个状态,去将其划分为两个状态,这里我们定义为\(P:必败态\)和\(N : 必胜态\),将现在的Nim游戏看作是一个有向图上进行的过程,每个结点就是现在游戏的状态(还剩多少堆,每堆还有多少个),直观的去想,出度为0的点可以直接成为\(P\)状态,然后我们考虑能走到最后状态的结点,是不是一定就是\(N\)了,因为一次操作可以直接让其走到必败,所以我们就可以类似递归的去定义,如果当前结点,他能走到的点有\(P\)状态,则他为\(N\)状态,否则为\(P\)状态。

但这样递归的定义复杂度是爆炸的,然后就有了一个神奇的定理,如果当前所有石子堆数异或和不为\(0\),则是必胜态,否则则为必败态,简单证明,全为\(0\)的时候异或和也同样为\(0\),如果此时不为\(0\),所以他一定是某几个二进制位产生了奇数个\(1\),我一定可以通过去操作某一堆来得到一个答案,把奇数个\(1\)给抵消掉,这样就走到\(0\)了。所以转移就成立了。

SG函数

通过Nim游戏,我们可以引入\(SG\)函数。把Nim游戏一般化,不要去思考什么堆数,现在就是在一个有向图上做游戏,终点结束游戏,定义终点值为\(0\),为必败,我们可以计算每个结点的\(mex\)值,现在也将游戏分为两个状态,一:\(mex = 0\),此时能走到的点不存在必败态,所以必败。反之大于0说明存在一个子结点\(mex = 0\),所以必胜。

现在我们把这个问题进一步复杂化,假设只是有一个无向图,而是好多个无向图,每个图上有一个棋子,表示初始状态,那我们怎么确定是否存在必胜必败关系呢?我们可以对一个有向图先去考虑这个问题,假设一个棋子的\(SG\)值为\(k\),说明 他的能走到的结点里,\(mex\)包括了\(0,1,2,...,k - 1\),这不就是Nim游戏,\(n\)堆石头,每次可以拿走一些,变成比他小的值,所以结论一样,异或和大于\(0\)必胜。

标签:状态,结点,有向图,入门,Nim,必败,博弈论,游戏
From: https://www.cnblogs.com/zwh-zzz/p/17361664.html

相关文章

  • Spring 3.x MVC 入门1 -- 图解MVC整体流程
    Springmvc的生命周期开始使用springmvc之前,我们必须需要了解下SPRINGMVC的流程,如下图: 在看下图之前的一些说明:(下面介绍的HandlerMapping,HandlerAdapter,HandlerExceptionResovler,ViewResolver都有个order属性,因为这些接口每一个都可以注册多个实现,order代表他们的执行顺序......
  • java serice wrapper mac M2 入门
    先下载javasericewrapperhttps://download.tanukisoftware.com/wrapper/3.5.53/wrapper-macosx-universal-64-3.5.53.tar.gz解压设置arch-x86_64zshuname-mcdwrapper-macosx-universal-64-3.5.53/bin测试用例bin/testwrapperconsole新建项目packageo......
  • JasperReports教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介JasperReports入门教程-使用包含从环境设置,报告设计,编译报告设计,填充报告,查看和打印报告,导出,参数,数据源开始的基础知识到高级知识的初学者教程,简单易学地设计和创建JasperReports,字段,表达式,变量,部分,组,样式,Scriplets,子报告,图表,Corsstabs和国际化。教程目录JasperRep......
  • 389-ds 目录服务器入门——1
    0实验环境CPU :龙芯3a5000操作系统 :LoongnixServer8.4(衍生自CentOS8.4)1389-ds简介要了解389-ds,首先需要先知道几个概念。1)389-ds中的ds是DirectoryServer(目录服务器)的缩写,这里的目录指的是一种为了快速有效查找和搜索而进行了特别优化的数据库类型。存储在目录中的数据......
  • Kubernetes 1.3 从入门到进阶 安装篇:minikube
    Kubernetes单机运行环境一直是一个没有得到重视的问题。现在我们有了minikube,一个用go语言开发的可以在本地运行kubernetes的利器,不过目前应该只是支持kubernetes1.3。如果你只有一台机器或者虚拟机又想试验一下Kubernetes的新的功能,或者作kubernetes上开发的本地环境,minikube可能......
  • 【牛客编程题】Python机器学习(入门例题5题)
    【牛客编程题】Python机器学习(入门例题5题)做题链接:https://www.nowcoder.com/exam/oj?page=1&tab=Python篇&topicId=329文章目录AI1鸢尾花分类_1AI2鸢尾花分类_2AI3决策树的生成与训练-信息熵的计算AI4决策树的生成与训练-信息增益AI5使用梯度下降对逻辑回归进行训练AI1鸢尾......
  • 公钥密码学RSA入门
    RSA算法的具体描述如下:任意选取两个不同的大素数p和q,n=pq,根据欧拉函数(小于n且与n互素的正整数的个数)得:φ(n)=φ(pq)=φ(p)φ(q)=(p-1)(q-1)任意取一个大整数e,满足gcd(e,φ(n))=1,整数e用作密钥确定解密钥d,满足(de)modφ(n)=1,即de=kφ(n)+1,k≥1是一个任意的整数。所以,若知道e和......
  • 高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群物化视图是指将视图的计算结果存储在数据库中的一种技术。当用户执行查询时,数据库会直接从已经预计算好的结果中获取数据,而不需要重新计算视图。具体来说,物化视图是一种以表格形式存储的结果......
  • Wwise入门和实战
    前言游戏开发中音效往往是会被人们忽略的模块,美术表现往往视觉冲击力很强,就能直接感觉出好与不好,但音效模块是一种锦上添花的模块,好的音效设计会使得游戏的体验更加好,我在没有接触Wwise之前也是用的Unity内置的Audio模块,程序的工作就是调用原生的音效而已,几乎没有什么改变,如果我们......
  • 数据库SQL语句从入门到进阶
    创建表createtablepeople(idint(11),namechar(11),phonechar(20),pwdvarchar(40)); 2. 增加语句    insertintopeoplevalues(9,'gang',13023299931,'qwert');3.向特定列增加语句insertintopeople(id,name,phone)values(9,'gang',13023299931);4......