現在の位置: ホーム> 最新記事一覧> PHPは、ハンミング距離合計計算の例を実装します

PHPは、ハンミング距離合計計算の例を実装します

gitbox 2025-06-30

ハンミング距離とは?

ハミング距離は、2つの等しい長さの文字列間で異なる文字の数を測定する方法です。具体的には、2つの文字列の対応する位置に異なる位置を持つ文字の数は、ハンミング距離です。

たとえば、次の2つの文字列を検討してください。

「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;
}

この関数は、2つの文字列の各文字を横断し、文字が異なる場合、カウンターは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の例を提供します。ハンミング距離は、データ送信、暗号化、エラー修正の分野で広く使用されています。この方法を習得すると、関連する問題をよりよく解決することができます。