专栏首页程序员小灰“法外狂徒”为什么那么多?用程序来告诉你!

“法外狂徒”为什么那么多?用程序来告诉你!

听过《罗翔刑法课》的小伙伴,应该都认识一个人:“法外狂徒”张三。

那么,为什么这个世界上会有坏人存在呢?

因为在一个全是好人、相互完全信任的世界里,偶尔出现的坏人能够获得巨大的竞争优势。

毕竟,遵守规则的好人,很难赢过没有底线的坏人:

那么,既然坏人这么有优势,为什么不是所有人都去当坏人呢?

当然不行,如果一个社会里的坏人太多,人和人之间永远都在相互防范,合作效率非常低。

这时候,如果有一批好人组成一个信任联盟,这批好人就会在竞争当中脱颖而出:

那么,在社会这个巨大赛场上,想要成为竞争的优胜者,我们应该做一个什么样的人呢?

为了找出答案,上世纪有一位名叫罗伯特·阿克塞尔罗德的美国教授,组织了一场关于“合作与背叛”的竞赛。参赛者不是人类,而是许多具有不同策略的计算机程序。

比赛分成很多回合,在每一回合,参赛者可以选择与对方合作,或是背叛对方,合作带来双赢,背叛则是一方得利。

在诸多的程序里,有些程序很蠢笨,有些程序很狡猾。那么,什么样的程序更可能赢得比赛呢?从最终的比赛结果来看,采用了“一报还一报”的程序多次获得比赛的第一名。

这个程序的策略十分简单:

1.与参赛者X第一次互动的时候,选择合作。(假设对方是善意的)

2.如果X在上一次互动中选择合作,那么本次自己也选择合作。(奖励对方的合作行为)

3.如果X在上一次互动中选择背叛,那么本次自己也选择背叛。(惩罚对方的背叛行为)

这就是所谓的一报还一报。

虽然这个比赛仅仅是一个简化的模型,但是也或多或少反映了现实中的情况。在现实里,想要尽可能和更多的人合作共赢,又要避免被人坑骗,一报还一报的确是一个相对合理的策略。

尽管这个理论看起来很完美。但是我们作为刨根问底的程序员,还是应该亲自动手实践一下。

小灰最近写了一个程序,再现了这个“合作与背叛”的比赛,并且按照自己的想法编写了各种策略,试图找出有没有比“一报还一报”更好的竞争策略。

这一实践让我产生了许多新的认识,自认为还蛮有意思,今天特意分享给大家。

首先说一说小灰这个程序中的具体比赛规则:

1. 比赛分成M回合,一共有N个参赛者(N为偶数):

2. 每一回合,参赛者随机分成两两一组进行互动:

3. 在互动中,参赛者可以选择“合作”或是“背叛”,根据双方不同选择,会更加或扣减一定的分数。总共分为三种情况:

4. M回合之后,所有参赛者按照总分值进行排名。

根据游戏规则,小灰也设计了6种不同风格的参赛者,他们各有各的博弈策略:

1. 老实型

这个类型的参赛者永远选择合作,从不背叛。

2. 骗子型

这个类型的参赛者永远选择背叛,从不合作。

3. 偶尔欺骗型

大部分时候选择合作,但是有10%的几率会选择背叛。

4. 一报还一报型

如上文所述,这个类型的参赛者会记住对方上一次与自己互动时候的选择。如果对方上次合作,本次自己也合作;如果对方上次背叛;本次自己也背叛。

5 记仇到底型

这个类型的参赛者同样记住对方上一次与自己互动时候的选择。但只要对方背叛过自己一次,自己就永远会选择背叛他。

6. 晚节不保型

在前80%的回合,按照一报还一报的方式行动;在最后20%的回合,只背叛不合作。

那么,我们应该选择多少人参赛,又该设置多少回合数呢?

小灰设计了4局比赛,每一局比赛的参赛人数与回合数如下:

小灰运行了一下,这4局的比赛结果如下(只列出前10名):

第1局(20人,50回合)

类型:骗子型 得分:420

类型:晚节不保型 得分:405

类型:晚节不保型 得分:380

类型:偶尔欺骗型 得分:365

类型:晚节不保型 得分:360

类型:晚节不保型 得分:355

类型:一报还一报型 得分:350

类型:骗子型 得分:345

类型:骗子型 得分:345

类型:记仇到底型 得分:340

第2局(100人,50回合)

类型:骗子型 得分:555

类型:骗子型 得分:540

类型:骗子型 得分:525

类型:骗子型 得分:510

类型:晚节不保型 得分:485

类型:骗子型 得分:480

类型:晚节不保型 得分:480

类型:骗子型 得分:480

类型:晚节不保型 得分:480

类型:晚节不保型 得分:475

第3局(20人,300回合)

类型:晚节不保型 得分:2500

类型:记仇到底型 得分:2430

类型:老实型 得分:2425

类型:老实型 得分:2420

类型:一报还一报型 得分:2405

类型:一报还一报型 得分:2385

类型:晚节不保型 得分:2385

类型:一报还一报型 得分:2375

类型:一报还一报型 得分:2375

类型:晚节不保型 得分:2360

第4局(100人,300回合)

类型:晚节不保型 得分:2540

类型:记仇到底型 得分:2460

类型:晚节不保型 得分:2450

类型:晚节不保型 得分:2430

类型:晚节不保型 得分:2405

类型:晚节不保型 得分:2400

类型:晚节不保型 得分:2390

类型:记仇到底型 得分:2370

类型:老实型 得分:2370

类型:晚节不保型 得分:2355

从上面的结果,我们不难得出几个结论:

1. 在参赛者较多,回合数较少的局面下,骗子型占有巨大优势。

2. 在参赛人数较少,回合数较多的局面下,老实人以及愿意首先合作的人开始显现出优势。

3. 偶尔欺骗型,无论在哪个局面都不占优势。

4. 相比于一报还一报型,晚节不保型占据了绝对优势。

当然,这仅仅是一个简单的博弈模型,现实世界远比这复杂得多:

首先,现实世界有法律武器,一个人的背叛行为是要付出代价的。

其次,现实世界有信用体系,当一个人遭到背叛的时候,他不仅会自己记住,还会把背叛者的恶行尽可能告知给更多的人,让大家都知道这个人不可信。

再次,一个人自身的恶行不仅影响到自己,也影响到后代的声誉。因此,谁要是选择“晚节不保”,自己的后代就可能会承担后果。

但是无论如何,这个博弈模拟游戏仍然具有一定的研究价值和趣味性。同时,小灰开发的这段程序有一定的可扩展性,有兴趣的小伙伴也可以在我的基础上开发出更多参赛者类型,相互PK一下,看看哪一种类型能够大概率胜出。

小灰已经把这个程序的代码传到了GitHub上面,地址如下:

https://github.com/bjweimengshu/CooperationGame

—————END—————

本文分享自微信公众号 - 程序员小灰(chengxuyuanxiaohui),作者:小灰

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 漫画:图的 “多源” 最短路径

    第一步,利用迪杰斯特拉算法的距离表,求出从顶点A出发,到其他各个顶点的最短距离:

    小灰
  • 漫画:什么是流行病的 R0 和 R ?

    一星期之后,小灰的疾病自愈了,但是在他患病期间,仓鼠流感传染了另外两位小伙伴A和B:

    小灰
  • 被严重 “高估” 的未来

    最近小灰看了一个久远又经典的科幻电影,讲的是未来世界当中,人类和“复制人”之间的爱恨情仇。

    小灰
  • Linux下1号进程的前世(kernel_init)今生(init进程)----Linux进程的管理与调度(六)

    前面我们了解到了0号进程是系统所有进程的先祖, 它的进程描述符init_task是内核静态创建的, 而它在进行初始化的时候, 通过kernel_thread的方...

    233333
  • Android系统启动流程(一)解析init进程

    前言 作为“Android框架层”这个大系列中的第一个系列,我们首先要了解的是Android系统启动流程,在这个流程中会涉及到很多重要的知识点,这个系列我们就来...

    用户1269200
  • Go教程:25 Go初始化init函数

    在Go中,预定义init()函数会触发执行init函数中的代码,使其在包的任何其他代码之前运行. 该代码将在import package后立即执行,并且可以在需...

    mojocn
  • Redis | Redis 集合相关命令

    Redis 支持多种数据结构,比如 字符串、列表、集合、有序集合 和 哈希 等数据结构。本次我整理了关于 集合 相关的命令,也就是关于 Sets 相关的命令,如...

    码农UP2U
  • 异质脑:自闭症谱系障碍患者自发连接模式畸变

    来自以色列魏茨曼科学研究学院的Avital Hahamy等人在Nature neuroscience上发表文章,发现自闭症谱系障碍(Autism spectru...

    用户1279583
  • 蔚来2018年平均每天亏掉2641万,车辆交付预期环比腰斩

    再减去其他损失之后,净亏损为96.4亿,与2017年的50.2亿净亏损相比,扩大了92%。

    量子位
  • 老焦专栏 | 知识图谱建设方法论

    《解开知识图谱神秘的面纱》这篇介绍了知识图谱的基本概念、应用知识图谱的三个层面,本文主要介绍知识图谱建设的方法论。

    yuanyi928

扫码关注云+社区

领取腾讯云代金券