Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OTI Lections2011.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.74 Mб
Скачать

8.5Код Элайеса

Код Элайеса неотрицательного целого числа n обозначим через El (n). Положим El (0) = 10, El (1) = 11.

Пусть n > 1. Тогда El (n)= 00…0 BIN([log n]+1) B(n), где 00…0 – маркер, необходимый для того, чтобы знать, сколько последующих за 0 символов может задавать длину записи числа. Поэтому в данном коде количество нулей перед BIN([log n]+1) равно [log (BIN([log n]+1)].

Примеры:

El(5) = 0 10101

E l(75) = 00 110001011

log n

log (log n)+1

log (log n)

Утверждение. Длина |El(n)| не превосходит log n + 2 log (log n) + 3.

Утверждение. Код Элайеса – префиксный.

Доказательство: Рассмотрим El (n) и El (m). Если хотя бы одно из этих слов начинается с 1, то это либо 0, либо 1. Утверждение доказано. Пусть n, m больше 1, вспомним теорему о дешифруемости кода: El(n) = α1αk, El(m) = β1βS (для определенности ks). Пусть количество 0, с которых начинается α, совпадает с количеством 0, с которых начинается β. (В противном случае сразу следует свойство префиксности кода.) Далее рассмотрим вторые подслова слов El (n) и El (m). Если они не совпадают, то префиксность кода доказана. Если совпадают, то переходим к окончаниям слов. Если они совпадают, то m=n. В противном случае n не равно m. Таким образом, при m≠n выполняется соотношение B(n) ≠B(m).

Утверждение доказано.

Примеры:

El(5) = 0 10101

E l(75) = 00 110001011

log n

log (log n)+1

log (log n)

Длина |El(n)| = [log n] + [log [log n]] + 1 + [log [log n]] = log n + 2 log (log n) + k

Утверждение: Код Элайеса – префиксный.

Доказательство: Рассмотрим El (n) и El (m). Если хотя бы одно из этих слов начинается с 1, то это либо 0, либо 1, утверждение доказано. Пусть n, m больше 1, вспомним теорему о дешифруемости кода: El(n) = α1αk, El(m) = β1βS (для определенности ks). Пусть количество 0, с которых начинается α, совпадает с количеством 0, с которых начинается β. Тогда рассмотрим второе подслово: если не совпадают, то префиксов не будет, если совпадают, то смотрим на конец, а там: n не равно m, а значит B(n) не равно B(m).

8.6Код Левенштейна

Пусть λ0(n) = [log n]. λk0(n) = λ0 (λk-10(n)) = [log…[log n]].

Для любого n существует S такое, что: λS0(n) = 0, λS-10(n) = 1.

Положим Lev(0)=0, Lev(1) =10. Пусть n > 1. Тогда

Lev(n) = 11…10 B(λS-20(n))…B(λ0(n))B(n), где 11…10 – слово из S единиц и одного нуля.

Утверждение: Длина кода Левенштейна задается соотношением

|Lev(n)| = log n + log log n + o(log log n).

Утверждение: Код Левенштейна префиксный

Пример:

Lev(75) = 11110 0 10 001011

маркер B( λ0 (λ0(n)) B(λ0(n)) B(n)

S = 4

9Блочное кодирование и теорема Шеннона.

Используя свойства энтропии можно в каком-то смысле уточнить теорему Шеннона. Пусть мы будем кодировать не буквы алфавита A, а блоки из k букв алфавита A. Вероятность каждого блока – это произведение вероятностей входящих в него букв. Тогда блок может быть представлен как произведение независимых событий. Энтропию такого блока H(AA…A) обозначим Hk(A). Минимальную стоимость кодирования для блока обозначим через Ck(A). Очевидно, что минимальная стоимость кодирования C(A) для одной буквы блока удовлетворяет соотношению C(A) Ck(A)/k.

Из свойства энтропии (5) следует, что H(A)= Hk(A)/k. Из этих соотношений и теоремы Шеннона для блоков

Ck(A)1 ≤ Hk(A)/logq ≤Ck(A) следует

Ck(A)/k1/k ≤ H(A)/logq ≤Ck(A)/k.

Отсюда при k →∞ получаем, что H(A)/logq → Ck(A).

За такую точность приходится платить трудоемкостью алгоритмов кодирования (декодирования).

Таким образом, была доказана теорема.

Теорема. Для любого ε > 0 существует Nε такое, что при блочном кодировании с числом блоков N > Nε справедливо неравенство |Cε(A) – H(A)| < ε.

Здесь Cε(A) - среднее число символов на одну букву в данном алгоритме кодирования. (Например, блочный алгоритм Хаффмена.)

Данное утверждение известно как теорема Шеннона для канала без шума. Приведем это утверждение в более привычной формулировке.

Пусть скорость источника А - Vc букв в секунду.

Тогда можно считать, что на одну букву приходится H(А) битов. Тогда битовая скорость источника vc = Vc H(X).

Представим, что битовый поток поступает в канал (без искажений).

Канал

Получатель

Бинарный

поток

Бинарный

поток

Проблема: синхронизация скорости источника и пропускной способности канала.

Очевидно, что если по каналу можно передавать информацию со скоростью vk < Vc log n, то могут произойти потери информации, так как max H(А) = log n. Если же технические возможности канала таковы, что он обеспечивает скорость vk Vc log n, то информация может быть передана без потерь.

Теорема. (Торема Шеннона для канала без шума). Для источника A с энтропией H(A) скорость v передачи по каналу без шума удовлетворяет условиям:

  1. v > Vc H(X).

  2. Существует такая кодировка букв источника битовыми словами, что для любого ε > 0 v< Vc H(X) + ε.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]