宙斯小说网 >> 神的模仿犯 >> 目录 >> 第312章 拜占庭容错算法

第312章 拜占庭容错算法


更新时间:2025年11月05日  作者:青衫取醉  分类: 游戏 | 游戏异界 | 青衫取醉 | 神的模仿犯 


蔡志远继续解释道:

“比如,现在一共有五名将军,其中两名将军认为应该进攻,而另外两名将军认为应该撤退。

“这时候,第五名将军是个叛徒,他告诉进攻的将军我也会进攻,又告诉撤退的将军我也会撤退。

“于是,想要进攻的将军认为,现在有三支军队同意进攻,超过了半数,所以明天应该进攻。

“而想要撤退的将军认为明天应该撤退。

“最后的结果,就是两个将军进攻,两个将军撤退,导致战争失败。

“这就是去中心化所带来的问题,因为这五个将军都是平级的,没有一个拥有绝对权限的指挥者,所以在互相商量策略的过程中,就会产生这样的问题。”

郑杰恍然点头:“原来如此!那这个办法怎么解决呢?也没办法验证具体是哪个将军在说谎吧?”

蔡志远解释道:“其实要解决这个问题很简单:多问几遍就行了。

“假设我是其中一名将军A,而将军B告诉我他要和我一起进攻。

“如果我信了,那就有可能会被骗,因为将军B有可能是叛徒,他可能只跟我说了进攻,跟别人说了撤退。

“所以,这时候我应该再去问将军C,我问他:‘将军B跟你说的是进攻还是撤退?’

“然后我再去挨个问其他所有的将军,汇总将军B给他们说的所有信息。

“其他将军告诉我的将军B给他们的信息也不一定真实,因为其他将军里面可能也有叛徒,可能存在将军B跟他们说进攻,他们却告诉我将军B说了撤退这种情况。

“所以,我挨个问一遍将军B对你们说了什么,如果进攻比较多,那我就把将军B的意见记为进攻;

“然后再挨个问一遍将军C对你们说了什么,如果撤退比较多,那我就把将军C的意见记为撤退。

“就这样,我通过反复套娃的方式,不断地排除少数派答案,最后得出的结论,就是更准确的多数派答案。

“在满足拜占庭容错的情况下,我们强制要求所有将军都遵守这一套策略,并且必须坚决执行最终的结论。

“那我们就可以确保大家一起进攻或者一起撤退。”

郑杰有些困惑:“在满足拜占庭容错的情况下?也就是蔡哥你之前说过的,叛徒人数必须少于三分之一?”

蔡志远点了点头:“是的。

“我们用3名将军的情况来举个例子:

“假设3名将军里面,将军C是叛徒,故意传递错误的信息。

“将军A会首先向将军B和C说进攻。

“但是将军B接到命令之后无法确认将军A是不是叛徒,所以他要先问将军C,将军A给你的命令是什么,而将军C是叛徒,所以会故意说将军A给我的命令是撤退。

“因为只有三个将军,所以将军B就无法判断将军A和将军C到底哪个是叛徒,因为进攻和撤退的命令各一票,无法形成多数。

“同理,将军B在执行这个策略的时候,也没法判断将军A和将军C哪个是叛徒。

“这是最简单的一种情况,如果将军的数量变多,比如同时有7个将军,其中有2个是叛徒的话,情况会变得复杂很多,要套娃很多次才能最终得到结论。

“所以我才说,这种问题不需要自己真的推算,只要记住结论就行了。

“结论就是,当叛徒人数达到三分之一或者更多时,这个问题就不可解。

“反过来说,想要让这个问题可解,就要把叛徒人数控制在少于三分之一的情况。

“套一下三个房间的人数,就一目了然了。

“4人房间,3人答题,所以只要有1名恶意自由人,这个问题就不可解。

“8人房间,7人答题,在房间中有3名恶意自由人的情况下,不可解。

“13人房间,12人答题,在房间中有4名恶意自由人的情况下不可解。”

郑杰恍然大悟:“原来如此!

“所以蔡哥你用这个公式套了一下,立刻就知道8人房间其实是最安全的,因为我们只需要进入1名己方的自由人占位置,这个问题就一定可解。”

秦瑶还是没明白:“等一下,虽然我听得还是不太明白,但这个公式我记住了。

“我现在的疑问是,这个拜占庭问题,具体是怎么套到游戏规则里的?”

郑杰自告奋勇地说道:“我来解释吧!

“在第二阶段进入房间之后,实际上是答题人和出题人之间的博弈。

“比如说,我们在8人房间开黑店,那就是我们来扮演答题人,而其他社区后进入房间的玩家扮演出题人。

“我们答题人一方的目标是,达成一致选项,这样就能拿到额外奖励,从出题人身上赚签证时间;

“而反过来,出题人一方的目标是,让我们无法达成一致选项。

“比较简单的方法是,出题人一方的普通玩家,只要故意跟我们选择不同选项就可以了。

“所以,我们才需要设置房间规则,强制这些玩家必须提交多数派选项。

“提交建议这个功能,实际上就是在模拟拜占庭容错算法的运算过程,每个玩家都必须强制发送当前的多数派建议,但是会有一定的时间间隔。

“所以在一遍一遍地发送之后,除自由人以外,所有普通答题人的建议会变成同一个选项。

“之后,游戏规则会强制这些玩家提交这个选项,就达成了全员一致的目标。

“但就像蔡哥说的,提交建议的模拟过程,本身需要多数派建议达到一定数量之后才能成立。

“自由人玩家,实际上扮演了恶意节点和叛徒,他们会不断发送少数派建议,来扰乱运算。

“假设这些恶意的自由人比较多的话,就可能出现这样的情况:

“此时本来是A选项建议比较多,但突然出现了很多B选项建议反超了,导致一些玩家改成了B选项建议,然后又突然出现了一些A选项建议……

“这会导致玩家们提交的建议一直在变,始终无法固定下来,那么当提交建议功能截止的时候,有些玩家提交的是A,有些玩家提交的是B,大家就没法达成一致。

“答题人一方无法稳定地强制出题人连庄,无法稳定地获得收益,那就相当于,黑店被拆掉了。”

蔡志远点了点头:“是的,所以只要通过公式确定拜占庭容错成立的条件,再比对各个房间能够进入的自由人数量,就能确定进入房间的策略。

“8人房间,允许进入3名自由人,这个问题会在出现3个叛徒时不可解。所以,我们只需要确保房间内有1名己方的自由人占住位置,就安全了。

“当然,这名己方的自由人必须是善意的,也就是他会主动执行发送多数建议的策略。

“13人房间,允许进入6名自由人,这个问题会在出现4个叛徒时不可解,所以王卫东就必须确保最后进入13人房间的恶意自由人低于4人。

“所以,他们需要用于占位的善意自由人要更多一些。

“如果他们意识不到这一点的话,我们也可以选择主动进攻。但既然王卫东意识到了,并做出了防守,再强行进攻就意义不大了。

“所以我换了一种思路,也就是利用这游戏的违心惩罚,针对王卫东的特点提出一些可能会让他在社区内身败名裂的问题,从而强迫他取消房间规则。”

求月票


上一章  |  神的模仿犯目录  |  下一章