Алексеев В.Б. Лекции по дискретной математике. ВМК, 2004. Электронный ресурс (1083731), страница 9
Текст из файла (страница 9)
Теорема 3. Если |B| = q и натуральные числа l1, l2, …, lr удовлетворяют неравенству
то существует префиксный код B1, B2, …, Br (в алфавите B) такой, что
длина(Bi) = li (i = 1, 2, …, r).
Доказательство. Пусть и для любого k существует ровно dk таких i, что li = k, то есть
. Тогда надо построить префиксный код, в котором ровно d1 слов длины 1, d2 слов длины 2, и т. д.,
слов длины lmax. Имеем m (1 m lmax)
, или, что то же самое,
Рассмотрим это неравенство для m = 1: d1 q. Для слов длины 1 всего предоставляется возможностей в алфавите мощности q — ровно q вариантов. После выбора d1 слов длины 1 рассмотрим неравенство для m = 2: d2 q2 – d1q. Всего слов длины 2 — q2, однако все они могут начинаться лишь с тех букв, которые не были выбраны в качестве слов длины 1, следовательно, остаётся ровно q2 – d1q возможностей выбрать слова длины 2, что удовлетворяет условию d2 q2 – d1q. Пусть уже выбраны d1 слов длины 1, d2 слов длины 2, и т. д., dm – 1 слов длины m – 1. Тогда для слов длины m разрешено возможностей не меньше, чем
qm – dm – 1q – dm – 2q2 – … – d2qm – 2 – d1qm – 1,
что удовлетворяет условию. Теорема доказана.
Следствие. Если существует взаимно однозначное кодирование со спектром длин слов l1, l2, …, lr в алфавите B, то в B существует префиксный код с тем же спектром длин слов.
§31. Оптимальные коды, их свойства.
Будем рассматривать кодирование A* {0, 1}*. Пусть известны некоторые частоты p1, p2, …, pk появления символов кодируемого алфавита в тексте:
lj — длина j-го кодового слова, p1 + p2 + … + pk = 1, pj > 0.
При кодировании текста длины N его длина становится примерно равной
Определение 1. Ценой (стоимостью, избыточностью) кодирования называется функция .
Определение 2. Взаимно однозначное кодирование называется оптимальным, если на нём достигается .
Утверждение 4. Если существует оптимальный код, то существует оптимальный префиксный код с тем же спектром длин слов.
Лемма 1. Если — оптимальное кодирование и pi > pj, то li lj.
Доказательство. Допустим, что pi > pj и li > lj. Рассмотрим кодирование и рассмотрим кодирование ', в котором переставим кодовые слова Bi и Bj:
Тогда
c () – c (') = (pili + pjlj) – (pilj + pjli) = (pi – pj)(li – lj) > 0 c (') < c (),
следовательно, не является оптимальным — противоречие.
Лемма доказана.
Лемма 2. Если — оптимальное префиксное кодирование и , длина(Bj) = lmax, Bj = Bj', где {0, 1}, то в коде существует слово Br такое, что
.
Доказательство. Допустим, что в нет слова . Тогда заменим в Bj' на Bj'. Получим код ', который является префиксным, но
следовательно, не является оптимальным — противоречие. Лемма доказана.
Лемма 3. Если — оптимальное префиксное кодирование и
p1 p2 … pk–1 pk, то можно так переставить слова в коде , что получится оптимальное префиксное кодирование ' такое, что слова и
в нём будут различаться только в последнем разряде.
Доказательство. Пусть p1 p2 … pk–1 pk. По лемме 2 в коде есть слова B0 и B1 максимальной длины. Поменяем их местами с Bk–1 и Bk. Так как pk–1 pi и pk pi для 1 i k – 2, то цена кодирования не увеличится и код останется оптимальным (префиксным). Лемма доказана.
Лемма 4. Рассмотрим кодирования
где p' + p'' = pk. Если один из этих наборов префиксный, то второй также префиксный и
c(') = c() + pk.
Доказательство. Первое утверждение легко проверяется. Далее
c(') – c() = p' · дл(Bk0) + p'' · дл(Bk1) – pk · дл(Bk) =
= p'(lk + 1) + p''(lk + 1) – pklk = (p' + p'')lk + (p' + p'') – pklk = pk.
Лемма доказана.
§32. Теорема редукции
Теорема 4 (теорема редукции). Пусть заданы 2 набора частот и 2 набора слов:
1) Тогда если — оптимальное префиксное кодирование, то и
— оптимальное префиксное кодирование.
2) Если же — оптимальное префиксное кодирование и p1 p2 …
… pk–1 p p, то — также оптимальное префиксное кодирование.
Доказательство. 1) Очевидно, из префиксности следует префиксность . Допустим, что не оптимально. Тогда существует префиксный код 1: c(1) < c() для тех же распределений частот. Пусть
Рассмотрим новое кодирование
По лемме 4, кодирование 1 также является префиксным и
Следовательно, не является оптимальным кодированием, что противоречит условию. Остаётся предположить, что оптимально.
2) Пусть — оптимальное префиксное кодирование и p1 p2 …
… pk–1 p p. Допустим, что не оптимально. Тогда по лемме 3 для частот p1, p2, …, pk–1, p, p существует оптимальное префиксное кодирование 1: D1, …, Dk–1, Dk0, Dk1 и c(1) < c(). Тогда для частот p1, p2, …, pk рассмотрим кодирование 1: D1, …, Dk–1, Dk. Получим
c(1) = c(1) – pk < c() – pk = c() c(1) < c()
и не оптимально, что противоречит условию. Теорема доказана.
§33. Коды с исправлением r ошибок. Оценка функции Mr (n)
Будем рассматривать равномерные коды в алфавите {0, 1}, длины всех слов, равные n, и ошибки типа замещения, то есть изменение разрядов 0 1 и 1 0.
Определение 1. Код называется исправляющим r ошибок, если при наличии в любом кодовом слове не более r ошибок типа замещения можно восстановить исходное кодовое слово.
Определение 2. Расстоянием Хэмминга между 2 наборами длины n называется число разрядов, в которых эти наборы различаются.
Определение 3. Шаром (сферой) радиуса r с центром в точке называется множество всех наборов длины n, расстояние от которых до
не превосходит r (в точности равно r).
Определение 4. Кодовым расстоянием называется расстояние по Хэммингу
Утверждение 1. Код исправляет r ошибок тогда и только тогда, когда
Доказательство. Заметим, что условие утверждения эквивалентно тому, что расстояние между центрами шаров радиуса r (кодовыми словами) не меньше, чем 2r + 1, что эквивалентно тому, что эти шары не пересекаются. Таким образом, на выходе получится слово, принадлежащее единственному однозначно определённому шару (если в слове не более r ошибок), что позволяет точно восстановить слово, так как известен центр этого шара. Утверждение доказано.
Определение 5. Код обнаруживает r ошибок, если при наличии в нём не более r ошибок типа замещения можно сказать, были ошибки, или их не было.
Утверждение 2. Код обнаруживает r ошибок тогда и только тогда, когда
min (K) r + 1.
Доказательство. Условие утверждения эквивалентно тому, что ни один из центров шаров (кодовое слово) не содержится в каком-либо другом шаре, то есть если произошло не более r ошибок, можно в точности установить, что полученное на выходе слово не совпадает с центром одного из шаров. Утверждение доказано.
Определение 6. Функция Mr (n) есть максимальное число слов длины n, образующих код, исправляющий r ошибок. Sr (n) — число точек (наборов длины n) в шаре радиуса r.
Доказательство. Точки шара радиуса r — это его центр, множество наборов, отличающихся от центра в одной координате — , множество наборов, отличающихся от центра в 2 координатах —
, и т. д. Получаем утверждение.
Доказательство. Рассмотрим произвольный код , исправляющий r ошибок. Из утверждения 1 следует, что шары радиуса r с центрами в
не пересекаются, следовательно, число всех точек всех шаров не превосходит числа точек n-мерного куба и
Теперь будем строить код , исправляющий r ошибок. Выберем произвольно точку
. Для выбора точки
запрещено S2r(n) точек, так как запрещены все точки одного шара и все точки, расположенные от любой граничной точки на расстояние, не больше, чем r, то есть все точки шара радиуса 2r с центром в точке
. Пусть уже выбраны наборы
. Для выбора набора
запрещено точек не больше, чем k·S2r (n), то есть, если k·S2r (n) < 2n, то можно выбрать
. Если тупик наступит после выбора m-го набора, то
Теорема доказана.
§34. Коды Хэмминга. Оценка функции M1 (n).
Рассмотрим коды, исправляющие одну ошибку типа замещения в словах длины n. Выберем натуральное k таким, что
Разобьём номера всех разрядов исходного слова на k классов:
Di = {m | m = (mk–1mk–2…m0)2, mi = 1}, 1 m n.
так, например, D0 = {1, 3, 5, 7, …}, D1 = {2, 3, 6, 7, …}, D2 = {4, …}.
Определение. Кодом Хэмминга порядка n называется множество наборов