TCS: 拜占庭将军问题 (The Byzantine Generals Problem)

这个问题在Yao的理论计算机课上整整讨论了2节课。它是一个算法设计问题,也极具趣味性。下面是它的一些介绍和解决方案([1])。

拜占庭帝国就是5~15世纪的东罗马帝国,拜占庭即现在土耳其的伊斯坦布尔。我们可以想象,拜占庭军队有许多分支,驻扎在敌人城外,每一分支由各自的将军指挥。将军们只能靠通讯员进行通讯。在观察了敌人以后,忠诚的将军们必须制订一个统一的行动计划——进攻或者撤退。然而,这些将军中有叛徒,他们不希望忠诚的将军们能达成一致,因而影响统一行动计划的制订与传播。问题是:将军们必须有一个协议,使所有忠诚的将军们能够达成一致,而且少数几个叛徒不能使忠诚的将军们做出错误的计划——使有些将军进攻而另一些将军撤退了。

抽象出来,可以表述成:

拜占庭将军问题:设计一个协议,一个司令要送一个命令给他的n-1个副官,使得
IC1. 所有忠诚的副官遵守同一个命令。
IC2. 假如司令是忠诚的,则每一个忠诚的副官遵守他送出的该命令。

约定:忠诚的将军将遵守协议,而叛徒则可能破坏协议,尽可能的干绕其它人的判断。叛徒是匿名的。而且最后不需要确定谁是叛徒。

注意司令也有可能是叛徒,所以IC2与IC1是不同的。

递归设计协议OM(n, m)为

OM(n, 0):

  1. 司令发送命令给所有副官。
  2. 副官按照接收到的命令行事。

OM(n, m):

  1. 司令发送命令给所有副官,设副官i收到命令vi。
  2. 分为独立的n-1轮:对每个副官i,将其视为司令,使用协议A(n-1, m-1)将vi发送到所有其它副官。
  3. 这样每个副官都收到n-1条信息,每个副官都按照出现次数更多的命令行事(如果进攻和撤退的命令一样多,则默认取撤退)。

递归证明

引理:当n>2m+k,n个将军中至多k个叛徒,协议A(n, m)满足IC2,即司令是忠诚的,每个忠诚的副官将会执行司令的命令。

进而说明:

当n>3m时,n个将军,且至多m个叛徒,协议A(n, m)可以同时满足IC1和IC2。

更深刻的结论:

当n<=3m时,n个将军中的m个叛徒可以让将军们无法达成一致,也就是满足IC1和IC2的协议不可能存在。

参考:

  1. The Byzantine Generals Problem, the first paper involved
  2. 可信计算VII:拜占庭将军问题
  3. Byzantine failure - Wikipedia, the free encyclopedia

PS: 标题里TCS是Theoretical Computer Science(理论计算机科学)的缩写,这篇文章同属于理论计算机介绍系列文章,算作理论计算机初步系列文章的补充吧。

  • 征集3个人分蛋糕的方法 Yao在课程《理论计算机II》的第一节课上提到的一个问题: 三个人如何平分一块蛋糕? 要求每个人拿到不少于1/3的蛋糕——这里指的是每个人认为自...
  • 摸箱子问题以及在Static data structure problems上的应用 以前提到过,理论计算机这门课会邀请一些正在这边访问的教授来讲课,由于是本科生,所以这些教授一般都是讲些有趣的东西,比如之前的overhang 堆...
  • "完美"的洗牌次数 - 7次 在大家玩牌的时候,每一局之前都需要重新洗牌——一次洗牌指将牌分为左右两垛然后穿插放牌,但多少次洗牌才是正当的呢?就我多次打牌的观察,...
  • 最佳约会策略 题外话:最近阅微堂发的都是网友转发的政治方面的文章,不爱看的人会比较痛苦。现在讨论一个轻松一点的话题。其问题,已经被研究了很多年,有...
  • TCS课堂笔记:数据库存储问题 理论计算机(I)课上讲的一个问题,很有意思。 已经一个n,m和$$\{1,2,\cdots, m\}$$里n个数,设计一种保存这n个元素的表的数据结构形式,使得对$$\{1,2,\cdots...
5条留言 -> 跳到留言表格
  • At 2008.11.03 12:42, isabelincoln said:

    你好,看了你的文章,但是对解题的具体算法还是不很明白,能给解释一下当6个将军2个叛徒的情况为什么不行,和7个将军2个叛徒的情况为什么行吗?谢谢!

    • At 2008.11.03 14:04, zhiqiang said:

      6个将军2个叛徒不行与3个将军1个叛徒不行是一样的。

      7个将军和2个叛徒可以用文章中给的算法,我觉得里面的思路是很清晰的,更详细的你可以看参考文献1。或者等我有时间我再详细写一下。

    • At 2008.11.03 12:44, isabelincoln said:

      期望得到你的回答,邮箱lixin3005 AT 126.com

      • At 2009.01.03 21:04, 东东宝 said:

        等待你的回答,我的邮箱:xxy19804@163.com

        • At 2009.12.06 15:46, cece said:

          不是k与3k+1的关系么?这样说就直接了啊

          (Required)
          (Required, not published)

            B | I | U | D | 添加链接 | 插入引用 | 插入代码 | 插入表情 | | + | ?
          guest | 注册 | BBS | 管理 | English | 繁體 | https

          阅微堂

          zhiqiang's personal blog
          Loading...
          Loading...
          Loading...