拜占庭將軍問題(四)——非全連線下的演算法演變
前面幾篇文章介紹瞭解決拜占庭將軍問題的演算法——OM(m)演算法和SM(m)演算法。但這個兩種演算法都是在一個將軍能夠直接與所有其他將軍通訊的情況下,進行討論的。這篇文章將移除這個假設,闡述並非所有的將軍都能直接通訊的情況下,拜占庭將軍問題演算法的演變。
建模
所有將軍組成一個有限簡單無向圖,圖的兩個節點的邊以為著這兩個將軍可以直接發訊息。現在將OM(m)演算法和SM(m)演算法從全連線的圖擴充套件到多連線的圖。
正則鄰居集
為了擴充套件演算法,定義如下概念
定義 1.
(a) 節點的集合被稱作節點的正則鄰居集,如果滿足:(i) 每個是節點的鄰居;
(ii) 對於每個不同於的節點,存在開始於且不經過的路徑,且任意兩個不同的路徑除了之外沒有公共節點。(b) 圖是一個p-正則的,如果每個節點都擁有包含個不同節點的正則鄰居集。
如下圖所示,圖6是一個3-正則圖,而圖7不是3-正則圖,因為中心的節點不存在包含3個節點的正則鄰居集。
OM(m)演算法擴充套件
現在將OM(m)演算法進行處理,來解決如果-正則的圖中存在個叛徒的情況。
注: -正則的圖至少包含個節點。
演算法描述
對於正整數和,當圖是-正則的是,定義演算法OM(m, p)
演算法: OM(m, p)
(0) 選取司令的一個正則鄰居集,其中包含個副官;
(1) 司令傳送他的值給中的每個副官;
(2) 對於中的每個,令為副官從司令接收到的值;如果沒有從司令收到指令,預設選擇RETREAT。副官傳送給每個其他的副官,如下:(A) 如果,按照路徑傳送值。其中,路徑的存在由定義1的(a)(ii)部分保證。
(B) 如果,副官當作司令,在除去原來司令的圖中執行演算法。(3) 對於每個和中的每個,且,令為副官在第(2)步中從副官處收到的值;如果沒收到值,則為RETREAT。副官使用作為他的值,其中。
證明
接下來,要證明可以解決最多隻有m個叛徒的拜占庭將軍問題。證明過程和演算法的證明過程類似。
引理 2 對於任意和,當最多有