前言
本人有强迫症,对于这种一时想不通的问题,简直让我脑袋要冒烟了!
所以这片文章,更像是抛一个绣球,让对这个问题有深入思考的人来给我的脑袋灭火!!!
算是一种自救的方式了!!!
两将军问题
相信看这篇文章的人,对两将军问题有一定的了解,这里不赘述了。
为了就突出我疑惑的点,避免不必要的信息干扰,我前述几个特征,与大家达成共识:
1)两个将军都是中诚的, 不考虑叛徒与反馈错误信息
2)信道只考虑丢失,不考虑错误,篡改
在这样的条件下,是否会引发无限确认问题?
我之所提出这个问题,是希望能得到哲学性的思考,不是数学上计算(当然也欢迎数学证明,虽然我未必看得懂),据说这个问题在80年代就被用图论证明,但原问题应该考虑的情况据说比较复杂。
我关于两将军问题的思考
一、首先,我要区分两个概念,即传递消息和达成共识是两码事,达成共识是依赖传递消息实现的
传递消息必要条件:
- 发出消息
- 收到确认
也就是一去一回可以传递消息,只需要单方确认
达成共识必要条件:
- 发出消息
- 收到确认
- 让对方知道我收到确认(因为一但对方,不确定我收没收到确认,就会产生疑惑,从而无法形成稳定共识)
到这里,或许就会有人意识到“无限确认”的问题,先别着急,后边会提到,这也是我的疑惑。
二、先分析下面的场景
可靠信道
1)可靠信道下传递消息,只需要一条就够,即传递过去
2)可靠信道就非是即否的问题达成共识,只需要两条信息
不可靠信道(还是只考虑丢失问题)
1)不可靠信道下传递消息,需要两条,即发出,收到确认
2)达成共识,理论达不成共识,也就是“无限确认”问题
我的疑惑
这个“无限确认”问题,我始终想不通,因为我觉得3次传递(或者说3次握手)就可以形成共识,最多4次。
如果说,一条消息的发送是依靠一条确认来达到目的,对ack就会无限确认,不无限确认就无法形成共识,这个在逻辑上怎么证明?
声明
为了避免被喷,先声明以上都是个人浅显理解,可能是错的。就是希望各位大牛解惑,如果你的说明是网上别人说的,那我可能已经看过了,所以,请大家就我的疑惑解答一下,而不是网上的重述!快来救救我可怜的脑细胞把!!!