當前位置: 首頁> 最新文章列表> PHP 實現漢明距離總和計算示例

PHP 實現漢明距離總和計算示例

gitbox 2025-06-30

什麼是漢明距離?

漢明距離是衡量兩個等長字符串之間不同字符數量的方法。具體來說,兩個字符串對應位置上字符不同的個數即為漢明距離。

例如,考慮以下兩個字符串:

"abcdefgh" 與"abcxtdhy"

它們的漢明距離為4,因為它們在第4、5、6和8個位置上字符不同。

PHP 計算漢明距離總和的實例

假設我們有一個包含多個等長二進製字符串的數組,如下所示:

 
// 一個包含多個等長二進製字符串的數組
$array = ["1100", "1010", "1111", "0000"];

問題是:如何計算這些字符串兩兩之間的漢明距離總和呢?我們可以先定義一個計算漢明距離的函數:

 
/**
 * 計算漢明距離
 * @param string $str1
 * @param string $str2
 * @return int
 */
function hammingDistance($str1, $str2) {
    $dist = 0;
    $n = strlen($str1);
    for ($i = 0; $i < $n; $i++) {
        if ($str1[$i] !== $str2[$i]) {
            $dist++;
        }
    }
    return $dist;
}

該函數通過遍歷兩個字符串的每個字符,如果字符不同,則計數器加1。

接下來,我們可以使用雙重循環來計算所有字符串的漢明距離總和:

 
$len = count($array);
$sum = 0;
for ($i = 0; $i < $len; $i++) {
    for ($j = $i + 1; $j < $len; $j++) {
        $sum += hammingDistance($array[$i], $array[$j]);
    }
}
echo $sum; // 輸出 10

通過這個過程,我們可以得出該數組中所有二進製字符串兩兩之間的漢明距離總和。

示例解釋

假設數組為["1100", "1010", "1111", "0000"],每對二進製字符串的漢明距離如下:

 1100
1010   2
1111 3 1
0000 4 2 5

因此,漢明距離總和為10。

總結

本文介紹了漢明距離的基本概念,並提供了一個PHP示例,演示瞭如何計算多個二進製字符串之間的漢明距離總和。漢明距離在數據傳輸、加密和糾錯等領域有著廣泛應用,掌握這一方法可以幫助我們更好地解決相關問題。