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

在上一篇文章中,介绍了拜占庭将军问题的描述、条件和结论。在传输口头消息(Oral Messages)时,少于3m+1个将军中有m个叛徒时,拜占庭将军问题是无解的。Leslie在原文1中, 提出了一种传输口头消息时拜占庭将军问题的一种解法。

定义

首先,为定义口头消息,拜占庭将军消息系统具有以下假设:

A1. 每个消息被正确发送。
A2. 消息的接收者知道是谁发送的消息
A3. 可以被检测到缺少消息

假设A1A2防止叛徒干扰其他两个将军的通信,假设A3防止叛徒通过不发消息干扰一致性达成。

另外,口头协议算法要求每个将军可以与其他任意将军直接进行通信,Leslie在其原文中的第五章中描述了不需要满足这个条件的算法。

OM(m)算法

Leslie针对口头消息(Oral Messages)的情况,提出了口头协议算法***OM(m)***,其中m为非负。***OM(m)***算法是一个递归算法,用来处理在***3m+1***个将军中至多存在***m***个叛徒的情况。

默认行动:副官如果在指定时间内收不到来自司令的命令,则默认采取“撤退”行动。这是为了防止司令官为叛徒时,通过不发出命令来阻碍达成共识。

行动函数:算法假设使用***majority*方法作为行动函数,即当 v i v_i vi的大多数为v时,则 m a j o r i t y ( v 1 , . . . , v n − 1 ) = v majority(v_1, ..., v_{n-1})=v majority(v1,...,vn1)=v

注:其实对于行动函数,有两种比较容易想到的选择:

  • v i v_i vi的大多数值v,如果不存在大多数采取默认行动——“撤退”;
  • 如果 v i v_i vi是个有序的集合,采用其中位数。

OM(m)算法:采用递归定义,下面分别说明**OM(0)OM(m)**的内容。

m = 0 m=0 m=0时,

OM(0)算法

(1) 司令发送他的值给每个副官;
(2) 如果副官收到司令的值,使用这个值;否则,使用默认值——“撤退”。

m > 0 m>0 m>0时,

OM(m)算法

(1) 司令发送他的值给每个副官;
(2) 对于每个 i i i,令 v i v_i vi为副官 i i i从司令接收到的值;如果没有收到值,则 v i v_i vi采用默认值——“撤退”。在***OM(m-1)***算法中,副官 i i i作为司令向另外***n-2**个副官(不包括OM(m)*中的司令)发送值 v i v_i vi
(3) 对于每个 i i i,对于每个 j ≠ i j\neq i j̸

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值