Данные N, B и D: Найдите набор из N кодовых слов (1 < = N < = 64), каждый из бит бит B (1 < = B < = 8), так что каждое из кодовых слов является по меньшей мере расстоянием Хэмминга D (1 < = D < = 7) от каждого из других кодовых слов. Расстояние Хэмминга между двумя кодовыми словами - это число двоичных битов, которые различаются по их двоичной нотации. Рассмотрим два кодовых слова 0x554 и 0x234 и их различия (0x554 означает шестнадцатеричное число с шестнадцатеричных цифр 5, 5, и 4):генерируют N чисел, так что расстояние между ними должно быть не менее D
0x554 = 0101 0101 0100
0x234 = 0010 0011 0100
Бит различия: ххх хх Так как пять битов были различны, то расстояние Хэмминга 5.
Пример
input :- N=16 B=7 D=3
output :- 0 7 25 30 42 45 51 52 75 76 82 85 97 102 120 127
можно генерировать все кодовые слова (двоичная строка) длины B и попытаться выбирая каждое подмножество размера N и посмотреть, если он каждое число в подобранной подмножества с другим числом в подмножестве по крайней мере D ham но это потребует времени nCk
(2**B) C N
который может быть ужасным в наихудшем случае. Как эффективно генерировать числа?