首頁 > 科幻小說 > 神的模仿犯 > 第313章 拜占庭容錯算法

第313章 拜占庭容錯算法(1/2)

目錄

蔡志遠繼續解釋道:

「比如,現在一共有五名將軍,其中兩名將軍認為應該進攻,而另外兩名將軍認為應該撤退。

「這時候,第五名將軍是個叛徒,他告訴進攻的將軍『我也會進攻』,又告訴撤退的將軍『我也會撤退』。

「於是,想要進攻的將軍認為,現在有三支軍隊同意進攻,超過了半數,所以明天應該進攻。

「而想要撤退的將軍認為明天應該撤退。

「最後的結果,就是兩個將軍進攻,兩個將軍撤退,導致戰爭失敗。

「這就是『去中心化』所帶來的問題,因為這五個將軍都是平級的,沒有一個擁有絕對權限的指揮者,所以在互相商量策略的過程中,就會產生這樣的問題。」

鄭傑恍然點頭:「原來如此!那這個辦法怎麼解決呢?也沒辦法驗證具體是哪個將軍在說謊吧?」

蔡志遠解釋道:「其實要解決這個問題很簡單:多問幾遍就行了。

「假設我是其中一名將軍A,而將軍B告訴我他要和我一起進攻。

「如果我信了,那就有可能會被騙,因為將軍B有可能是叛徒,他可能只跟我說了進攻,跟別人說了撤退。

「所以,這時候我應該再去問將軍C,我問他:『將軍B跟你說的是進攻還是撤退?』

「然後我再去挨個問其他所有的將軍,匯總將軍B給他們說的所有信息。

「其他將軍告訴我的『將軍B給他們的信息』也不一定真實,因為其他將軍裡面可能也有叛徒,可能存在『將軍B跟他們說進攻,他們卻告訴我將軍B說了撤退』這種情況。

「所以,我挨個問一遍『將軍B對你們說了什麼』,如果『進攻』比較多,那我就把將軍B的意見記為『進攻』;

「然後再挨個問一遍『將軍C對你們說了什麼』,如果『撤退』比較多,那我就把將軍C的意見記為『撤退』。

「就這樣,我通過反覆套娃的方式,不斷地排除少數派答案,最後得出的結論,就是更準確的『多數派答案』。

「在滿足『拜占庭容錯』的情況下,我們強制要求所有將軍都遵守這一套策略,並且必須堅決執行最終的結論。

「那我們就可以確保大家一起進攻或者一起撤退。」

鄭傑有些困惑:「在滿足『拜占庭容錯』的情況下?也就是蔡哥你之前說過的,叛徒人數必須少於三分之一?」

蔡志遠點了點頭:「是的。

「我們用3名將軍的情況來舉個例子:

「假設3名將軍裡面,將軍C是叛徒,故意傳遞錯誤的信息。

「將軍A會首先向將軍B和C說『進攻』。

「但是將軍B接到命令之後無法確認將軍A是不是叛徒,所以他要先問將軍C,『將軍A給你的命令是什麼』,而將軍C是叛徒,所以會故意說『將軍A給我的命令是撤退』。

「因為只有三個將軍,所以將軍B就無法判斷將軍A和將軍C到底哪個是叛徒,因為『進攻』和『撤退』的命令各一票,無法形成多數。

「同理,將軍B在執行這個策略的時候,也沒法判斷將軍A和將軍C哪個是叛徒。

「這是最簡單的一種情況,如果將軍的數量變多,比如同時有7個將軍,其中有2個是叛徒的話,情況會變得複雜很多,要套娃很多次才能最終得到結論。

「所以我才說,這種問題不需要自己真的推算,只要記住結論就行了。

「結論就是,當叛徒人數達到三分之一或者更多時,這個問題就不可解。

「反過來說,想要讓這個問題可解,就要把叛徒人數控制在少於三分之一的情況。

「套一下三個房間的人數,就一目了然了。

「『4人房間』,3人答題,所以只要有1名惡意自由人,這個問題就不可解。

本章未完,點選下一頁繼續閱讀。

目錄
返回頂部