先看一個黑白棋通信游戲:
需要知道這個游戲規則背景:
魔術師和他的徒弟上臺表演,下面有三個觀眾,魔術師蒙住眼睛。
-
桌子上隨機排列七個黑白棋子,魔術師蒙著眼睛,看不到棋子。

-
徒弟才看完這個七枚棋子后,在最右面也添上一個棋子,與其他棋子并排,這時有八枚棋子,魔術師依然蒙著眼睛。

-
此時觀眾可將一枚棋子翻轉(規定第八個不可動),或不反轉任何棋子,此間,徒弟觀眾一言不發,魔術師還是蒙著眼睛,并不知道觀眾有沒有反動棋子。

-
魔術師摘下眼罩,觀察八枚棋子,然后馬上就能說出
觀眾翻轉了棋子或沒有翻轉棋子。

TIPS,思考一下魔術師怎么識破觀眾的行為呢?
-
徒弟只放了一個棋子,而且放旗子的動作在觀眾的動作之前,那么,徒弟是如何向魔術師傳遞有沒有翻轉棋子的信息呢?
-
魔術師和徒弟雖然沒有用語言交流,但是僅僅通過一枚棋子進行交流。思考一下交流的方法。
答案:
-
徒弟在觀眾擺放的7枚棋子中,數出黑棋子的個數,如果黑棋子是奇數,在最后一位添加一顆黑棋子。如果黑棋子是偶數,則添加白棋子。
-
所以觀眾只要翻了棋子,黑棋子的奇偶性一定會發生改變,如不翻動,奇偶性不變。
-
所以魔術師摘下眼罩,數一數黑棋子的個數就好啦。
奇偶校驗
-
將這個戲法的黑白棋子看做是二進制的0和1,黑棋子看成1,白棋子為0。那么他就和計算機中的奇偶校驗方法是一樣的。
-
徒弟是發送方,魔術師是接收方,中途翻動棋子的觀眾就是干擾通信的噪音。
-
徒弟作為發送方放置的一枚棋子,在通信領域中被稱為奇偶校驗位。魔術師作為接收方,通過檢查奇偶性來判斷是否因為噪音發生了通信錯誤。至于奇偶校驗位是設為奇數還是偶數,那個是發送方和接收方先前商定好的。
建模:
奇偶校驗是一種簡單的錯誤檢測方法,通過在數據末(奇偶校驗位)尾添加一個校驗位,使數據中 1 的個數滿足奇數(奇校驗)或偶數(偶校驗)。
計算數據中 1 的個數:
數據:1 0 1 0 0 1 0
1 的個數:1 + 0 + 1 + 0 + 0 + 1 + 0 = 3(奇數)。
事先約定校驗奇數即可。
最后一位加上1,表明前面的黑棋子有奇數個,
或者 最后一位加上0,表明前面的白棋子有奇數個,
最后根據校驗位去做計算1或者0是否為奇數即可。
這個校驗算法的優點:
- 實現簡單,計算速度快。
浙公網安備 33010602011771號