关于只需要一些结点作出决定,而不是所有结点
For the purpose of the impossibility proof, we require only that some process eventually make a decision. (Of course, any algorithm of interest would require that all nonfaulty processes make a decision.)
如果只需要一个结点作出决定的模型是行不通的,则需要所有结点作出决定的模型更加行不通。所以只需要证明一些结点作决定的模型的不可能性。原因如下。
一个显然正确的命题:“如果所有结点都能够作出决定,则存在部分结点能够做出决定”
取其逆否命题:“如果不存在结点能够作出决定,则存在结点不能做出决定”
第2个命题即可说明上述结论。
在哪里体现了单个结点容错
在LEMMA 2的证明中:
Now consider some admissible deciding run from C 0 C_0 C0 in which process p takes no steps, and let σ be the associated schedule.
协议在与p不通信的情况下达成决定,这需要协议能够容忍1个错误。换而言之,如果协议不能容忍1个错误,则它需要所有结点参与进来才能够达成决定。
在哪里体现了异步网络模型
(这部分我的理解不一定对)
在 LEMMA 3 中,通过对事件 e = (p, m) 任意延迟,总能够找到一条以 e 结尾的路径,使得该路径的最后一个配置是二价的(bivalent) 。对事件的任意延迟即体现了异步网络。
- 角度1:轮流延迟每一个结点的消息(事件),总是能够不断得到二价的配置,因此总能找到一条admissible non-deciding run。
- 角度2:如果是同步网络,可以实现每个结点在一个固定时长的轮次中收发一次消息,一轮一轮地收收发消息,因此一个事件不能被任意地延长,LEMMA 3 不成立。