博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拜占庭将军问题
阅读量:4949 次
发布时间:2019-06-11

本文共 729 字,大约阅读时间需要 2 分钟。

有11个国家,其中一国特别强大,其余十国需要将其消灭才能安全生存,但只有在至少6国联军的情况下,才能够将强国击垮。并且10个弱国之间也是劲敌,不可能大家坐在一起开会讨论。他们只愿意通过快马信使讨论这个问题。他们的方案是,比如弱国A写一封信,提议在五天之后的凌晨一点发起攻击,并且盖章署名,然后A国让信使快马送9份这样的信至其余9国,收到信的国家,如果同意这个作战方案,就在信的后面同样盖章署名,再将这封信作9份发至其余国家。如果最后这封信得到了超过5个弱国的盖章署名,则作战方案得到大家同意,该问题得到解决。但问题来了,这10弱国中,各个心怀鬼胎,假设其中的C国,同时收到来自A国和B国的两份内容不同的作战方案,并且都盖章署名进行同意。则最后可能同时存在两份超过6国同意的作战方案,这一问题就陷入了僵局。

 

可以看出,问题的核心在于,由于任何国家在任何时刻都可以提出作战方案争取认可,并且提出方案成本低廉,没有一份唯一的作战方案,容易引起混乱。

打破这一僵局的新的方案是,提高方案提出的成本,比如你必须找到一个随机数,以满足下面这个SHA-256运算的结果的前十位全为0:

HASH(随机数,作战方案)

假设目前只有A国找到了一个随机数,并且附在作战方案的后面,现在约定,剩下9国对该随机数和HSAH值,进行校验,验证这确实是一个正确的随机数,则认可这份作战提议的有效性,接着才进行同意或否决作战方案的决定。与此同时各国还约定,任何收到有效作战提议的国家,都立即停止手上的运算工作,转而认可当前的作战提议的有效性,并立即进行投票。这样一来就解决了拜占庭将军问题。

转载于:https://www.cnblogs.com/heben/p/6111371.html

你可能感兴趣的文章
怎么将iphone上的照片导出到本地文件
查看>>
Repeater+DataPagerSource分页
查看>>
模块化导出
查看>>
pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页
查看>>
Sphinx 2.0.8 发布,全文搜索引擎 Installing Sphinx on Windows
查看>>
pod
查看>>
ResultSet 可滚动性和可更新性
查看>>
VS2013 C++代码运行问题
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
LUOGU P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat…
查看>>
toad for oracle中文显示乱码
查看>>
scala的REPL shell的调用
查看>>
SQL中Group By的使用
查看>>
Mybatis映射原理,动态SQL,log4j
查看>>
哪个微信编辑器比较好用?
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
Pylint在项目中的使用
查看>>
使用nginx做反向代理和负载均衡效果图
查看>>
access remote libvirtd
查看>>
gdb调试中出现No symbol table is loaded. Use the "file" command.问题
查看>>