博弈论 总结

博弈论基础 博弈类问题大致分为,公平组合游戏、非公平组合游戏(绝大多数的棋类游戏)、反常游戏。只需要关注公平组合游戏(ICG)(ICG),反常游戏是公平组合游戏的变形,经济类博弈也不是博客所讨论的范围两个玩家轮流行动且游戏方式一致。两个玩家对状况完全了解。游戏一定会在有限步数内分出胜负。游戏以玩家无法行动结束。博弈的双方都被认为是神之个体,因为所有玩家对状况完全了解,且充分为自己打算,绝对理性当局面确定,结果必然注定,并且没有任何随机的成分。 阅读详情

这几天接触了下博弈论,感觉算法在生活中的应用无处不在

1.组合博弈

条件:

1)两个玩家,双方轮流操作

2)博弈局面的状态是一个集合,通常是有限的

3)规则制定玩家从一个局面到另外一个局面的合法步骤

4)当无法操作时候,博弈结束,常规情况认为无法操作的一方输,但在misere规则下,无法操作的为赢(其实无多大影响,改变最后的输出条件即可)

5)博弈可以在有限步数结束

必败点(P点) :前一个选手(Previous player)将取胜的位置称为必败点。(当你走到此点的时候,如果你无论怎么都输,这个点就叫做必败点。)
必胜点(N点) :下一个选手(Next        player)将取胜的位置称为必胜点。(当你走到此点的时候,以聪明的走法去走,可以赢对方)



算法实现:
步骤1:将所有终结位置标记为必败点(P点);(终结位置指的是不能将游戏进行下去的位置)
步骤2:将所有一步操作能进入必败点(P点)的位置标记为必胜点(N点)
步骤3:如果从某个点开始的所有一步操作都只能进入必胜点(N点) ,则将该点标记为必败点(P点) ;
步骤4:如果在步骤3未能找到新的必败(P点),则算法终止;否则,返回到步骤2。

题目链接:
HDU 1517 http://blog.youkuaiyun.com/deepseazbw/article/details/76783359(模板题目)

POJ  2599http://blog.youkuaiyun.com/deepseazbw/article/details/77186290(记忆化搜索P N态)

POJ  2068http://blog.youkuaiyun.com/deepseazbw/article/details/77334045(记忆化搜索)



2.Nim博弈

Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games”(以下简称ICG)。满足以下条件的游戏是ICG(可能不太严谨):

1、有两名选手;

2、两名选手交替对游戏进行移动(move),每次一步,选手可以在(一般而言)有限的合法移动集合中任选一种进行移动;

3、对于游戏的任何一种可能的局面,合法的移动集合只取决于这个局面本身,不取决于轮到哪名选手操作、以前的任何操作、骰子的点数或者其它什么因素;

 4、如果轮到某名选手移动,且这个局面的合法的移动集合为空(也就是说此时无法进行移动),则这名选手负。根据这个定义,很多日常的游戏并非ICG。例如象棋就不满足条件3,因为红方只能移动红子,黑方只能移动黑子,合法的移动集合取决于轮到哪名选手操作。


通常的Nim游戏的定义是这样的:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。

这游戏看上去有点复杂,先从简单情况开始研究吧。如果轮到你的时候,只剩下一堆石子,那么此时的必胜策略肯定是把这堆石子全部拿完一颗也不给对手剩,然后对手就输了。如果剩下两堆不相等的石子,必胜策略是通过取多的一堆的石子将两堆石子变得相等,以后如果对手在某一堆里拿若干颗,你就可以在另一堆中拿同样多的颗数,直至胜利。如果你面对的是两堆相等的石子,那么此时你是没有任何必胜策略的,反而对手可以遵循上面的策略保证必胜。如果是三堆石子……好像已经很难分析了,看来我们必须要借助一些其它好用的(最好是程式化的)分析方法了,或者说,我们最好能够设计出一种在有必胜策略时就能找到必胜策略的算法。




2道Nim博弈的题目:

HDU 1730  http://blog.youkuaiyun.com/deepseazbw/article/details/77046444(Nim博弈的分析转化)

HDU 1907http://blog.youkuaiyun.com/deepseazbw/article/details/76982719(模板题目)

3.威佐夫博弈

有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
这种情况下是颇为复杂的。我们用(a[k],b[k])(a[k] ≤ b[k] ,k=0,1,2,...,n)( a[k] 其中 k 为下标 )表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。
奇异局势:针对最后去光者胜利,先手必输。
判断一个局势是否为奇异局势?公式如下:
a[k] = [k(1+√5)/2](a[k]这个方括号为下标运算符,[k(1+√5)/2]这个方括号为取整运算符),b[k] = a[k] + k 。奇妙的是其中出现了黄金分割数(1+√5)/2 = 1.618...因此,由a[k],b[k]组成的矩形近似为黄金矩形,由于2/(1+√5)=(√5-1)/2,可以先求出 j = [a(√5-1)/2],若 a = [ j(1+√5)/2],那么a = a[j],b[j] = a[j] + j,若不等于,那么a = a[j]+1,b = a[j] + j + 1,若都不是,那么就不是奇异局势。然后再按照上述法则进行,一定会遇到奇异局势。
判断方法:min(a,b)与a[k]是否相等,若相等则为奇异局势,先手输(k=|a-b|,a[k] =  [ k(1+√5)/2],) 
题目:

http://blog.youkuaiyun.com/deepseazbw/article/details/77160818 (威佐夫模板题)
4.阶梯博弈
阶梯的序号如图所示,地面表示第0号阶梯。每次都可以将一个阶梯上的石子向其左侧移动任意个石子,没有可以移动的空间时(及所有石子都位于地面时)输。
阶梯博弈可以看成奇数阶梯的Nim博弈。
原因:假设我是先手,第一次移动按照Nim博弈的规则移动,如果对手移动奇数阶梯的石头,我们接着按照Nim博弈的规则移动奇数阶梯的石头,如果对手移动的是偶数阶梯的石头(到达了下一个奇数阶梯的石头),我则将对手移动的石头接着往下移动到下一个偶数阶梯。

题目:
POJ 1704 http://blog.youkuaiyun.com/deepseazbw/article/details/77245590(阶梯博弈的模板题)

5.联合组合博弈
n个组合博弈联合起来的博弈
例:POJ 2599是一个棋子在有向无环树上判断输赢(组合博弈), POJ 2425确实多个棋子在无向无环树上判断输赢(联合组合博弈)。
组合博弈可以直接得到SG值,而联合组合博弈由于数据量较大,maybe很多数据要重复利用,所以会打表存储SG值。
著名的SG定理:(很多的博弈论题目都会用到它)





题目:

POJ 2599http://blog.youkuaiyun.com/deepseazbw/article/details/77186290(理解组合博弈)

POJ 2425http://blog.youkuaiyun.com/deepseazbw/article/details/77189612(理解联合组合博弈)

HDU 1848http://blog.youkuaiyun.com/deepseazbw/article/details/77148400(SG定理的模板题目)

6.直接总结规律

对于部分题目,直接总结规律,要比利用上述方法简单暴力

题目:

抢n游戏 http://blog.youkuaiyun.com/deepseazbw/article/details/56485339

三子连 http://blog.youkuaiyun.com/deepseazbw/article/details/75807701

POJ 1740http://blog.youkuaiyun.com/deepseazbw/article/details/77258057

POJ 2484http://blog.youkuaiyun.com/deepseazbw/article/details/77161112





博弈论 —— matlab 1.简介 2.算法原理 3.实例分析 1.各参数初始化 2.计算期望与实际期望 3.博弈过程 4.绘图 完整代码 阅读详情

相关推荐

【博弈论】ACM博弈论知识总结

博弈论的入门令我十分痛苦,网上(包括竞赛教材)往往都只说怎么做,却不说为什么。综合各个资料,我详细总结了一下博弈论的知识,希望能对后来人也有所帮助吧 引入 1.游戏 ACM博弈论中考察的游戏大都以如下形式进行: ①两人轮流操作,每次可以在合法的操作集合中选取一种操作进行,游戏的局面/状态会随着操作而发生改变 ②这个合法的操作集合会随着局面的改变而发生改变: 比如在取石子的游戏中,规定可以取{1、3、5}个石子,在场上有6个石子时合法操作集合为{1、3、5},但是如果现在只剩下2个石子,那合法操作集合就变为了

Qiuker_jl的博客 3868

人工智能第5章 对抗搜索

人工智能第5章 对抗搜索

weixin_42062229的博客 2375

博弈论 —— python

1.简介 2.算法原理 3.实例分析 1.各参数初始化 2.计算期望与实际期望 3.博弈过程 4.绘图 完整代码

PY洋洋 6433

博弈论 详解

博弈论 ,是经济学的一个分支,主要研究具有竞争或对抗性质的对象,在一定规则下产生的各种行为。博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。 对于算法竞赛中的博弈问题,一般具有以下特征: 博弈模型为两人轮流决策的非合作博弈。即两人轮流进行决策,并且两人都使用最优策略来获取胜利。 博弈是有限的。即无论两人怎样决策,都会在有限步后决出胜负。 公平博弈。即两人进行决策所遵循的规则相同。 本文针对常见的几种博弈:巴什博弈、威佐夫博弈、斐波那契博弈、NIM博弈以及解决公平组合博弈的SG函数定理进行解

HeartFireY的博客 1万+

【博弈论】博弈论题单&&题解

会不断更新的(咕咕咕) 文章目录1.hdu-1847 Good Luck in CET-4 Everybody! 1.hdu-1847 Good Luck in CET-4 Everybody! 题目链接:hdu-1847 题目大意: 两个人轮流从n张牌中取牌,每次只能取{1,2,4……}等2的幂次张牌。最后把牌取完的人获胜 分析: 直接推SG函数,发现规律:只要n%3==0则先手必败 这个规律和巴什博弈很像 其实这道题和巴什博弈也很像,都是从一堆东西中取东西,只是对取牌数量的限制不一样而已 3张牌是一.

Qiuker_jl的博客 2660

博弈论入门

博弈论入门1. 1 博弈论1. 2 博弈和解1. 2. 1 非合作与合作博弈1.2.2 战略博弈和扩展博弈1.2.3 完全与不完全信息博弈1.3 博弈论和竞争均衡理论1.4 理性行为 1. 1 博弈论 博弈论是一个分析工具包,它被设计用来帮助我们理解所观察到的决策主体相互作用时的现象。这种理论隐含的基本假设是:决策主体追求确定的外部目标(他们是理性的)并且考虑他们自身的知识或其他决策主体行为的期望(他们推理具有战略性)。 博弈论模型是对各种现实生活状况的高度抽象概括。这种抽象性使得它们可被用来研究范围很广的

wangyifan123456zz的博客 2446

博弈论

博弈论 摘自https://blog.youkuaiyun.com/lgdblue/article/details/15809893 一、巴什博弈 1、问题模型:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个,最后取光者得胜。 2、解决思路:当n=m+1时,由于一次最多只能取m个,所以无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜,所以当一...

mrcrack的博客 2570

【博弈论】【第一章】博弈论导论

考虑反应对的情形:在本示例中,我们采取的是当A=3时,B选择X1,A再选择Y1,使得X1+Y1=12(我们把这种情形称之为A对B的应对),进而A能保证赢。若所报的数字之和不超过100,则每人得到所报的钱数(多余的钱充公)﹔若两人所报的数字之和超过100且数目不同,则报较小数的人得到白己所报的钱数,而另一个人则得到剩余的钱;同理,问题可变为抢87[=99-(3+9)],75,63,51,39,27,15,3,继续逆推,就是先抢到3,会赢。同理,问题可变为抢76,64,52,40,28,16,4,继续逆推(

Gorege__Hu的博客 4269

专业学习|博弈论-博弈论概述

博弈论是一种分析个体决策问题的理论工具,广泛应用于经贸关系、军事威胁等领域。通过构建不同模型来探讨利益冲突下的均衡解,并提供新思想与知识。博弈模型强调换位思考、效用理论及风险偏好等概念,帮助理解决策过程。博弈论表述方式有扩展型和策略性,其中扩展型表述需明确定义参与者、行动顺序、信息掌握情况及可能的行动组合收益。非合作博弈追求期望效用最大化,博弈树则有助于分析有限参与者或可数行动选择的情况。模型构建需明确问题定义,同时处理不确定性与信息集。具体案例如诉讼博弈和华为CFO孟晚舟事件模型展示了博弈理论在实践中的应

weixin_63253486的博客 5870

怎么用matlab进行博弈论计算,博弈论的Matlab算法包

博弈论的Matlab算法包发布时间:来源:人大经济论坛《博弈论》的诞生是个传说,这个传说造就了多位诺贝尔经济学奖。现在它的发展还远远未了,每一次进步都会让全世界的数学家、经济家激动不已。提供博弈论的Matlab算法工具箱,全都用matlab编写,下面包中的函数列表。把这个直接解压到matlab的应用文件夹下,就可以当作自身的工具一样应用它。%% Functions:% grBase - find ...

weixin_39782355的博客 4213

博弈论 入门总结

(收集于网络) 博弈论:是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论。博弈论是研究互动决策的理论。博弈可以分析自己与对手的利弊关系,从而确立自己在博弈中的优势,因此有不少博弈理论,可以帮助对弈者分析局势,从而采取相应策略,最终达到取胜的目的。(摘自百度百科) (一)巴什博奕(Bash Game) 只有一堆n个物品,两个人轮流从这堆物品中取物,

Hanks软件库 2905

博弈论常见模型

1、博弈论概念 博弈论(Game Theory),博弈论是指研究多个个体或团队之间在特定条件制约下的对局中利用相关方的策略,而实施对应策略的学科。有时也称为对策论,或者赛局理论,是研究具有斗争或竞争性质现象的理论和方法,它是应用数学的一个分支,既是现代数学的一个新分支,也是运筹学的一个重要学科。目前在生物学、经济学、国际关系学、计算机科学、政治学、军事战略和其他很多学科都有广泛的应用。主要研究公式化了的激励结构(游戏或者博弈(Game))间的相互作用。 2、博弈论分类 3、部分博弈论术语解释 1)合作博弈

lllzzzhhh2589的记录 3万+

Ubuntu18.04下Carla安装——经验史

Ubuntu下的Carla安装

m0_51267207的博客 2680

【算法】博弈论

博弈论是研究具有斗争或竞争性质现象的数学理论和方法。它考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。

Guiat的博客 1804

FID指标实战:如何用Python快速计算生成图像的质量分数(附完整代码)

本文详细介绍了如何使用Python计算Fréchet Inception Distance(FID)指标,以评估生成图像的质量。通过完整的代码示例和优化技巧,帮助开发者快速实现FID计算,并解读分数背后的实际意义,适用于GAN和扩散模型的性能评估。

weixin_28718487的博客 377

onnxruntime-gpu版本选择与CUDA环境配置实战指南

本文是onnxruntime-gpu版本选择与CUDA环境配置的实战指南。针对AI模型部署中常见的GPU无法调用问题,核心在于确保onnxruntime-gpu版本与系统CUDA Toolkit版本严格匹配。文章详细讲解了如何精准确定CUDA版本、查找官方对应关系、执行正确安装命令,并通过完整测试脚本验证GPU是否成功启用,最后提供了常见问题排查与生产环境调优建议。

weixin_29164091的博客 525

博弈论与人工智能

博弈论与人工智能 概要 ​ 本文主要阐述: 什么是博弈论? 博弈论如何应用于人工智能 介绍 ​     《美丽心灵》这部经典影片,相信很多人都看过。这部影片的主人公就是诺贝尔经济学奖获得者 John Nash.     在影片的一个经典场景中,Nash说到 “….the best outcome woul...

weixin_43171270的博客 9137

海康SDK实战:如何从PS流中提取H264裸流并实现前端播放(附完整代码)

本文详细介绍了如何利用海康SDK从PS流中提取H264裸流,并构建无插件前端播放的完整链路。通过解析PS流结构、提取H264 ES流,结合WebSocket实时传输与WFS.js前端播放器,实现了低延迟、高可控性的视频流处理方案,为开发者提供了从数据源到前端渲染的实战代码与清晰指南。

weixin_29051811的博客 477

博弈论66个经典例子_博弈论 之 纳什均衡

纳什均衡,又称为非合作博弈均衡,是博弈论的一个重要术语,以约翰·纳什命名。在一个博弈过程中,无论对方的策略选择如何,当事人一方都会选择某个确定的策略,则该策略被称作支配性策略。如果两个博弈的当事人的策略组合分别构成各自的支配性策略,那么这个组合就被定义为纳什均衡。一个策略组合被称为纳什均衡,当每个博弈者的均衡策略都是为了达到自己期望收益的最大值,与此同时,其他所有博弈者也遵循这样的策略。纳什均衡的...

weixin_39848097的博客 5万+

JavaFx之集成FontAwesomeFX与JFoenix(十五)

本文详细介绍了如何在JavaFx项目中同时集成JFoenix和FontAwesomeFX,以创建现代化、美观的桌面应用界面。通过Maven依赖配置、动态代码创建和FXML静态声明两种方式,演示了如何将JFoenix的Material Design控件与FontAwesomeFX的丰富矢量图标完美结合,并提供了实战案例展示如何构建一个功能完善的现代化工具栏。

pepsi的博客 437

2021.02.23丨Virsorter2安装使用及答疑

最近项目比较多,又在学英语,写文章的时间少了很多。最近接到一个病毒组装的项目。用之前组装工具(ABYSS、SPAdes)都没有能够组装较为完整的scafford,今天介绍一款专门用于组装病毒的工具——Virsorter。 Virsorter最早版本发布于2015年,目前已经有了第二个版本。主要用于病毒的组装的注释。详细情况可以查看文章:https://peerj.com/articles/985/ 安装流程 安装文档: https://github.com/jiarong/VirSorter2/b

4836
上一篇: HDU 1730 Northcott Game (Nim博弈)
下一篇: HDU 3790 最短路径问题 (dijkstra+路长和权值)
深海沧澜夜未央
博客等级 码龄10年 763粉丝 552原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值