Hamming Distance 漢明距離

2021-07-26 15:47:16 字數 1415 閱讀 7703

在資訊理論中,hamming distance 表示兩個等長字串在對應位置上不同字元的數目,我們以d(x, y)表示字串x和y之間的漢明距離。從另外乙個方面看,漢明距離度量了通過替換字元的方式將字串x變成y所需要的最小的替換次數。

# 舉例說明以下字串間的漢明距離為:

"karolin"

and"kathrin"

is3.

"karolin"

and"kerstin"

is3.

1011101

and1001001

is2.

2173896

and2233796

is3.

對於二進位制串a和b來說,漢明距離等於axorb中1的數目,我們又稱其為漢明權重,也叫做population count或popcount。長度為n的二進位制字串通過漢明距離構成了乙個度量空間(metric space),我們稱其為漢明立方(hamming cube)。

def

hammingdistance

(s1, s2):

"""return the hamming distance between equal-length sequences"""

if len(s1) != len(s2):

raise valueerror("undefined for sequences of unequal length")

return sum(el1 != el2 for el1, el2 in zip(s1, s2))

wegner (1960) 提出了一種計算漢明權重(即計算給定整數的二進位制表示中1的個數)的演算法,通過反覆查詢並消除最低的非零bit位來實現。基於此使用c語言實現的計算漢明距離的演算法如下:

int hamming_distance(unsigned x, unsigned y)

// return the number of differing bits

return dist;

}

還可以借助編譯器內建計算popcount的呼叫來更高效地實現。

int hamming_distance(unsigned x, unsigned y)

//if your compiler supports 64-bit integers

int hamming_distance(unsigned

long

long x, unsigned

long

long y)

漢明距離主要應用在通訊編碼領域上,用於制定可糾錯的編碼體系。在機器學習領域中,漢明距離也常常被用於作為一種距離的度量方式。在lsh演算法漢明距離也有重要的應用。【有待完善】

Hamming Distance漢明距離

漢明距離是使用在資料傳輸差錯控制編碼裡面的,漢明距離是乙個概念,它表示兩個 相同長度 字對應位不同的數量,我們以d x,y 表示兩個字x,y之間的漢明距離。對兩個字串進行異或運算,並統計結果為1的個數,那麼這個數就是漢明距離。在資訊理論中,兩個等長字串之間的漢明距離是兩個字串對應位置的不同字元的個數...

leetcode 刷題(python)之漢明距離

兩個整數之間的漢明距離 指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x和 y,計算它們之間的漢明距離。注意 0 x,y 231.示例 輸入 x 1,y 4 輸出 2 解釋 1 0 0 0 1 4 0 1 0 0 上面的箭頭指出了對應二進位制位不同的位置。class solution...

漢明距離總和

題目 兩個證書的漢明距離指的是這兩個數字的二進位制數對應值不同的數量。計算乙個陣列中,任意兩個數之間漢明距離的總和。示例 輸入 4,14,2 輸出 6 解釋 在二進位制表示中,4表示為0100,14表示為1110,2表示為0010。這樣表示是為了提現後四位之間的關係 所以答案為 hammingdis...