2

我一直在閱讀最近關於拜占庭容錯的許多論文。有一個常見的證據表明需要3m + 1臺計算機來處理拜占庭故障。一般的證明是這樣的:爲什麼簡單的三方多數投票不能解決拜占庭故障?

有三個 「將軍」:A,B和C.假設這樣的將領溝通,其中C是 「叛徒」:

A --> B "Attack", A --> C "Attack" 
B --> A "Attack", B --> C "Attack" 
C --> A "Attack", C --> B "Retreat" 

A receives "Attack" from both sources, and will attack. 
B receives "Attack" from A but "Retreat" from C and doesn't know what to do. 
C is a traitor, so his action could be anything. 

因此,我們無法保證大多數參與者會達成共識。

我有點理解證據,但似乎錯過了一個重點。不要A,B和C也做自己的內部計算該怎麼做?由於A & B是這裏的「忠誠」將軍,看起來「正確」行動是攻擊。在決定做什麼時,B不允許考慮他自己的計算嗎?在這種情況下,他可以輕鬆打破衝突的輸入並決定進行攻擊。然後,A B& B攻擊,我們解決問題。這是一個不同於經典拜占庭將軍問題的問題嗎?

回答

0

你所描述的是三方共識,所有參與者都可以有自己的意見。拜占庭將領問題包括一位將軍向其他將領發出命令。那麼,所有忠誠的將軍都必須作爲一個羣體服從或不服從指揮。這是確保每個人都同意這位指揮官所說的話的問題。

下面是一個例子:

首先,作爲指揮官或拜占庭一般很容易的情況;你不在乎別人的想法。困難的部分是忠於一般的人從別人那裏得到命令。

對於3名將領試圖決定他們是否應該進攻還是沒有,我們有兩種可能情況:

  • 如果指揮官是拜占庭一般情況下,它可以發送不同的命令的兩員大將。然後他們不能同意,因爲他們從指揮官那裏得到了不同的信息,最後得到贊同和反對的同等數量的選票。
  • 如果拜占庭將軍不是指揮官,它可以說謊從指揮官那裏得到的順序。這位忠誠的將軍再一次得到(來自指揮官)一票反對(自拜占庭將軍撒謊以來)。

既然忠誠的將軍不知道指揮官對另一位將軍說了些什麼,你不知道指揮官是否對你撒謊,或者如果其他將軍做了什麼。

+0

嗯,我總是看到問題歸結爲這個「指揮官和副手」的問題,但我不明白這是多麼的明顯。在最初的拜占庭將軍問題中,每個將軍都「觀察」城市並決定是否進攻。那麼他們是不是正在制定自己的是否攻擊的獨立觀點?在那種情況下,他們只需要另一位將軍就可以同意他們。對「指揮將軍」問題的減少對我來說沒有意義。 –

+0

這樣你可以確保大多數將軍的攻擊,但不是每一個忠誠的普通攻擊。更大的例子更明顯。 –

0

什麼是「自己的內部計算」?這是否意味着如果一個將軍有衝突的消息,那麼它基本上是默認選項(例如攻擊)? 「(B)他自己的計算在決定做什麼」是什麼意思?在假設中,當他獲得大部分匹配消息時,B僅決定該做什麼。那麼,在發生衝突時可能會有一個默認選項。但默認選項並不能保證忠誠將領之間的一致決定,因爲他們不相互信任。

拜占庭式的一般問題中的重要事情是,他們不相互信任,他們不知道誰是忠誠的。任何人都可以成爲叛徒,所以即使A和B都是忠誠的將軍,他們也不知道他們每個人對於A還是B都是真正的忠誠將領。在那種情況下,即使B自己進行內部計算 B收到來自A和C的衝突消息,它不能確定100%是正確的決定(A和B做同樣的動作)。