0x00 前言
在姐妹篇《深入博弈论》中,通过一些简单的案例带大家认识博弈的过程和方法。
这个篇章正式聊一下怎么用博弈论玩狼人杀。
0x10 狼人博弈
首先我们要知道,狼人杀的规则是什么,他是一个什么样的博弈。
以狼人杀最简单的桌游规则为例,我们除去法官之外,一共有 2 个阵营 3 种身份牌 10 个玩家:
- 坏人阵营:狼 4 个
- 好人阵营:神职 2 个(女巫和预言家)
- 好人阵营:村民 4 个(无身份无技能)
狼彼此知道身份,所有玩家需要彼此猜测身份。
每轮对局为 1 天,行动顺序为:
- 狼晚上杀 1 人
- 神晚上验 / 救 / 杀 1 人,被杀无遗言
- 全员白天按顺序发言
- 全员白天必须投票并投死 1 人,投死有遗言
胜利条件:任一阵营团灭,另一阵营获胜。
从游戏规则上可知,因为不同身份掌握的信息量不一致,而且每个人的行动具有顺序,因此狼人杀属于不完全信息的动态博弈。
既然是博弈游戏,那么最终答案必然是纳什均衡解,但由于狼人杀规则复杂,导致每一个对局都是极其复杂的混合决策,这个解并不是简单推演就能计算出来的。
0x20 推演身份概率
为了方便说明推演的方法,不妨用一些符号简化这个游戏。
10 个玩家,每个玩家的身份他自己是知道的,而在外人看来则是一个 p<W, G, V>
向量(即概率函数),其中:
- W 表示 wolf 狼
- G 表示 God 神
- V 表示 Village 村民
那么狼人杀就是在已知自己身份的前提下,通过猜测其他人的身份概率,使得己方阵营胜率最大化的游戏。
刚开局,因为所有人身份不明,每个玩家都有一份自己视角的概率向量:
第 N 行表示第 N 号玩家看其他玩家时,每个玩家的身份概率向量
第 M 列表示第 M 号玩家在其他玩家看他时,别人认为他是什么身份的概率向量
例如:
- 1 号玩家,是狼,他清楚狼队友是谁,只是不清楚神职是谁,因此在他眼中其他玩家身份的概率向量就是第 1 行
- 10 号玩家,是村民,他除了自己,不清楚其他任何人的身份,因此他眼中其他玩家身份的概率向量是第 10 行
这张分布网络就是各个玩家初始的身份概率分布。
随着游戏对局的进行,根据不同玩家的行为和发言,这些概率向量会不断地发生变化。
游戏中途也会因为某些玩家自爆的原因,有些向量会提前固定,有些则一直还是概率值,但是最终游戏结束后,所有人的身份都必然是确认的。
游戏的难点在于,玩家的视角不仅仅要关注自己的概率向量,还要猜测其他玩家心中的概率向量。
随着参与人数的增多,这张概率分布图会形成成 2 阶、3 阶、4 阶 ,甚至无穷阶的狄利克雷分布。
虽然理论上是存在这么一个算法,在已知各个玩家身份的概率向量和关系的情况下,根据每一轮对局的信息分布标识出每个玩家最合理的身份结果,但很明显计算量极其庞大,在短时间甚至在对局中即时演算基本上是不可能的,因此求狼人杀的纳什均衡解是不现实的。
那么我们在游戏对局中应该怎样维护利用这张表呢?
0x30 策略语言
其实狼人杀在对局过程中的发言和行为都会构成很多小的逻辑链,这些逻辑链都会影响局部的概率向量。
因此我们可以通过有效的策略语言,尽早地锁定某些概率向量,在算法上也叫剪枝。
通俗来讲就是尽快猜测别人的身份、塑造自己的身份,使得对局往己方阵营有利的方向加速收敛。
那么什么样的语言才算是有效的策略语言呢?
在发言的时候:
- 首先报出我的视角的概率向量
- 然后报出我接着会执行的动作
只要这两个信息可以形成逻辑关系链,那么这个发言就存在置信度,它就可以影响别人视角的概率向量,从而引导其他人根据你的发言做出调整。
所有不符合策略语言的发言都是没有意义的,我们可以举一些例子:
【1 号这次发言没有用人格担保,我怀疑他是狼】
像这种发言因为没有理论依据,一般来讲是无效的,尤其是在第 1 天。
因为它要有意义其实是需要一个大前提的,例如经常一起玩彼此比较熟悉对方的发言风格。
不过在某些特定的场景它也可以发挥一定的作用,这个后面会详细说明。
这里特别提一下【我是有身份的人】其实是很尴尬的发言。
因为这个发言对塑造你的身份意义不大,有身份的人,可以是神,可以是狼,
视乎对局的进度,其实是很危险的:
- 对坏人阵营而言,因为你既然有身份,那只能是神职,对狼威胁最大,当天必死。
- 对好人阵营而言,你也可能很危险,尤其在对局中途有没有其他明显可针对的身份的时候,根据黑暗森林法则,有可能其他人试着捅你一刀,那就被投死了。
因此除非是要挡刀,类似这种发言一定要看时机去使用。
0x40 隐含数据
另外还有一些隐含通识,不论好人还是坏人阵营都是必须要清楚的,还是以 10 人局为例:
【最大对局数 <= 5】
1 天为 1 轮对局,晚上和白天各死 1 人,换而言之每天死 2 人。
因此一次游戏的对局数最多只有 10 / 2 = 5
轮。
另外因为神职只有预言家和女巫,这时会有一个隐含胜利条件:如果 坏人阵营 人数多于 好人阵营 人数,好人必败。
至于为什么,后面会分析
【发言次数 ≈ 3】
回想一下我们之前玩的时候,实际对局数很少能到 5 轮,一般第 3 ~ 4 轮游戏就结束了。
换言之每人发言的次数平均不过 3 次左右。
我们玩一局看似要花半小时很久,其实只是发言时间比较长导致的错觉。
清楚对局轮数,会对发言的决策时机有很大影响。
有很多人玩到第 3 轮还在隐藏身份担心暴露,表现的行为和身份格格不入,其实别人早就猜出你的身份了,只有你自己还在自欺欺人。
为了掩饰身份错过许多极佳的决策点,甚至把有用的信息带到棺材里,那就得不偿失了。
0x50 好人阵营策略
接下来我们分析一下好人阵营应该怎么玩。
好人阵营相对于坏人阵营而言,其实是处于不利的位置的:
- 首先好人掌握的信息最少而且不准确
- 其次好人没有先手优势
- 其三好人的有效活动时间只有白天
好人唯一的优势就是人数优势,他们只能通过白天的发言和投票去保持这个人数优势,维系对局进展。
这个时候如何发言就很重要了。
一个是前面提到的策略发言,要懂得如何隐藏或者获取更多信息。
还需关注的,就是发言的顺序,尤其是上下位关系,经常会被忽略掉。
因为先发言的人掌握信息是最少的,而且他不能反驳后发言的人的观点,因此排位越靠前的人会越沉默,而排位越靠后的人则会相对活跃。
那么在信息缺乏的情况下,尤其是第 1 天,排位靠前的人如果想要提高自己的存活率,他应该怎么做呢?
- 不要过早站队:在狼人杀里面第一印象很重要,因为身份概率分布过于复杂,许多玩家并不会深入推演你后面的行为是怎样的(可以联想一下前面的旅行者困境),那么在普通玩家的眼中,你的第一印象很可能就形成了你是好人还是坏人的身份,过早站队就会失去你后面塑造身份的主动权,可以再联想一下前面三国的例子,你在别人视角的信息越模糊,越有利于提高你的存活率。
- 不要塑造神职的身份:还是可以联想前面三国的例子,狼神民好比曹孙刘,神对狼威胁最大,不是被投死就是被杀死,反正活不长。
- 不要怼你的下家:在有一定信息的前提下,可以适当怼你的上家,拉拢你的下家
但是狼人杀并不是一个防守游戏,因为狼每晚是固定杀 1 人的,通过谨慎发言所获得的存活率收益,会随着对局进行急速下滑,如果好人都追求存活率,最终结果是必败的。
这个时候 神 和 民 就要思考自己的在阵营的作用是什么,最迟从第 2 轮对局开始就要调整策略了:
- 神:收集身份信息(俗称带节奏) => 扩大阵营
- 民:优先确保神存活(俗称挡刀)、其次确保自己存活 => 保持人数优势
只要清楚自己的作用,后面的行动策略就应该围绕它进行。
举个例子:
假如你是 4 号预言家,你在在第 1 天晚上验到 1 号是狼,而且好人阵营都是聪明 和 理性 的,那你在想隐藏身份的情况下,应该怎么带节奏呢弄死 1 号呢?
你可以说 【1 号这次发言没有用人格担保,我怀疑他是狼】。
这是一种没有理论依据的发言,在信息不明确的第 1 天说这种话,其实是不明智的。
但如果好人阵营都是聪明和理性的,其他村民就有理由推测 4 号玩家有可能掌握了信息才会这样发言,进一步推测他有可能是预言家。
既然好人能想到,那么坏人也能想到,如果这个预言家想要活下来,其他好人应该怎么办?
可能有人想到女巫,没错,但是随着对局的进行,预言家会越来越危险,女巫的解药是保底用的。
在对局最开始,村民应该尽可能避免解药被使用,这个时候村民就可以适当站出来挡刀:
例如你是 6 号村民,这个时候就可以站出来说【我没有更多信息,但我是有身份的人】。
这样说就可以转移狼对 4 号的注意力,因为在狼的视角,好人阵营只有 神和民 的区别。你既然有身份,那肯定是神,相对于 4 号模棱两可的身份,神对狼的威胁更大,因此你更容易成为狼的目标。
不过这些发言并不是每次都有用的,是不是经常一起玩狼人杀、当前对局已有信息的多寡,都会让这些发言有不同的效果,不能照搬使用,这里这是提供了一个思路。
0x60 坏人阵营策略
在狼人杀中好人是相对难玩的,因为信息少,而且缺乏主动权。
而坏人阵营则相对会简单一些,开局信息多,而且有先手优势。
严格来说,在这种 10 人局(4 狼 2 神 4 民)的配置下,两个神还都是没什么用的,如果不考虑什么听声辩位、微表情管理,狼的胜率是极高的。
因为其实狼人的优势是很多的:
- 信息多而精准
- 有先手优势:好人阵营只能根据狼人的决策行动
- 每轮对局可额外活动 1 次(晚上杀人)
- 默认处于共谋状态
我们如果以正常的方式去玩这个游戏,狼人完全可以在第 1 轮对局结束的时候就锁定胜局的。
什么是正常的方式呢? 就是大家都不应该在开局没有任何信息的情况下,给某些玩家套身份牌、或者做针对性的行动。
例如有好几次,当某人是好人的时候,他第一天晚上就死了,这就是不正常的开局。
因为狼人们认为某人很会玩,威胁性很大,甚至大过神职,优先把某人先杀死,其实这样决策是不对的。
如果按这种逻辑推论,如果某人第 1 天早上还活着,是不是说明他就是狼呢?
况且从以往对局来看,有自刀行为的只有我而已,某人没有自刀的爱好。
那么基于当前游戏角色配置的情况下,狼人如何在第 1 轮对局结束的时候就赢得游戏呢?
要知道好人阵营唯一的优势就是人数,这是他们掌握白天投票主动权的关键,因为只要某人被投超过半数(不含半数),那么这个人就会死。
那狼只要尽快消除人数差距,追平人数,使得好人阵营没有办法掌握白天投票的主动权,那么好人必败。
因此狼人还有一条隐含的胜利方式: 只要某一天投票环节结束后,坏人阵营人数 >= 好人阵营人数
, 坏人必胜。
既然要在第 1 天就锁定胜局,说明狼要想办法杀掉好人阵营里的 2 个人,而杀人时机只有 2 个:
- 晚上点杀
- 白天投票
首晚 6 个好人身份不明,那是不是可以随机点杀呢?
其实不是的。 6 个好人是有区别的,他们有发言顺序。
顺位越靠后的人,在白天掌握的信息越多,他的发言越有分量,对狼人的威胁也就更大。
因此首晚点杀最优决策是末位的好人,而不是在前面对局中看起来玩得最厉害的人。
有人会问,那女巫救人怎么办?
确实女巫救人就没办法第 1 天获胜了,正常继续玩就好。
但是在身份不明的情况下,如果女巫不知道狼人的企图,他救人的概率是低于 50% 的。
因为女巫会更倾向把解药留给自己或预言家,使得阵营利益最大化,毕竟把狼人自刀也考虑进来的话,首晚预言家被杀的几率只有 1/10
,女巫是不会冒这个风险的。
顺便一提女巫首晚杀人的几率也是趋近于 0 的:看似有 4/9
的几率杀掉 1 匹狼,但是误杀好人的几率会更高(5/9
),再算上狼杀掉 1 人,首晚一旦误杀好人阵营人数直接被坏人阵营追平,好人失去白天投票的人数优势,直接落败,女巫是不敢冒这个风险的。
回到正题,假设女巫首晚放弃救人,现在来到第 1 天的白天发言环节,两个阵营的人数是 4:5
,换言之,狼要做的就是拉拢好人阵营的 1 个人去投死 1 个好人。
前面分析好人阵营的时候说过,在第 1 轮的时候,神职为了在后面获取更多信息,不会倾向自曝身份。
所以狼最有拉拢效果的方式就是跳预言家,因为预言家可以查验身份,他说的话在村民的心中的置信度会更高。
但是狼跳预言家之后,最担心就是真的预言家也跳出来,这样就会因此村民质疑。
所以最适合跳预言家的是发言顺序排在末位的狼,因为末位狼身后的人会比他前面的人要少,真预言家跳出来的几率会更低。
而且首晚点杀,之所以要杀掉末位好人,也是为了削减末位狼身后的人数。
狼跳预言家之后,也不是随便指死一个好人的。
优先考虑指死的是在前面发言过程中,起了争执的 2 个好人中的 1 个,因为另 1 个支持你的概率是很大的,只要拉拢到 1 个好人就成功。
如果没有好人起争执,那么就选择排在首位的好人,因为这个人掌握的信息最少,他的身份在其他人的视角看来最模糊,所有人对他并不存在【第一印象】,一旦有关于他不好的言论,都会试着捅他一刀。
而且因为他排在首位已经发过言了,并不能反驳末位狼的发言。
在这个情况下,只要末位狼跳出来说【我是预言家,我昨晚验了 4 号的身份是狼,大家待会可以先把他投死,麻烦女巫晚上救我一下】,这句话在村民没有掌握任何信息的情况下,置信度是很高的。
只要在投票时有 1 个村民被成功拉拢,加上 4 匹狼同时指认,他就必死无疑。
于是在第 1 天投票结束后,双方阵营形成了 4:4
的人数分布,好人阵营已经失去投票主动权了。
因为狼每天晚上会固定杀 1 人,女巫晚上只能二选一(救 1 人或毒 1 人),只要狼在白天都共谋投 1 人,好人阵营就没有任何手段杀掉狼,必败无疑。
0x70 后记
以上就是全部内容,算是抛砖引玉,给不怎么会玩狼人杀的同学一点思路。
上下两篇都集成到这个 PPT 内《深入浅出狼人杀——博弈篇》,有兴趣的同学可以下载分享。