Определите максимум комбинаций, которые удовлетворяют заданному расстоянию Хемминга - PullRequest
0 голосов
/ 19 мая 2019

Как лучше всего определить набор чисел, удовлетворяющий заданному расстоянию Хэмминга

Скажем, у меня было 5-битное число, и мне нужно было определить числа, у которых есть расстояние Хемминга> = 2.

Ниже показано, как далеко я продвинулся. То, что я считаю нужным для этого, - это выполнить итерацию моего списка по отношению к другим записям в этом списке, чтобы удалить <2 записей. </p>

Наконец, я считаю, что мне нужен еще один внешний цикл, проходящий через каждую возможную начальную запись, потому что, возможно, существует другое «начальное число», которое дает большее количество записей.

#!/usr/bin/env python

TARGET=2

num = range(2**5)
results = []
for i in num:
    for j in num: # 2nd pass
        tmp = i^j
        if bin(tmp).count('1') >=2: 
            results.append(tmp)

print(set(results))

1 Ответ

0 голосов
/ 20 мая 2019

(Не уверен, просто пример)

Для 5 цифр и расстояния Хэмминга = 1

1)

10000
00000

ИЛИ

2)

01111
11111

, но биты, не равные между ними, могут быть везде внутри двоичной последовательности.

Итак, для 1) существует 5 возможностей S = {2 ^ 4, 2 ^ 3,2 ^ 2, 2 ^ 1, 2 ^ 0}

для 2) тоже есть 5 возможностей S = {2 ^ 4, 2 ^ 3, 2 ^ 2, 2 ^ 1, 2 ^ 0)

Для расстояния Хэмминга = 2:

1)

01111
10111

ИЛИ

2)

11000
00000

Если расстояние Хэмминга == n, размер (число) -n биты бесполезны.

Так что это просто комбинация dist_hamming размера_number

...