1. 程式人生 > >拜占庭將軍問題(二)——口頭協議

拜占庭將軍問題(二)——口頭協議

在上一篇文章中,介紹了拜占庭將軍問題的描述、條件和結論。在傳輸口頭訊息(Oral Messages)時,少於3m+1個將軍中有m個叛徒時,拜占庭將軍問題是無解的。Leslie在原文1中, 提出了一種傳輸口頭訊息時拜占庭將軍問題的一種解法。

定義

首先,為定義口頭訊息,拜占庭將軍訊息系統具有以下假設:

A1. 每個訊息被正確傳送。
A2. 訊息的接收者知道是誰傳送的訊息
A3. 可以被檢測到缺少訊息

假設A1A2防止叛徒干擾其他兩個將軍的通訊,假設A3防止叛徒通過不發訊息干擾一致性達成。

另外,口頭協議演算法要求每個將軍可以與其他任意將軍直接進行通訊,Leslie在其原文中的第五章中描述了不需要滿足這個條件的演算法。

OM(m)演算法

Leslie針對口頭訊息(Oral Messages)的情況,提出了口頭協議演算法OM(m),其中m為非負。OM(m)演算法是一個遞迴演算法,用來處理在3m+1個將軍中至多存在m個叛徒的情況。

預設行動:副官如果在指定時間內收不到來自司令的命令,則預設採取“撤退”行動。這是為了防止司令官為叛徒時,通過不發出命令來阻礙達成共識。

行動函式:演算法假設使用majority方法作為行動函式,即當vi的大多數為v時,則

majority(v1,...,vn1)=v

注:其實對於行動函式,有兩種比較容易想到的選擇:

  • vi的大多數值v,如果不存在大多數採取預設行動——“撤退”;
  • 如果vi是個有序的集合,採用其中位數。

OM(m)演算法:採用遞迴定義,下面分別說明OM(0)OM(m)的內容。

m=0時,

OM(0)演算法

(1) 司令傳送他的值給每個副官;
(2) 如果副官收到司令的值,使用這個值;否則,使用預設值——“撤退”。

m>0時,

OM(m)演算法

(1) 司令傳送他的值給每個副官;
(2) 對於每個i,令vi為副官i從司令接收到的值;如果沒有收到值,則vi採用預設值——“撤退”。在OM(m-1)

演算法中,副官i作為司令向另外n-2個副官(不包括OM(m)中的司令)傳送值vi
(3) 對於每個i,對於每個jij,令vi為副官i在第(2)步中從副官j接收的值;如果沒有接收到值,則使用預設值——“撤退”。副官imajority(v1,...,vn1)作為其值。

舉例:m=1, n=4

  • 當一個副官是叛徒時

假設副官3是叛徒,下圖針對副官2收到的訊息對OM(1)進行闡述。

Algorithm OM(1); Lieutenant 3 a traitor

第一步:司令向每個副官傳送他的值v給每個副官;
第二步:副官1執行OM(0),作為司令向副官2傳送v;由於副官3是叛徒,其執行OM(0)向副官2傳送了不同的值,假設為x
第三步:副官2擁有的行動值集為{v1,v2,v3}={v,v,x},採用majority函式,副官2採取的行動值為v=majority{v1,v2,v3}

同理,副官1採取的行動指令也是v,即滿足拜占庭將軍問題一致性條件IC1IC2

注:拜占庭將軍問題一致性條件為:

IC1. 所有忠誠副官遵守同一命令;
IC2. 如果司令官是忠誠的,每個忠誠的副官遵守他的命令。

  • 當司令為叛徒時

下圖描述了當司令為叛徒,三位副官是忠誠的情況對OM(1)演算法進行闡述。

Algorithm OM(1); The commander a traitor

第一步:司令為了阻止忠誠副官達成一致,分別向三位副官傳送值{x,y,z};
第二步:每個副官從司令收到的值作為自己的值,並執行OM(0)向其他副官傳送;
第三步:在第三步中,每個副官擁有的值集均為{x,y,z},因此,副官執行行動函式majority得到的結果是一樣的。

由於三位忠誠的將軍採取同樣的行動,滿足拜占庭將軍一致性條件IC1

從m=1, n=4的例子可以看出,OM(m)演算法能夠處理拜占庭將軍問題。在OM(m)演算法中,獨立執行了n-1OM(m-1),且每個OM(m-1)演算法獨立執行了n-2OM(m-2)……這就意味著,每個副官可能獨立傳送多輪訊息。為了避免混淆,需要區分每輪訊息。最易想到的方法是,每個副官i在為第(2)步的值vi新增字首i。可以看出,演算法OM(m-k)將被呼叫(n1)...(nk)次,傳送擁有k個副官序號字首的值。

OM(m)演算法證明

本節採用歸納法證明OM(m)演算法能夠解決拜占庭將軍問題。

引理

為了證明OM(m)演算法,我們首先來證明一條引理:

對於任意的mk,如果在多於2k+m個將軍中至多存在k個叛徒,則OM(m)演算法滿足條件IC2

證明: 歸納法,針對引數m進行歸納。

m=0時,根據假設A1OM(0)演算法,易得如果司令是忠誠的,忠誠的將軍按照司令的指令行動,引理是成立的。

m>0時,假設在