N-n 2 3 4 5 6 7 8 9
n 1 4 11 26 57 120 247 502
Кодирование Пусть 2
N−n
≥ N+1. Передаваемые биты перенумеруем
от 1 до N зарезервировав места 1, 2, 4, 8, . . . . Все остальные места сопоставим
местам в исходной последовательности n бит.
В первый бит мы поставим 0 или 1 таким образом, чтобы сумма всех
нечетных номеров передаваемого слова равнялась нулю. Заметим, что
первый бит — единственный из нечетных битов, который резервирован,
поэтому определяя впоследствии значения остальных резервных битов
мы не нарушим свойства первого бита.
Второй бит мы определяем так чтобы четна была сумма битов у
которых номер имеет вторую цифру 1 в двоичном представлении. Заметим,
что номера всех резервированных битов после второго имеют вторую
цифру ноль, поэтому их значения не влияют на свойство первого бита.
И вообще говоря, k-ый резервированный бит определяется так, чтобы
четной была сумма значений тех битов, двоичный номер которых имеет
единицу на k-ой позиции своего двоичного представления.
Последний зарезервированный бит выбирается так, чтобы четной
была сумма всех битов передаваемой последовательности.
Декодирование Получив закодированную вышеуказанным образом
битовую последовательноость, можно следующим образом найти и исправить
ошибку, если она только одна. Первым делом вычисляется сумма s
0
всех
бит полученной последовательности. Если s
0
четна, то ошибки нет. Если
нечетна, то вычисляем суммы s
i
всех значений битов у которых на i-ой
двоичной позиции единица. Если s
i
четна, то среди битов с номерами
у которых на i-ой позиции единица нет ошибок, следовательно бит с
ошибкой имеет номер, для которого на i-ой позиции стоит 0. Если же
s
i
— нечетна, то двоичный номер бита с ошибкой имеет на i-ой позиции
единицу. Таким образом значение двоичного номера бита ошибки равно
P
2
i
(1 − s
i
).
Определение фальшивой монеты Задача о фальшивой монете
заключается в том, чтобы за минимальное число взвешиваний определить
фальшивую монету среди данного количества монет. Если заранее известно,
что фальшивая монета среди данных имеется, то мы будем называть
задачу точной. Если же фальшивой монеты может и не быть, то задачу
будем называть неточной. Если известно, что фальшивая монета легче
(тяжелее) настоящих, то будем называть задачу определенной. Если же
заранее неизвестно легче или тяжелее фальшивая монета, то задачу
будем называть неопределенной.
Взвешивание определяется разбиением множества монет на три подмножества:
тех, которые положены на левую чашку, те что положены на правую
чашку и те, что остались на столе. Если в левой чашке k монет, в правой
l монет и на столе осталось m монет, то мы будем будем писать, что
взвешивание имеет тип k +l+m. Каждое взвешивание дает один из трех
возможных результатов: левая чашка легче или правая чашка легче или
равновесие.
Дерево алгоритма В узлах дерева алгоритма изображаются взвешивания
или заключения. Начальный узел, в самом верху соответствует первому
17