威佐夫博弈常见题型和理解

【小组专题二:博弈论入门综述(1)】NP状态 | SG函数 | 巴什博奕、威佐夫博弈、斐波那契博弈、Nim游戏、SJ定理 博弈论综述【1】前言博弈与博弈论博弈树NP状态SG函数(Sprague-Grundy)Sprague-Grundy Theorem巴什博奕 Bash Game威佐夫博弈扩展威佐夫博弈斐波那契博弈Nim博弈拓展Nim博弈与Nim博弈的各个变种(1)拓展维度(2)先手怎么取(3)求先手一开始有多少种取得方式能够赢(4) 变形:有拿取上限(NYOJ-135)(5) 阶梯博弈(**Nim Staircase**博弈)最后的最后:SJ定理与Anti-SG游戏各种练习题啦!可能下期会将的内容(?) 博弈与博弈论 阅读详情

下面来看看威佐夫博弈常见的三类问题:

1)给你一个局面,让你求是先手输赢。
有了上面的分析,那么这个问题应该不难解决。首先求出差值,差值 * 1.618 == 最小值 的话后手赢,否则先手赢。(注意这里的1.618最好是用上面式子计算出来的,否则精
度要求高的题目会错)

2)给你一个局面,让你求先手输赢,假设先手赢的话输出他第一次的取法。
首先讨论在两边同时取的情况,很明显两边同时取的话,不论怎样取他的差值是不会变的,那么我们可以根据差值计算出其中的小的值,然后加上差值就是大的一个值,当
然能取的条件是求出的最小的值不能大于其中小的一堆的石子数目。
加入在一堆中取的话,可以取任意一堆,那么其差值也是不定的,但是我们可以枚举差值,差值范围是0 — 大的石子数目,然后根据上面的理论判断满足条件的话就是一种合理的取法。

理解:

威佐夫博弈是博弈中的另一个经典模型。

问题:首先有两堆石子,博弈双方每次可以取一堆石子中的任意个,不能不取,或者取两堆石子中的相同个。先取完者赢。
分析:首先我们根据条件来分析博弈中的奇异局势
第一个(0 , 0),先手输,当游戏某一方面对( 0 , 0)时,他没有办法取了,那么肯定是先手在上一局取完了,那么输。
第二个 ( 1 , 2 ),先手输,先手只有四种取法,
1)取 1 中的一个,那么后手取第二堆中两个。
2)取 2 中一个,那么后手在两堆中各取一个。
3)在 2 中取两个,那么后手在第一堆中取一个。
4)两堆中各取一个,那么后手在第二堆中取一个。
可以看出,不论先手怎么取,后说总是能赢。所以先手必输!
第三个 ( 3 , 5 ),先手必输。首先先手必定不能把任意一堆取完,如果取完了很明显后手取完另一堆先手必输,那么
假如看取一堆的情况,假设先手先在第一堆中取。 取 1 个,后手第二堆中取4个,变成(1 ,2)了,上面分析了是先手的必输局。
取 2 个,后手第二堆中取3个,也变成( 1 , 2)局面了。
假设先手在第二堆中取,取 1 个,那么后手在两堆中各取 2 个,也变成 ( 1 , 2 )局面了。
取 2 个 ,那么后手可以两堆中都去三个, 变成 ( 0 , 0)局面,上面分析其必输。
取 3 个,后手两堆各取 1 个 ,变成( 1 , 2)局面了。
取 4 个,后手在第一堆中取一个,变成( 1 , 2)局面了。
可见不论先手怎么取,其必输!
第四个(4 , 7),先手必输。
自己推理可以发现不论第一次先手如何取,那么后手总是会变成前面分析过的先手的必输局面。
那么到底有什么规律没有呢,我们继续往下写。
第四个 ( 6 ,10 )
第五个 ( 8 ,13)
第六个 ( 9 , 15)
第七个 ( 11 ,18)
会发现他们的差值是递增的,为 0 , 1 , 2, 3, 4 , 5 , 6, 7…..n
而用数学方法分析发现局面中第一个值为前面局面中没有出现过的第一个值,比如第三个局面,前面出现了 0 1 2,那么第三个局面的第一个值为 3 ,比如第五个局面,前
面出现了 0 1 2 3 4 5 ,那么第五个局面第一个值为6。
再找规律的话我们会发现,第一个值 = 差值 * 1.618
而1.618 = (sqrt(5)+ 1) / 2 。
大家都知道0.618是黄金分割率。而威佐夫博弈正好是1.618,这就是博弈的奇妙之处!

代码

一:

#include <iostream>  
using namespace std;  
int main()  
{  
    int n,m;  
    while(cin>>n>>m)  
      if(n%(m+1)==0)  cout<<"后手必胜"<<endl;  
      else cout<<"先手必胜"<<endl;  
    return 0;  
}  

二:

#include<cstdio>
#include<cmath> 
#include<algorithm>
using namespace std;

int main(){
    int a,b;
    while(~scanf("%d%d",&a,&b)&&(a||b)){
        if(a>b) swap(a,b);
        int k=b-a;
        int tmp=(int)(k*(sqrt(5)+1)/2.0);
        if(tmp==a)
            puts("0");
        else{
            puts("1");
            //两堆同时取,k不变,判断ak是否小于a 
            if(a>tmp){
                printf("%d %d\n",tmp,b-(a-tmp));
            }
            //取一堆,枚举0~b所有的差值 
            for(int i=0;i<=b;i++){
                int tmp2=(int)(i*(sqrt(5)+1)/2.0);
                //防止重复,例如7 10取两堆或一堆都会有4 7 
                if(tmp2==tmp)
                    continue;
                if(tmp2==a&&b>tmp2+i||tmp2+i==a||tmp2+i==b&&a>tmp2){
                    printf("%d %d\n",tmp2,tmp2+i);
                }       
            }   
        } 
    }
    return 0; 
}
14.1.1 博弈论之威佐夫博弈 威佐夫博弈是一种两人轮流进行的游戏,游戏开始时有两堆数量不等的物品。两位玩家轮流从任意一堆或同时从两堆中取走至少一个物品,规定每次至少取一个,最多可以取走一堆中所有的物品,也可以从两堆中取走相同数量的物品。无法继续取物品的玩家判负。题目描述:给定两堆物品,数量分别为100和200。两位玩家轮流进行游戏,每次可以从一堆中取任意数量的物品,或者从两堆中取相同数量的物品。问:如果你是先手,该如何操作才能保证获胜?解题思路计算公式:首先,根据威佐夫博弈的胜负判定公式,计算出当前局面是否为必败态。制定策略。 阅读详情

相关推荐

别再手动写JSON了!用Node-RED OPC UA节点5分钟搞定楼宇温湿度数据采集

本文介绍了如何利用Node-RED和OPC UA节点快速实现楼宇温湿度数据的自动化采集与JSON格式转换。通过可视化工具Node-RED,开发者无需编写复杂代码,5分钟内即可完成从传感器到数据输出的全流程配置,大幅提升智慧楼宇和工业物联网项目的实施效率。

weixin_30368405的博客 432

威佐夫博弈详解

威佐夫博弈是博弈中的另一个经典模型。问题:首先有两堆石子,博弈双方每次可以取一堆石子中的任意个,不能不取,或者取两堆石子中的相同个。先取完者赢。分析:首先我们根据条件来分析博弈中的奇异局势      第一个(0 , 0),先手输,当游戏某一方面对( 0 , 0)时,他没有办法取了,那么肯定是先手在上一局取完了,那么输。第二个 ( 1  , 2  ),先手输,先手只有四种取法,1)取 1 中的一个,...

smithstf的博客 3607

ANSYS Fluent DPM实战:从单点到锥形注入的粒子模拟全流程解析

本文深度解析了ANSYS Fluent中离散相模型(DPM)的粒子注入(Injection)设置全流程。从单点注入到锥形喷雾,详细阐述了不同注入类型的物理本质、参数逻辑与适用场景,并提供了粒径分布、湍流扩散等高级参数设置技巧与实战避坑指南,帮助工程师精准模拟喷雾、粉尘等粒子运动行为。

weixin_29276847的博客 654

博弈论入门——威佐夫博弈

规则: 有两堆石子,两人轮流操作,每次可以从某一堆中取走一些石子,也可以同时从两堆石子中取走相同数量的石子,数量不限,但不能不取。无法操作的人失败。 我们可以通过枚举发现 (0, 0)、(1, 2)、(2, 1)、(3, 5)、(5, 3) 这些状态都属于必败态。但同样的,如果想接着往后枚举推理又变得困难了起来。好在这个游戏只有两堆石子,我们可以将两堆石子数 x, y 映射到平面直角坐标系的点 (x, y) 上,使得游戏的每一个局面都对应坐标中的一个点,这样就可以用平面图来辅助我们进行分析。游戏的两种操作则

weixin_50981443的博客 3844

告别调试烦恼:用Lattice Diamond手把手教你JTAG烧录FPGA(附SRAM/Flash模式详解)

本文详细介绍了使用Lattice Diamond软件进行JTAG烧录FPGA的全流程,包括SRAM临时调试和Flash固化的核心区别。从环境准备、硬件连接到文件准备、烧录模式选择,再到典型问题排查和高级技巧,手把手教你快速掌握FPGA烧录技术,提升开发效率。

weixin_42569329的博客 495

《生成式AI引发的“认知污染”:社交媒体虚假信息的治理困局》

认知污染与生成式AI“认知污染”指信息环境被大量虚假、误导性内容所充斥,干扰公众对事实的认知判断。在社交媒体时代,虚假信息的生产和传播门槛大幅降低,呈现出工业化、规模化的趋势。近年兴起的生成式人工智能(Generative AI)技术,如大型语言模型(LLM)和深度伪造(deepfake),更是加剧了这一问题。AI可以自动生成看似真实的文本、图像、音视频,将虚假信息批量生产并快速散播到社交平台上。

那谁的博客 5912

博弈论之威佐夫博弈

威佐夫博弈(Wythoff's game)是指的这样一个问题:有两堆各若干个物品,两个人轮流从任意一堆中取出至少一个或者同时从两堆中取出同样多的物品,规定每次至少取一个,至多不限,最后取光者胜利。 我们用(a[k],b[k]) (a[k] ≤ b[k] ,k=0,1,2,......n)来表示两堆物品的数量,并且称这个为局势。 首先我们来从最简单的情况开始分析: 如果现在的局势是...

不期而遇 1万+

异步FIFO的隐形陷阱:复位信号同步化实战解析

本文深入解析异步FIFO设计中复位信号同步化的隐形陷阱,重点分析赛灵思xpm_fifo_async原语在FPGA应用中的常见问题。通过实战代码和系统集成方案,提供复位同步化的最佳实践,帮助工程师避免跨时钟域通信故障,提升系统可靠性。

keras9composer的博客 244

数学知识——博弈论(巴什博奕、尼姆博奕、威佐夫博奕)思路及例题

争先恐后地博弈

WSY444的博客 5万+

Edge浏览器IE模式失效?最新142版本隐藏按钮的3种解决方案

本文针对Edge浏览器142版本中IE模式按钮消失的问题,提供了3种实用解决方案,包括注册表修改、手动添加网站到IE模式列表和企业策略部署方案,帮助用户解决兼容性问题,确保老旧系统正常访问。

weixin_28308325的博客 500

Windows下CMake的下载与安装详解

目录一、CMake介绍二、CMake的下载与安装 一、CMake介绍 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。 二、CMake的下载与安装 CMake下载链接:https://cmake.org/download/。 下载最新稳定版即可(Latest Release): 下载完成后,单击“Next”按钮,在下图中勾选“I acce

Wendy的博客 8万+

博弈论的算法总结

常见博弈算法模型总结 转载自大佬博客 文章目录常见博弈算法模型总结博弈:常见的博弈:巴什博弈:威佐夫博弈:尼姆博弈(Nimm Game): 博弈: 博弈论又被称为对策论(Game Theory),既是现代数学的一个新分支,也是运筹学的一个重要学科。 博弈,具体的例子就是下棋,双方都考虑最有利于自已的步骤,但是最终必有一方输,一方赢。 博弈的策略:参与者在行动之前所准备好的一套完整的行动方案,就是想好下完这步棋,对方会如何下, 以及接下来该如何下,最终得出结果。 常见的博弈: 博弈:合作博弈和非合作博弈

kylinholmes的博客 1万+

从LLM到VLM再到VLA:三兄弟的“变形记”——定义、架构演进与最新趋同

LLM、VLM、VLA虽然在时间上依次出现,但它们在架构上的演进并非线性替代,而是形成了一个从“理解语言”到“理解世界”再到“改变世界”的认知闭环。VLA之所以能在短短三年内从概念走向现实,正是因为它站在了LLM和VLM的肩膀上——RT-2的泛化能力来自互联网规模的VLM预训练,π0的扩散策略受益于生成式模型的突破,Helix的双系统架构借鉴了“快慢思考”的认知科学洞见。而反过来,VLA在实际部署中遇到的效率瓶颈和实时性要求,也在倒逼LLM和VLM向更轻量、更高效的架构方向演进。

Ven%的博客 490

巴什博弈、尼姆博弈、威佐夫博弈

一、巴什博弈(Bash Game) 只有一堆,n个物品,两人轮流取,每次至少取1件,至多取m个,最后取光者胜。 显然,n=m+1时,后手用。 假设n=(m+1)*r+s , 1<=s<=m , 则第一个人取m件,从后余下(m+1)*r件 。第二个人取k件,则第一人再取 m+1-k件。余下(m+1)*(r-1)件,让第二个人选,依次下去,到最后,余下m+1件让第二人选,从而第一个胜...

qq_36314344的博客 1407

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

威佐夫博弈证明

威佐夫博弈证明题目大意思路分析Betty定理通项推导扩展威佐夫博弈 最近在学博弈,写下威佐夫博弈的证明,巩固下对博弈的理解(奇异局势,NP状态,SG函数等) 题目大意 有两堆石子,两个人轮流取石子,有两种取法,一种是取一堆里的任意个,另一种是两堆同时取任意个,给出初始石子的数目,假设双方都采取最好的策略,问最后你是胜者还是败者。 思路分析 规定后手必胜态为奇异局势,且(0,0)为第0个奇异局势!!!。 又因为(a,b)与(b,a)是一样的,所以令(x,y)中,x<=y。 接下来的奇异局势: 显然,(0

AAAzsf的博客 803

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

博弈基础与例题分析(巴什博弈威佐夫博弈尼姆博奕 斐波那契博弈SG博弈)

博弈基础 A~C:三大博弈模板题目 D:斐波那契博弈模板 E~G:sg函数模板 H~J:三大博弈+方案输出 文章目录巴什博弈Bash Game威佐夫博弈Wythoff Game尼姆博奕斐波那契博弈:算法如其名sg函数模板A Brave GameB 取石子游戏C Matches GameD 取石子游戏E Good Luck in CET-4 Everybody!F S-NimG Calendar GameH 取(2堆)石子游戏I Public SaleJ 取(m堆)石子游戏 巴什博弈Bash Game

jhckii的博客 926

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

威佐夫博弈算法C++

在看本文章之前给大家说几句 如果你是先看了百度上的解释或者是其他文章,觉得很是繁琐,无法理解。 那么恭喜你,看本文会轻松很多。这里没有讲解原理之类的,只是结果。当你理解了之后,有兴趣的话就可以继续去钻研原理了。到时候会很轻松的。 当然我说的本文会轻松,但并不是说,跟1+1一样那么简单。还是需要你坚持一会。一会就可以明白的。加油 威佐夫博弈(Wythoff’s game)是指的这样一个问题:有两堆各若干个物品,两个人轮流从任意一堆中取出至少一个或者同时从两堆中取出同样多的物品,规定每次至少取一个,至多不限,最

weixin_44413364的博客 678

ACM基础博弈论知识总结(一)

前两天做了学长拉的博弈论的专题。今天终于把基本的简单的知识给搞定的,便来做个博弈论知识点的总结。 在比赛中用到博弈大多是 ,巴什博弈,斐波那契博弈,威佐夫博弈以及尼姆博弈,这是最常见的,也是用的比较多的,特别是最后一个博弈,可以延伸出很多知识,sg函数(sg定理),组合博弈等等。除此之外还有:取火柴游戏,阶梯博弈,反尼姆博弈,以及树上green博弈,基本上都算是尼姆博弈的变形,所以说尼姆博弈真的...

mumei的博客 2959

ACM-威佐夫博弈之取(2堆)石子游戏——hdu2177

ACM 威佐夫博弈 取(2堆)石子游戏 hdu2177 hdu1527进阶

继续激情,继续奋斗。 4908

博弈论之威佐夫博弈篇(poj1067)

博弈论之威佐夫博弈篇(poj1067) (简单看了一下poj上的通过率和内容之后选了这道题做,毕竟是为了练习Java?就不要选太复杂的了,手动狗头。) 博弈论 鉴于水平有限,就不给大家放一些概念性的东西了,可以自己百度。我理解的博弈论就是两个人之间进行公平对决都采用最优策略轮流对抗,直到分出胜负。 威佐夫博弈 有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每...

qq_43287656的博客 583

博弈论——巴什博弈、威佐夫博弈、尼姆博弈

博弈论是二人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜的目的。 个人观点:博弈论的本质就是思考哪些是必胜或者必败的状态,其他不定的状态如何向这两种状态转化。 巴什博弈 只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取m个。最后取光者得胜。 当 m≥nm\geq nm≥n 时,显然先手获胜 当m&lt;nm&lt; nm<n 时,不...

Kwong 822

威佐夫博弈

一、 有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者胜利 二、 分析:首先我们根据条件来分析博弈中的奇异局势 第一个(0 , 0),先手输,当游戏另一方面对( 0 , 0)时,他没有办法取了,那么肯定是先手在上一局取完了,那么输。 或者是当游戏另一方面对 (0,k)或 (k,0)时,先手一定输,后手可以...

JKdd123456的博客 280

威佐夫博弈论

((3, 5))同样是必败态,此时(k = 2),(\lfloor 2\times\frac{1 + \sqrt{5}}{2}\rfloor = 3),(3 + 2 = 5),以此类推。对于两堆物品,若两堆物品的数量分别为(a)和(b)((a \leq b)),当且仅当(a = \lfloor k\times\frac{1 + \sqrt{5}}{2}\rfloor),(b = a + k)((k)为自然数,(\lfloor\ \rfloor)表示向下取整)时,该状态为必败态。

2302_80700357的博客 594
上一篇: 最大子矩阵和
下一篇: 各种博弈
Puppet__
博客等级 码龄10年 319粉丝 328原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值