我个人的理解是,通过分析与事情有关的所有元素,在力所能及的范围内寻求最好的结果 ,前半句即博弈,后半句为博弈的意义。
博弈的深层意义在于,所得的最优策略与对手在博弈中的操作没有依存关系。简言之,其理性思想就是 抱最好的希望,做最坏的打算。
博弈理论假定参与博弈的人必须是理性的,理性的人在博弈过程中会将 自身利益最大化 作为目标。其实这未必不是博弈的局限性,记得前段时间看到的一篇博客很有意思:在一个狼吃羊的AI智障游戏中,狼发现自己吃不到羊,直接选择了「自杀」。然而,狼选择撞石的原因竟是「自杀分数高」!(全文在这里)
出现自杀这一博弈结果的主要原因当然是在训练过程中将分数设置成了权重最大的项,甚至重于生命,但也侧面印证了 局中人的绝对理性 。
博弈需要具备的要素通常有五个方面:
局中人
两人博弈 or 多人博弈
策略
得失
局中人博弈的得失与两个因素相关:一是其自身所选定的策略,二是其他局中人所选定的策略。每个局中人在博弈结束时的得失可根据所有局中人选定的一组策略函数来判定,这个函数称为 支付函数 。
次序
均衡
博弈通常都有一个 稳定的结果 ,谓之均衡,或称平衡。
上面讲到的 动态博弈 与 静态博弈 的划分;有限博弈 与 无限博弈 的划分。都是博弈的分类方法。而经济学中通常将博弈分为:非合作博弈 和 合作博弈。
非合作博弈比合作博弈更简单,理论也更成熟。根据复合特征来划分,非合作博弈可分为四类:
完全信息静态博弈: 对应的均衡概念是 纳什均衡 。
完全信息动态博弈: 对应的均衡概念是 子博弈精炼纳什均衡 。
不完全信息静态博弈: 对应的均衡概念是 贝叶斯纳什均衡 。
不完全信息动态博弈: 对应的均衡概念是 精炼贝叶斯纳什均衡 。
完全信息博弈:每位参与者都能准确地知道所有其他参与者的行为,以及整个博弈结构;
不完全信息博弈:在这类博弈中,每位参与者对所有其他参与者的信息不够了解,或不了解整个博弈结构。
在上文中提到,博弈的意义在于找到 最好结果,但要明白的是,在 有限博弈 中,这个最好结果是是个人最优解而非团体最优解。也就是 在保障自身利益的前提下,每个人的策略都是对其他人的策略的最优反应。 我们通过 约翰·纳什 创造的 囚徒困境 博弈故事进一步解释:
虽然对于团体而言最优解是大家都不揭发对方,然而对于囚徒而言:
这个结果说明了 纳什平衡 的存在,即在非合作博弈中存在一个均衡解,这个解可使博弈双方的利益都获得保障,这个解并非团队最优解,却是个人最优解。
囚徒困境是一个 非合作博弈 ,原因在于博弈次数只有一次,即有限博弈。有限博弈下,无论之前选择了多少次合作,最后一次局中人必然会选择背叛对方以寻求个人利益最大化,可以理解为:
但是,如果是 无限博弈 ,并且是 多人博弈 的话,就会呈现 合作博弈 。
在上一个囚徒困境的基础上,如果抓紧来的是犯罪团伙,并且不告诉它们要审问他们多少次,只告诉他们还是刚才的规矩,不过每个人的坐牢时间是根据每次审讯结果累加。在这种情况下,囚徒们就会意识到:如果持续选择都沉默,大家一起每轮多坐五年牢;如果持续选择彼此揭发,大家每轮多坐八年牢。通过这样的思考,参与者之间合作的动机就非常明显了。
针对 无限多人博弈 ,罗伯特·阿克塞尔罗德制定了类似的实验,最终取得 最好结果(对于变种囚徒困境而言就是坐牢时间最少的囚徒,阿克塞尔罗德的实验中是得分最高的程序)
的程序一般具有三个特点:
这种一报还一报的策略不仅优秀而且清晰,其特性通常在几次博弈后就能被清晰地辨识出来(其他程序:这个程序是个狼灭,不好惹,只有主动和他合作才能赢!),而其他复杂的策略并没有得到优秀的结果,对手无法总结与其相处的规律。
罗伯特·阿克塞尔罗德的研究揭示了合作的必要条件:
零和博弈是最常见的博弈,零和博弈属于非合作博弈。即参与博弈赛局的双方,在严格遵守博弈规则的前提条件下,若是其中一方可以获得利益,也就意味着另一方的利益必然受损。所以,博弈双方的收益和损失之和永远为零,即博弈双方不存在合作的可能。
与之对应的是 合作双赢,即在某种程度上保证双方达成 利己且不损人 的合作关系。通常是因为在零和博弈中双方都没有很大把握能一定胜出、而失败的成本太大的情况下。
通过两种囚徒困境的探讨,我们发现当博弈仅进行一次,人们往往更加关心它的最终结果;当博弈重复多次,人们将舍弃眼前利益而选取更长远的利益,即如单次博弈结果的利益让步与总体博弈结果的利益。影响重复博弈最终结果的因素,主要是重复博弈所进行的次数以及信息的完整性。
可以将重复博弈总结成三个基础特征:
智猪:有智慧的猪,哼哼~
智猪博弈是纳什理论中的一个经典例子。若一个猪圈里有一头大猪,还有一头小猪,在猪圈的一边有一个投放饲料的猪槽,猪槽旁边安放着一个可以控制猪槽投食量的按钮,假设我们按一下这个投食按钮,猪槽内便会出现 10
个单位的猪食,但是想要按这个按钮,则需要拿出 2
个单位的猪食作为成本。在此种情况下,
9:1
;7:3
;6:4
。若是两头猪都非常有智慧,那么小猪便会在猪槽边等待着。
9:1
,这样计算得出小猪最后的净收益为吃掉的 1
个单位减去按开关损失的 2
个单位(1-2=-1
)单位的猪食。6:4
,扣除按开关所需要的 2
个单位的猪食,大猪最终得到的只有 4
个单位的猪食;1:5
(减去按开关的成本)。0
。而对于博弈中的劣势方小猪来讲,自己去按开关,得到的纯收益必定是 -1
,但是如果自己不去按开关,一、大猪按开关,得到的纯收益为 4
。二、大猪也不按开关,两只猪的纯收益都是 0
.由此看来,不论大猪是选择主动行动还是等待,小猪都选择等待的收益要高于选择行动所获得的利益,这便是小猪在此次博弈中的占优策略。
通常将小猪的这种方法称为 坐船 或 搭便车 ,暗示人们在博弈中如果占据劣势,且时间损失不会对最终受益造成影响时,等待也是一种明智之举。
Chicken Game
又名懦夫博弈。假定这样一种情景:狭路相逢,
这种博弈思想的价值,私以为在于进一步证明纳什均衡原理。在此博弈中,有两个纳什均衡点:A 进 B 退;A 退 B 进。
纳什均衡点:其他参与者策略保持不变时,当前参与者的选择是最优的,这样就组成了一个混合收益最大化的策略组。
最早出现在卢梭的《论人类不平等的起源和基础》一书中,又名安全博弈、协调博弈。
猎鹿博弈源于一则故事:在一个村庄中有两个猎人,这个村庄主要有两种猎物:鹿和兔子。一个猎人只能捕捉到 4
只兔子,如果两个猎人合作就能捕到 1
只鹿。而站在填饱肚子的角度看,捕到 4
只兔子能够成为 4
天的食物,但是 1
只鹿足以让两个猎人在 10
天内都不用外出捕猎。
由此一来,这两个猎人的行动策略就会产生两个纳什均衡点,即:
虽然两个猎人合作可以获得的收益远超单独行动的收益。但是这要求两个猎人在合作过程中,个人能力和付出是相等的。(能力不等的情况下大家都是理性人,当然会要求付出多的收获占比多啦。)
蜈蚣博弈的提出者是罗森塞尔,它指参加博弈的 A
和 B
,分别有 合作、背叛 两种策略可供选择。规则是 A
先进行选择,再由 B
做出选择,再轮 A
做出选择……
举个例子,如果双方需要博弈十轮:
网上的资料中没有对收益结果进行解释,所以我一直对最后一次不合作的结果是 (8,11)
而不是(9,11)
而感到困惑,我个人分析收益是这样计算的:
A
就不合作双方的收益仍是(1,1)
可以推测博弈开始前,双方手里就各有一个筹码。A
合作、B 不合作双方的收益是(0,3)
,会发现 A
手里的一个筹码没了,但 B
多了两个筹码。因此合作的前提可能是 A、B
都拿出来一个筹码,如果双方选择合作则都收获一个筹码,之前拿出来的筹码也可以收回;如果 A
选择背叛则 B
不需要拿出来筹码,博弈结束;如果 B
选择背叛则 A
失去它拿出来的筹码,B
自己获得两个筹码。
如果一直合作,那么最终总体收益可达最大值 20
,但根据理性人原则,B
会在最后一轮博弈中选择背叛,以拿到 11
的收益,大于选择合作的 10
收益。那么 A
亦会在 B
选择背叛前先背叛,那么它就能拿到 9
收益,大于 B
背叛时的 8
收益……以此类推,得到的答案是 A
会在刚开始就选择不合作,那么 A
和 B
所获得的最终收益是 1
。
蜈蚣博弈的悖论
不难看出,在上面的推理过程中,运用的是逆推法。从逻辑推理来看,逆推法是严密的,但结论是不合理的。虽然 A
一开始采取合作性策略有可能获得 0
,但 1
或者 0
与 10
相比实在是很小。直觉告诉我们采取 合作 策略是好的。而从逻辑的角度看,A一开始应选择 不合作 的策略。人们在博弈中的真实行动偏离了运用逆推法关于博弈的理论预测,造成二者间的矛盾和不一致。
假设有 100
个人都喜欢去酒吧消遣娱乐,若我们设定酒吧的座位数是 60
,那么想要去酒吧的人便会有两种决策:一种是不去,待在家中,另外一种是去。假设所有的人都去酒吧,那么去酒吧的人就会感到不舒服,而这时他们会觉得待在家中要比去酒吧更好。那么,这 100
个喜欢去酒吧的人最终将会做何选择呢?
其实这些喜欢去酒吧的人,往往会受上一次酒吧人数的影响,进而产生一些人数上的浮动,久而久之便会形成一种持续性波动的情况。这是由切斯特·艾伦·阿瑟博士提出的,他的理论如下:
60:40
。从心理学的角度来看,最初去酒吧的那些人可能互相不熟悉,但是由于经常去酒吧而且能够遇见对方,久而久之便会由陌生人变成朋友,那么在这种情况下,便会由零散的个体变成一个大的群体,而这个整体中又会分支出小团体,而且这些小团体中的人,有一部分会占据主导地位,另一部分人会处在服从地位。这就意味着团体中的每个人的决策都会受到他人的影响。
枪手博弈是指,枪手甲乙丙三人相互怨恨,以决斗的形式进行一场博弈。其中,甲的枪法最准,命中率 80%
。乙的枪法在甲之下,命中率 60%
。丙的枪法最差,命中率 40%
。假设在三人都了解彼此实力并能理性判断的情况下,会出现以下两种情况:
第一种情况:
现在我们可以分别计算三人活下来的概率:
40%×60%
,所以甲活下来的概率为 24%
。20%
的未命中率,就相当于乙的存活率为 20%
。100%
。由此我们可以看到,在这一轮的决斗中,丙枪法最差但活下来的概率却最大。而甲和乙的枪法都远大于丙,存活率却都比丙低。
第一轮过后,有三种情况:
现在我们可以分别计算三人活下来的概率:
第二种情况:
由丙先开第一枪,那么可能如下:
我们会发现,优势最小的丙,反而可能是不是最先死掉的,因此,在多方非合作博弈中,优势最小的往往可以在暂时安全的环境下,抓紧机会提升自己。当然,如果不能在暂时安全的环境下提升能力的话,当面对双人非合作博弈时,难免处于失败者的位置。简言之,实力最差的并不一定是输的最快的,但终究是需要提升自我的,否则即使能安全一时、但仍然难免落入败局。
在某个小镇上只有一名警察,整个小镇的治安全部由他负责。此时,我们假设这个小镇上的一头有一家银行,存了 2 万元;而小镇的另一头有一个酒馆,存了 1
万元。若这个小镇上还有一名小偷,当这个小镇上的警察在小镇的一头巡视时,小偷只能去小镇的另一头进行偷盗。
假想一下,当小镇的警察正好在小偷采取行动的地方巡视,便能不费吹灰之力地抓住小偷;若是小镇的警察的巡视方向恰好与小偷采取偷盗行为的方向相反,那么小偷便能在不被警察抓到的情况下成功偷盗。那么如何才能将小镇的损失降到最低呢?
警察最好的做法是利用抽签的方式决定去小镇的银行还是酒店。由于小镇银行中所需保护的财产是酒馆的两倍,因此用 1、2
号两个签表示小镇的银行,用 3
号签表示酒馆,这样一来,警察去银行巡视的机会将达到 2/3
,而去酒馆巡视的机会将是 1/3
。
在小镇警察的此种策略下,小偷的占优策略则要与警察相反,同样采用抽签的方式,与警察不同的是小偷用 1、2
号签表示去酒馆行动,而用 3
号签表示去银行,由此一来,小偷去酒馆行动的概率是 2/3
,而去银行的概率仅有 1/3
。
如果双方都选择最佳占优策略的话,警察和小偷的成功率是相等的(过程有些繁琐,可选择跳过),分析如下:
如果警察和小偷都是理性人的话,警察可以猜到小偷的概率,小偷也可以猜到警察的概率。
2/3*1/3+1/3*2/3=4/9
,小偷成功概率 1-4/9=5/9
;1/3*1/3+2/3*2/3=5/9
,小偷成功概率 1-5/9=4/9
;5/9
,小偷成功概率 4/9
;4/9
,小偷 5/9
。最后相加综合期望,双方成功概率都为 1/2
。(这波啊,这波叠加就是千层饼~)
而如果警察和小偷扔硬币去决定守、偷哪出地点。这样就模糊了自己策略的倾向性,结果就具有偶然性。博弈取胜的要点在于运用其中的偶然性,针对对方是否发现你的某些策略性行为做出及时应对,进而保证自己成功的概率。总结来讲还是说明信息在博弈中的重要性。
有五个海盗(记为1、2、3、4、5号)掠得 10
枚金币,决定以抽签的方式依次提出分金方案,并由五人共同表决。要想通过方案,必须有超半数的人同意才可以,否则这个人将会被扔进大海。
与其从前往后一个一个地想每个人会怎样选择,不如先把问题简单化,若只剩下最后两人的话,他们会怎么做呢?
1、2、3
号都被投入海中,那么 5
号必定反对 4
号把一百枚金币全部收入囊中。因此 4
号只有同意 3
号的方案才有可能保命。(100、0、0)
的分金方案,因为他清楚地知道即便4号一枚金币也分不到,也仍然会同意他的方案。2
号猜到 3
号的策略,就会采取 (98、0、1、1)
的方案,因为 2
号只要稍微照顾到 4、5
号的利益,4、5
号就会向他投赞成票,而不希望 2
号出局让 3
号分配。1
号同样猜到 2
号的意图,就会采取 (97、0、1、2、0)
或者 (97、0、1、0、2)
的方案。对于 1
号来说,只要放弃 2
号,再分给 3
号一枚金币,给 4
号或 5
号两枚金币。巴什博弈: 一堆物品有 n
个,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取 m
个。最后取光者得胜。
巴什博弈是一种 动态、完全信息博弈 ,即局中人的行动有先后顺序,且后做出选择的人知道先做出选择之人的行动。
如果一方拿取时,还剩 m+1
个,那便是 必败局,因为此时不论你拿走多少个,下次对方一定可以全部拿完。
其他情况则是 必胜局 。因为如果还剩 m+1+k
个(0 < k <= m
),我只要拿走 k
个,那么对方就面临 m+1
个。可能有人在想 0 > k > -m
怎么办?没什么多说的,还是必胜局,我直接拿走剩下的全部。
扩展:如果 n = x(m+1)
,先拿的依然面对必败局,先拿的拿 p
个,后拿的拿 m+1-p
个,先拿的第二轮拿的时候,还剩 x-1(m+1)
,重复 x-2
轮,先拿的又面对 m+1
了。
反之,如果 n=x(m+1)+k
,先拿的面对必胜局,先拿的拿走 k
个,则后拿的面对 x(m+1)
,重复上一段的过程。
因此,可以得到代码:
#include
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
if (n % (m + 1) == 0)cout << "second win" << endl;
else cout << "first win" << endl;
return 0;
}