举例说明拜占庭将军问题(The Byzantine Generals Problem) OM(m)函数递归流程

递归算法图示
前瞻知识:
L. Lamport, R. Shostak, and M. Pease. The Byzantine Generals Problem. ACM Transactions on Programming Languages and Systems, 4(3), 1982

拜占庭将军问题OM(m)函数递归过程:

算法流程如下:“
算法流程

递归的等级用序号等级表示,以此为1、(1)、1)

序号等级代表的递归函数
1OM(2)
(1)OM(1)
1)OM(0)

OM(2):

  1. Commander发送值v给他的6个中尉1~6;

  2. 对中尉1:v1=v,中尉1执行OM(1):

     (1)将v发给2~6;  
     (2)对中尉2收到v,置v2=v,中尉2执行  
         OM(0):  
             1)将v发给3~6;  
             2)3~6置自己的列表里v2=v;  
     (3)1~6的vi(对角线数值)为各自的majority(…)依次为{v,v,v,v,x,x} 
    
     中尉3&4的步骤同上(2)~(3);
    
     (2)对中尉5收到v,置v5=x,中尉5执行  
         OM(0):  
             1)将x发给2~4,6;  
             2)2~4,6置自己的列表里v5=x;  
     (3)1~6的vi(对角线数值)为各自的majority(…)依次为{v,v,v,v,x,x}.
    
     中尉6的步骤同5的(2)~(3);
    
     (这里如果56先于234先执行的话,234的值虽然初期会是x,但后期仍然会纠正过来,
     这也是其支持分布式所在,要的只是最后的majority,最终结果与执行顺序无关)   
    

2.对中尉2: v2=v,中尉2执行OM(1),与上述中尉1的序号2相似。
2.对中尉3: v3=v,中尉3执行OM(1),与上述中尉1的序号2相似。
2.对中尉4: v4=v,中尉4执行OM(1),与上述中尉1的序号2相似。
2.对中尉5: v5=x,中尉5执行OM(1),叛徒节点对信息进行篡改。
2.对中尉6: v6=x,中尉6执行OM(1),叛徒节点对信息进行篡改。

3.v1=majority{v,v,v,v,x,x}=v
3.v2=majority{v,v,v,v,x,x}=v

3.v5=majority{v,v,v,v,x,x}=x(叛徒节点可以进行篡改)
中尉6同5 。

递归过程结束

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值