拜占庭将军问题简述
拜占庭的简述
本文将用于介绍著名的拜占庭将军问题。在介绍拜占庭将军问题之前,先简单说一下拜占庭。拜占庭帝国,在古代西欧也被称之为东罗马帝国。是一个位于欧亚交界处的封建君主制国家,其领土包括现在的欧洲南部,西亚和北非。公元四世纪左右,罗马帝国开始分列为罗马东部和罗马西部,这两个国家都被视为罗马正统,大概到公元十世纪,罗马西部陷落,随着神圣罗马帝国的建立,罗马东部失去了罗马这个单词的独占权,开始被称之为东罗马帝国。大概在16世纪之后,开始出现了拜占庭帝国的说法。值得一提的是,拜占庭帝国的首府君士坦丁堡被第四次十字军东征攻陷,从此一蹶不振。1453年5月29日,君士坦丁堡被强大的奥斯曼帝国攻陷,末代皇帝君士坦丁十一世战死。东罗马帝国就此终结。当然,此文不是介绍东罗马帝国历史的文章,在此仅简述拜占庭帝国的历史。
拜占庭将军问题是什么
拜占庭将军问题和拜占庭的历史其实并无关联,拜占庭将军问题也不是历史上真实存在的问题,他是著名计算机大神兰伯特于1982年提出的。拜占庭问题描述的是如下的场景
假设有一座城堡,拜占庭帝国想攻陷这座城堡。所以派出了很多支军队,因为通讯条件很落后,军队和军队之间必须经过信使来传递作战命令。城堡十分坚固,可以抵御一两只军队的进攻。只有所有军队同时进攻,才可以攻陷城堡。为了保证作战命令的统一,提出一个办法,投票。超过半数投票决定作战命令。比如:决定明天早上进攻,如果有半数的军队同意这个作战计划。则在明日早晨开始一起进攻。反之,如果一大半人都不同意明天早上进攻,则明早就不进攻。
现在存在的问题是:军队中有叛徒。叛徒会随意调整作战命令
我们现在用图一来表示这种困境,在图示中,我们用黄色的小人代表正常的部队,粉色的小人代表判叛徒。A表示进攻Attack,R代表拒绝Reject。因为正直的的部队会忠实的执行命令,所以我们把A和R标记在他们身上。
如图所示,身上标记A的三位将军表示他们决定“明早发动进攻”,身上标记R的三位将军决定明早不应该发动进攻,现在叛徒至关重要。叛徒的这一票将决定明早是否决定进攻。这时候叛徒给三位决定进攻的将军传递的消息是明早发动进攻,给三位不进攻的将军发送的消息是明早不发动进攻。所以三位决定进攻的将军知道了,有4票发动进攻的,那么大多数人决定进攻那我明早就发动攻势。三位不进攻的将军则知道,有四票不发动进攻的,那我明早不进攻。所以拜占庭难度就产生了,这些部队有的进攻有的撤退,战斗就失败了。