美文网首页
拜占庭口头协议图解

拜占庭口头协议图解

作者: 灯下鼠 | 来源:发表于2020-10-05 19:40 被阅读0次

OM(3)前奏

10 位将军,其中3位是奸细,7位忠诚将军要达成关于“攻” 和 “退” 的一致且正确的结论。

这 10 位将军是平等的,于是,他们开始疯狂的传递消息,每人都给其他所有人发消息。此时,所发消息是“自己的意见”。这是第一轮“疯狂群发”

图中只画了1、2两位的群发,10位群发都画上,就成黑纸了

有点像是投票。如果10位全是忠诚将军,那就简单了。

比如对于将军 1, 只要统计下 10 张票就行了,其中 1 张是自己的,9张来自其他9位将军,然后统计出最大票数,执行即可。由于所有将军都是忠诚的,所以每位收到的票,都完全一样,大家一定得到一致的结果。

但可惜,有奸细,而且,忠诚的将军不知道谁是奸细。于是,票就乱了,因为一个奸细,可能给忠诚将军 1 的票是“进攻”,给2是“后退”。所以,忠诚将军有的得到结论是进攻,有的结论是后退,完蛋。

兰伯特说,好,我来帮你们戳穿奸细。对每位将军,不论忠奸,忠诚将军们都要对他的意见,形成统一的认识。换句话说,在上图中,将军们发出的投票,不算数了,要大家算出来的,才算数,要为每一位将军:1,2,3,4,5,6,7,8,9,10,都算出一个他的意见来。最后,按照 Majority(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)做结论。

注意,此处 v1 可不是每一位将军原始发出来的投票,而是算出来的投票。

好,先从 1 开始。于是,我们进入 “司令-副官”模式。此时,1是司令,其他9位是副官。之后,2是司令,1,3....10是副官。所以下面的步骤一共要执行 10 轮。

从 1开始执行的 “司令-副官”模式,是要所有忠诚将军们,对将军 1 的意见,形成统一的结论。

此时,进入 OM(3),其实上面的前奏步骤,也可归入 OM(3),只是多数文章中都省略了。

OM(3)

如前,OM(3)前奏中,每位将军互相都发了各自的意见。所以,将军 1 也向其他 9 位将军发了自己的意见。

好,用将军 1 为司令,我们先对将军 1 的命令达成一致。这是第一层“司令-副官”

注意,前面两张图,都是从 10 位将军整体的视角看待全局。

现在,我们从将军 2 的角度来看,他在 OM(3)前奏中收到了 9 张来自其他将军的意见,其中一张是将军1的意见。(将军2自己在前奏中也发出了9张意见,但那是搞他的时候才会用到,此处不表)

但将军 2 不能相信将军1的意见,因为将军1可能是奸细,将军1可能给他是“进攻”,但给别人是“后退”,这可不行。对于将军 3,将军 4,等等忠诚将军,都一样,大家都收到了将军 1 的意见,但都不敢相信。

那怎么办呢?好办,2-9位将军,发起一轮投票,这一轮投票不是关于自己的意见,也不是关于“进攻”和“后退”的。这一轮投票是关于 “将军 1 的意见是什么”。

这9位将军是平等的,于是,他们开始疯狂的传递消息,每人都给其他所有人发消息。这是第二轮“疯狂群发”。此时,所发消息是“将军1 给自己发的意见”,是原始意见,而非运算出的意见。进入 OM(2)

OM(2)

忠诚将军发的是将军1的原始意见(不论将军1是否奸细),而奸细胡乱发。

如果9位将军都是忠诚的,那就简单了,统计下票数即可。因为,即便将军 1 是奸细,但经过统计,9位将军得到总的(v2-1,v3-1,v4-1,v5-1,v6-1,v7-1,v8-1,v9-1,v10-1)都一样。

但可惜有奸细,如 OM(3)前奏一样,大家都不敢相信别人告诉自己的“将军1 给自己发的意见”,因为有奸细。

怎么办? 办法是,好,我来帮你们戳穿奸细。对9位将军中的每一位,不论忠奸,忠诚将军们都要对他关于“将军1 给自己发的意见”的意见,形成统一的认识。换句话说,在上图中,将军们关于“将军1 给自己发的意见”发的投票,这些原始意见,不算数了,要算出来的的,才算数,要为每一位将军:2,3,4,5,6,7,8,9,10,都算出一个他的“关于将军1给自己发的意见”的意见来。最后,按照 Majority(v2-1,v3-1,v4-1,v5-1,v6-1,v7-1,v8-1,v9-1,v10-1)做结论。

注意,此处 v2-1 可不是将军1给将军2原始发出来的投票,而是算出来的投票。

好,先从 2 开始。于是,我们再次进入 “司令-副官”模式。此时,2是司令,其他8位是副官。之后,3是司令,4....10是副官。这是第二层“司令-副官”。所以下面的步骤一共要执行 9 轮。算出:

v2-1,v3-1,v4-1,v5-1,v6-1,v7-1,v8-1,v9-1,v10-1 一共9个值来。(当然,之后还要算出 vx-2,vx-3....vx-10)

从 2 开始执行的 “司令-副官”模式,是要所有忠诚将军们,对将军 2 “关于将军1给自己发的意见”的意见,形成统一的结论。

现在,我们从将军 3 的角度来看,他在 OM(2)中收到了 8 张来自其他将军“关于将军1给自己发的意见”的原始意见,其中一张是将军2的意见。

但将军 3 不能相信将军2的意见,因为将军2可能是奸细。都一样,大家都收到了将军 2 的意见,但都不敢相信。

那怎么办呢?好办,3-10,8位将军,发起一轮投票,这一轮投票不是关于自己的意见,也不是关于“进攻”和“后退”的。这一轮投票是关于 “将军 2 关于将军1给自己发的意见是什么”。

这8位将军是平等的,于是,他们开始疯狂的传递消息,每人都给其他所有人发消息。此时,所发消息是 “将军 2 关于将军1给自己发的意见是什么”。进入 OM(1)。

轮回啊轮回,不再赘述。这是第三轮“疯狂群发”。

继续进入 “司令-副官”模式。这是第三层“司令-副官”。

最后进入 OM(0)

OM(0)

到了 OM(0),这是第四轮“疯狂群发”,但却不用构建第四层“司令-副官”了。

为什么不用构建第四层了?因为一共3个奸细,前面三层给他们都消除掉了。这个需要费脑琢磨,看兰伯特的证明。

从将军 4 的角度看,他收到了7个“将军3关于将军2关于将军1的意见”的原始意见,他直接做一个 Majority (v3-2-1, v5-3-2-1, v6-3-2-1, v7-3-2-1, v8-3-2-1, v9-3-2-1,v10-3-2-1),就得出了将军 4 对于“将军3关于将军2关于将军1的意见”的结论意见,而这意见与 5,6,7,8,9,10的结论意见一致。

回到 OM(1)中,我们有了“将军3关于将军2关于将军1的意见”、“将军4关于将军2关于将军1的意见”、“将军5关于将军2关于将军1的意见”、“将军6关于将军2关于将军1的意见”、“将军7关于将军2关于将军1的意见”、“将军8关于将军2关于将军1的意见”、“将军9关于将军2关于将军1的意见”、“将军10关于将军2关于将军1的意见”,这些都是结论意见。于是,做 Majority, 3 - 10 位将军对 “将军2关于将军1的意见”就达成了一致,在 OM (2)中获得了“将军2关于将军1的意见”的结论意见。

OM(1)中省略的,还有 “将军x关于将军y关于将军2的意见”、“将军x关于将军y关于将军2的意见”、“将军x关于将军y关于将军3的意见”.......“将军x关于将军y关于将军10的意见”。

在 OM(2)中由此获得“将军x关于将军y的意见”的结论意见。

回到 OM(2)中,我们有了“将军2关于将军1的意见”、“将军3关于将军1的意见”、“将军4关于将军1的意见”、“将军5关于将军1的意见”、“将军6关于将军1的意见”、“将军7关于将军1的意见”、“将军8关于将军1的意见”、“将军9关于将军1的意见”。

OM(2)中省略的,还有 “将军x关于将军2的意见”、“将军x关于将军3的意见”、“将军x关于将军4的意见”.......“将军x关于将军10的意见”。

于是,做 Majority,OM(3) 中 2 - 10 位将军对 “将军1的意见”就达成了一致。

OM(3)中省略的,将军2-10作为司令,还将获得 “将军2的意见”、“将军3的意见”、“将军4的意见”、“将军5的意见”、“将军6的意见”、“将军7的意见”、“将军8的意见”、“将军9的意见”、“将军10的意见”.

回到 OM(3)前奏中,我们有了“将军1的意见”、“将军2的意见”、“将军3的意见”、“将军4的意见”、“将军5的意见”、“将军6的意见”、“将军7的意见”、“将军8的意见”、“将军9的意见”、“将军10的意见”。于是,做 Majority,最终每一位忠诚将军都得到一致的结论。

相关文章

  • 拜占庭口头协议图解

    OM(3)前奏 10 位将军,其中3位是奸细,7位忠诚将军要达成关于“攻” 和 “退” 的一致且正确的结论。 这 ...

  • 拜占庭算法之口头协议

    1982 年,兰伯特在其论文 “拜占庭将军问题”中,提出了两种解决拜占庭问题的算法,一种是口头协议,一种是书面协议...

  • 拜占庭将军问题(二)——口头协议

    在上一篇文章中,介绍了拜占庭将军问题的描述、条件和结论。在传输口头消息(Oral Messages)时,少于3m+...

  • firstday--拜占庭之口头协议

    拜占庭将军核心描述:军中可能有叛徒、却要保证进攻一致、由此发展成容错理论 问题场景:拜占庭将军想要攻打一个强大的敌...

  • 拜占庭问题 口头协议递归算法的思考

    第12章 拜占庭容错这篇文章中,我们大概介绍了拜占庭问题要解决的问题。但是关于口头协议的递归算法本身,之后我产生了...

  • (吴寿鹤)拜占庭将军问题中的口头和书面协议

    2017-11-27 吴寿鹤 原创 拜占庭将军问题-口头和书面协议是什么“鬼”? 2017-07-15 【分布式...

  • 拜占庭协议

    拜占庭将军问题(Byzantine Generals Problem/BGP) 拜占庭将军问题是指“在存在消息丢失...

  • 浅读共识算法

    PBFT(拜占庭容错实用算法) 拜占庭问题:拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定...

  • 实用拜占庭容错算法

    实用拜占庭容错系统(PBFT)降低了拜占庭协议的运行复杂度,从指数级别降低到多项式级别(Polynomial),使...

  • 图解http协议

    图解http协议

网友评论

      本文标题:拜占庭口头协议图解

      本文链接:https://www.haomeiwen.com/subject/sovauktx.html