Молодогвардейцев 454015 Россия, Челябинская область, город Челябинск 89085842764
MindHalls logo

Вычисление расстояния Хэмминга с помощью C++

Строго по определению расстоянием Хэмминга называют количество позиций, в которых соответствующие символы двух слов одинаковой длины различны. Другими словами — это число, которое служит метрикой различия двух элементов (будь то строки, массивы байт, точки в пространстве и тд).

Несколько примеров

1. Битовые расстояния — количество позиций с различными битами

2. Расстояния в слове — количество позиций в различными символами

Битовое расстояние Хэмминга — C++

Задача состоит в том, чтобы посчитать количество позиций, в которых биты различны. В качестве «слов» будем рассматривать вектора байт одинаковой длины.

Байтовое расстояние Хэмминга — C++

Если в случае с битами нам пришлось работать с масками и битовыми смещениями, то количество различных байт можно посчитать в два счета.

В качестве заключения можно только сказать, что эта реализация не является эффективной ни в коем случае, наверняка можно хитро воспользоваться свойствами расстояния Хэмминга и ускорить подсчет. Но для моей задачи такой реализации оказалось достаточно.