什麼是拜占庭將軍問題

2021-09-29 11:31:56 字數 1330 閱讀 7866

簡單點說: 拜占庭有 n 個將軍,每次命令下發之後,將軍之間都會進行資訊傳遞 ,n個將軍中會有敵軍的叛徒發出誤導資訊來誤導其他將軍的判斷, 那麼忠誠的將軍要在什麼樣的條件下才能達成資訊的一致性 ?

這是前提條件 :

a1. 每個被傳送的訊息都能夠被正確的投遞

a2. 資訊接收者知道是誰傳送的訊息

a3. 能夠知道缺少的訊息

假設存在 n 個叛徒 , 那麼在什麼情況下各個將軍可以達到一致性呢?

假設一: 只有乙個將軍是忠誠的,那麼總共有n+1 個將軍 (此種情況肯定是行不通的,乙個最簡單的例子)

舉例:乙個將軍 給 其他將軍傳遞資訊 那麼傳遞資訊的數量為 n-1 (自己肯定不用給自己傳遞資訊) 如下圖:

假設 二: 那麼假設最少有 n+1位將軍是忠誠的,是否就可以解決了? 此時:將軍總數 為 2n+1

解釋: 為什麼是 n +1 , 如果 是 n 的話會與假設一的情況重合.

如下圖 會出現如下兩種情況:

假設三: 最少有2n + 1位將軍是忠誠的 那麼將軍的總人數就是3n + 1

解釋: 為什麼忠誠的將軍人數不是 2n 呢? 如果是 2n 明顯 會與 假設二重合.

此種情況會出現如下的情況:

可以明顯的看到第二張圖相對於第一張圖來說就是換了乙個位置而已,問題到此得以解決.

這裡或許有的人會對第一張圖有所疑問:

如果 正確的資訊是進攻,而叛徒(司令官) 發的資訊如果是撤退,那麼結果肯定是撤退啊

對於此問題我想說的是題目的要求是 忠誠將軍之間命令達成一致性,並不考慮錯誤資訊的情況.

如果有n叛徒,那麼只要忠誠的將軍人數最少2n + 1, 那麼忠誠的將軍之間就能達成命令的一致性.

什麼是拜占庭將軍問題

也被稱為 拜占庭容錯 拜占庭將軍問題 拜占庭將軍問題是leslie lamport 2013年的圖靈講得住 用來為描述分布式系統一致性問題 distributed consensus 在 中抽象出來乙個著名的例子。這個例子大意是這樣的 拜占庭帝國想要進攻乙個強大的敵人,為此派出了10支軍隊去包圍這個...

什麼是拜占庭將軍問題

接觸區塊鏈的同學,多少都聽說過拜占庭將軍問題,經常看到或聽到某某區塊鏈使用某某演算法解決了拜占庭將軍問題,那麼究竟什麼是拜占庭將軍問題呢?也被稱為 拜占庭容錯 拜占庭將軍問題 拜占庭將軍問題是leslie lamport 2013年的圖靈講得住 用來為描述分布式系統一致性問題 distributed...

漫畫 什麼是拜占庭將軍問題

接觸區塊鏈的同學,多少都聽說過拜占庭將軍問題,經常看到或聽到某某區塊鏈使用某某演算法解決了拜占庭將軍問題,那麼究竟什麼是拜占庭將軍問題呢?也被稱為 拜占庭容錯 拜占庭將軍問題 拜占庭將軍問題是leslie lamport 2013年的圖靈講得主 用來為描述分布式系統一致性問題 distributed...