Skip to content

从学习路线进入。下载标准库核验器,分别运行普通Python与python -O;程序仅把JSON写到stdout,不接触实际网络或系统时钟。

任务有两份不同观察:心跳统计评分,以及带轮次/版本的成员消息。请交出原始证据、每次接受或忽略的原因和最后状态,不把“当前没有回应”直接写成已获唯一写权限。

一、完整训练之前没有φ结论 ​

被监测实例的序号0..4在本地0、8、16、28、40到达。窗口保存四个间隔,第一次到达只建立基线。写出每次到达后已有多少间隔,解释为什么直到40才离开UNTRAINED。

最终窗口8、8、12、12,和40,平方和416。用总体方差口径得μ10、v4;尺度下限1没有改变σ2。按φ尾部评分重算:

时刻 τ φ近似 门槛1 门槛2
50 10 0.301030 未到 未到
54 14 1.643016 怀疑 未到
55 15 2.206932 怀疑 怀疑
58 18 4.499335 怀疑 怀疑

两消费者共享窗口,却各自解释分数。保持窗口不变,把相同查询重复一次,统计量不得变化。

60到达新序号5,窗口改为8、12、12、20。请算和52、平方和752、μ13、v19。61到达旧序号3及重复5,last_received仍60;75时使用τ15,得到φ约0.490559,不能再沿用旧分布的2.206932。

把60时查询与心跳处理交换顺序:先查询得到旧窗口下约6.542646,先处理心跳则用新窗口和τ0。这份差异来自明确事件顺序,不是浮点误差。

二、同一个尾部,不同的停机后验 ​

暂给一个与程序无关的二假设模型。停机先验为π,已停不会再来心跳;未停的下一间隔超过τ的概率为S。计算观察沉默后π/[π+(1−π)S]。

固定S=1/100,即φ2。π=1/1000时答案100/1099,π=1/2时100/101。说明为什么四份间隔没有提供这两个先验中的任意一个,以及为什么不能把φ2直接译成99%的真实停机概率。

另给全部相同间隔10的窗口,方差为0,附件使用公开的尺度下限1。再给只有三份间隔的状态,应返回UNTRAINED。长到z≥12时返回φ>30的下界,而不是把数值下溢打印成已经证明的无穷值。阈值附近的NUMERIC_BOUNDARY属于数值接口,不能偷偷当作正常低分。

三、间接路径成功,但旧轮ACK无效 ​

SWIM练习固定A/B/C/D,T8、直接等待2、helper数1、疑似等待12。所有成员初为Alive0。

  • 轮1在0开始,A到B的直接PING丢失
  • 2时A请求C代探;3时C向B发PING;4时B向C发ACK;5时C把原轮ACK转给A
  • 8时A结束轮1,记录RESPONDED
  • 轮2从10开始,直接与间接都没有本轮回复;12时重到轮1ACK
  • 18时轮2失败,A把B0标为Suspect,期限30;C在19接受相同信息,期限31

列出每一跳的src/dst以及不变的(origin,round,target)。直接丢失是发送过但未交付,不应列成“0时成功收到”。同一ACK载荷与来源还不足以确认新轮,轮1的旧编号必须被拒绝。

补一次非法调用:在A上重新使用轮号2发起新探测,参考器应拒绝。开始新轮后,旧Probe的回调也不得修改新轮结论。helper转发必须匹配原请求的起点、轮号、目标和目标回复来源。

四、及时反驳,与反驳丢失的不同结局 ​

20时B收到Suspect0,只有B把自己的incarnation增为1并发布Alive1。

第一支中,A在22、C在24接受Alive1;27的旧Suspect0无效;30/31的旧定时事件也无效。交付表应为B的Alive1,而非被旧callback确认。

第二支从同一18/19状态重新开始:A在22接受Alive1,C却没有收到。31时C确认B0,32时Alive1才到。按2002原版,Confirm是该实例的终态,因此C仍Confirm;33时C的确认传到A,A也变Confirm。B实际可一直运行。

原版的最后一步不是先比incarnation再比状态。给出“Confirm0晚于Alive1”的完整反例,说明为什么本页不能替换成另一个实现的比较规则,也不能让应用据此回收仍可能被B使用的外部权限。

第三份迁移把C的Alive1与期限都放在31:先Alive再timer,最后Alive1;先timer再Alive,最后Confirm。逐项复算两个次序,不把它们当成相同输入。

五、两次发送预算,不是两份接收证明 ​

另取A持有D的Confirm、C仍Alive0。最新更新每包最多带一条,本地最多发两次。A在1、2两次出站包都附上它,但两包都丢失;3时再调用piggyback已经没有该项。

检查这时C仍可Alive0。4时显式调用完整状态反熵修复,C才得到Confirm。分别报告:已发送次数、成功交付次数、消息退场、成员墓碑是否保留。这四件事不能合并成同一个布尔量。

如果丢掉最后保留的Confirm记录,旧Alive又可能被重新接纳;本练习没有安全回收证明,因而不执行删除。修复保证观察合并,不会把错误怀疑变成正确物理事实。

六、把随机期望和确定选择界分开 ​

独立概率练习取n5,其中4个正确探测者每轮各从其他4人均匀独立选目标。对一个已停止目标,至少一人选中的概率175/256;首轮号的期望256/175。说明共同候选集合、独立选择、轮次范围及观察者调度是哪些额外前提。

单节点有放回选择没有确定最坏等待轮数。改为四目标全排列遍历,再洗牌;比较两次相邻排列时,同一目标的轮号差最多7。例如它在第一遍排第1、第二遍排第4,正好相差7。

附件穷举24×24对排列及每个目标,核此选择界。它不是“七轮内全组统一真实成员”的定理:完整确认还含疑似等待、回调调度及传播条件。

最后提交:四间隔和换窗账本、两门槛判定、两先验计算、两探测轮的消息身份、及时/迟到反驳和同刻分支、有限发送遗漏、修复后的成员表,以及两种探测成本说明。主程序JSON与正文一般条件相互对应,有限样例本身不认证真实网络。