神奇的奇偶性原理

2021-08-27 00:05:33 字數 944 閱讀 7676

有如下一種遊戲:你找乙個人,請他從錢包裡抓取一把硬幣,隨意放在桌子上。然後你轉過身去。請對方任選幾個硬幣翻面,每一次翻面他都要說:「翻面」。最後,請他用手蓋住一枚硬幣,之後你轉過身來,檢視下桌面的硬幣,你就可以說出對方遮住的那枚硬幣是正面還是方面了!很神奇不是!!

這個遊戲利用的就是奇偶性原理與奇偶檢驗。在你轉身之前你要下暗地裡數數擁有多少枚硬幣是正面朝上的,並記住這個數目是奇數還是偶數。如果對方一共翻了偶數次,那麼正面朝上的硬幣數目是不會有變化的;但是要是翻面的次數為奇數次,那麼硬幣的奇偶性就會改變。只要看一眼桌子上多少枚硬幣是朝上的,你就可以推斷出遮住的那枚硬幣是正面還是背面。

通訊中用奇偶性的原理來檢測資料是否在傳輸的過程中被更改過,並檢測究竟是哪一位資料被更改了。美國數學家漢明利用奇偶性原理發明了一種能夠檢測通訊資料錯誤的區塊碼。在如下的字串中,每乙個區塊abcd都是由0或1組成,在巧妙的三個核對為uvw:

abcduvw

這樣一來,就能在偵測到錯誤時,找出其位置並更正錯誤。具體原理如下圖所示:

字母a位於三個圓的交集,b,c,d分別是兩個圓的兩兩相交的交集。核對為分別放於兩圓或三圓交集以外的地方。他們的值也定為0或1.且必須滿足一下方程式:

假設資料傳輸的四個區塊為:a=0,b=1,c=0,d=1,我們就可以解出如下方程:

可以直接看出結果為:u=1,v=1,w=0。那麼這個附加的核對碼究竟能夠修正錯誤到何種程度呢?如果在abcduvw字串中發生了乙個錯誤,則(8)式中有幾個總和將會是奇數:

如果a發生錯誤,那麼三個和將全部是奇數

如果b、c、d發生錯誤,那麼其中兩個會是奇數

按照這種方式,(7,4)區塊碼局可以偵測出每乙個錯誤,並準確的確定位置加以糾正。這個檢驗碼真實巧妙極了!

參考:《像數學家一樣思考》-------克里斯蒂安.黑塞

奇偶性剪枝

我們先來看一道題目 有乙個n x m大小的迷宮。其中字元 s 表示起點,字元 d 表示出口,字元 x 表示牆壁,字元,表示平地。你需要從 s 出發走到 d 每次只能向上下左右相鄰的位置移動,並且不能走出地圖,也不能走進牆壁。每次移動消耗1時間,走過路都會塌陷,因此不能走回頭路或者原地不動。現在已知出...

1085 判斷奇偶性

判斷奇偶性 time limit 1000ms memory limit 65536k total submit 128 accepted 58 description 計算乙個無符號整數x的二進位制中1的個數是奇數還是偶數。input 多組測試資料。每組測試資料報括乙個無符號整數n 0 n 2 3...

布林矩陣的奇偶性

題目描述 乙個布林方陣具有奇偶均勢特性,當且僅當 每行 每列總和為偶數,即包含偶數個1。如下面這個4 4的矩陣就具有奇偶均勢特性 1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 編寫程式,讀入乙個n階方陣並檢查它是否具有奇偶均勢特性。如果沒有,你的程式應當再檢查一下它是否可以通過修改...