Математическая модель: алфавитное кодирование случайного источника.
Рассмотрим следующую модель. Имеется источник, который поочередно генерирует буквы алфавита A= (a 1 …an) с вероятностями p 1 …pn. То есть имеет место следующая ситуация.
Каждая буква ai генерируется с некоторой вероятностью pi. Эта вероятность pi не зависит от того, что выдал источник ранее и что он будет выдавать потом. Она также не зависит от очередности выдачи букв источником и от того, какой по счету от начала выдачи выдана данная буква. Такой источник называется источником Бернулли, что является частным случаем стационарного источника. На практике встречаются и другие источники. Для них приведенный ниже результаты неверны, но могут быть получены их аналоги. Энтропия по Шеннону Опр. Энтропией случайного источника (энтропией Шеннона) называется число H (A) = В качестве замечания приведем следующее рассмотрение, которое показывает, почему данная формула выглядит именно так. Пусть мы хотим ввести меру µ (A), которая характеризовала бы случайный источник. Наложим на меру ограничения: 1) µ (A) = φ (p 1 …pn) 2) µ (A) ≥ 0, µ (A) < M 3) A×A – опыт на множестве A – 2 раза. Вероятность генерации следующей буквы не зависит от предыдущей итерации. φ (n 2) исходов. φ (nk) = k φ (n) 4) φ (n) – монотонна по n 5) p 1 < … pn = 1 /n → φ (n) схожа с энтропией по Хартли. Пусть a, n – целые неотрицательные числа. Для любых a, n существует k: 2 k ≤ an ≤ 2 k+ 1 (1) k < n log a < k+ 1 Применим монотонность φ к (1): φ (2 k) ≤ φ (an) ≤ φ (2 k+ 1) k φ (2) ≤ n φ (a) ≤ (k+ 1) φ (2)
k
φ (a) – φ (ε)log a → 0 φ (a) = φ (2)log a (возникает в 5 случае) – мера неопределенности φ (n) = φ (2)log n – константа, необходимая для различия 2 элементов, полагаем ее равной 1 (отсюда и следует понятие бита)
Опыт A: Пусть pi – рациональные числа, p 1 …pk, n – НОК знаменателей pi. Тогда
Опыт B:
Сначала определим, в какой группе необходимо исследовать события. Тогда
Энтропия по Шеннону и энтропия по Хартли. Заметим, что Энтропия по Хартли является частным случаем энтропии по Шеннону. Если все В следующем и других доказательствах нам потребуется математический факт, известный как неравенство Йенсена. Неравенство Йенсена. Пусть даны числа α 1 …αn, αi> 0,
Теорема: Пусть имеется случайный источник, который генерирует буквы алфавита A = (a 1 …an) с вероятностями p 1 …pn, тогда справедливо соотношение H (A) = Доказательство. Рассмотрим функцию f (x) = -x log x. Так как f’ (x) = - log x – 1 /ln 2 и f’’ (x) = - 1 /x, то при x ≥ 0 функция f (x) выпукла вверх. Тогда для нее справедливо неравенство Йенсена:
Положим ai = 1 /n, xi = pi,i=1,…,n. H (A) = Здесь мы учли, что Теорема доказана. Теорема Шеннона Рассмотрим теперь математическую модель, являющуюся объединением двух предыдущих. Случайный источник генерирует буквы алфавита А = (а 1, …, аn), к которым потом применяется некоторый алгоритм алфавитного кодирования φ. (Каждой букве ai алфавита A ставится в соответствие Bi= φ(ai) – слово длины li в алфавите B = (b 1, …, bq)). Как можно оценить качество такого алгоритма? В случае вероятностного источника такие количественные характеристики алгоритма как
В этом случае удобно использовать величину Если бы мы знали C(A), то смогли бы оценить качество нашего алгоритма ϕ. Следующая теорема (она известна под названием теоремы Шеннона для канала без шума) дает ответ на этот практически важный вопрос. Теорема. Справедливо соотношение
Доказательство. 1) Сначала докажем оценку снизу
В следующих выкладках все суммы берутся по i=1,..,n. Используется известное из математического анализа неравенство l n x
2) Для доказательства оценки сверху мы построим конкретный алгоритм алфавитного кодирования ϕ (известный как алгоритм Шеннона-Фано). Ведь если оценка сверху будет выполняться для некоторого Cϕ(A), то она будет выполняться и для C(A). В данном коде набор длин задается следующим соотношением.
Проверим, удовлетворяет ли этот набор неравенству Крафта.
Теперь построим код точно также, как это делалось выше при доказательстве теоремы о существовании префиксного кода. Оценим теперь сверху величину Cϕ(A) для этого кода. Cϕ(A) = Теорема доказана. Для случая бинарного алфавита В получаем неравенство Н (А) Пример. Рассмотрим алфавит А = {0,…,9}. Ниже приведены два способа префиксного дешифруемого кодирования цифр бинарными последовательностями. Первый способ – это простой перевод в двоичную запись.
1 0001 1 010 2 0010 2 001 3 0011 3 011 4 0100 4 100 5 0101 5 101 6 0110 6 1100 7 0111 7 1101 8 1000 8 1110 9 1001 9 1111
На рисунке по колонками приведены значения Cϕ(A) для обоих способов в предположении, что цифры генерируются случайным источником равновероятно. Из теоремы Шеннона следует оценка
С(А) Второй алгоритм дает достаточно близкий результат. (На самом деле можно показать, что для данного случайного источника С(А)=3,4.) Свойства энтропии. Здесь в качестве справки мы приведем некоторые свойства энтропии по Шеннону. Это даст вам возможность лучше понять смысл этого понятия и сферу его практического применения. Случайный источник можно трактовать как событие с множеством исходов, вероятности которых заданы. Рассмотрим два события X и Y. Исходы первого события будем обозначать через x, а второго - через y. Введем по определению понятие условной энтропии H(X/y). H (X|y) = Это случайная величина. А теперь усредним H (X|y) по всему множеству Y и получим уже неслучайную величину H (X|Y).
Перейдем теперь к перечислению свойств. В некоторых случаях приводятся доказательства. 1) H (X) 2) H (X) является выпуклой вверх функцией своих аргументов функция своих аргументов p 1 …pn. 3) H (X) 4) H (X|Y) информация не увеличивает энтропию).
5) Пусть Х и Y – независимые события. Справедливо равенство H (XY) = H (X) + H (Y). 6) Пусть два события имеют равное число исходов, а вероятности этих исходов как множества совпадают, т.е. они состоят из одних и тех же (p 1,…, pn), но в разном порядке. Справедливо равенство H (X) = H (X ’). 7) Пусть есть событие Х = (p 1,…, pn) и некоторое подмножество его исходов А Справедливо неравенство H (х) Доказательство. Доказательство следует из свойств следует из (2) и (6). По свойству (2) энтропия выпуклая вверх функция своих аргументов, а для такой функции f выполняется неравенство Йенсена Без ограничения общности считаем, что первые m элементов Х образуют подмножество А, т.е. исходы X задаются вероятностями p 1 …pmpm+ 1 …pn Строим вспомогательные события:
X 2 = p 2 p3…pmp 1 pm+ 1 …pn X3 = p3p4…p 1 p 2 pm+ 1 …pn
Xm = pmp 1 …pm- 2 pm- 1 pm+ 1 …pn Из свойства (6)следует, что H (X) = H (X1) = … = H (X m) (все события состоит из одинаковых множеств значений вероятностей). Тогда можно ХА представить в виде (H (X) + H (X1)+ … + H (X m))/m. Применяем неравенство Йенсена, где все αi=1/m. Получаем H(ХА)≥ (H (X) + H (X1)+ … + H (X m))/m. Отсюда следуетH(ХА)≥H(A). 8) H (XY) = H (X) + H (Y|X) = H (Y) + H (X|Y). Следует из известных в теории вероятностей соотношений: P (XY) = P (X) 9) H (X 1 X 2 …Xn) = H (X 1) + H (X 2 | X 1) + H (X3| X 1 X 2) + … + H (Xn| X 1 X 2 … Xn- 1). Следует из известных в теории вероятностей соотношения: P (X 1 …Xn) = P (X 1) 10) H (X|YZ) Доказывается по аналогии с доказательством свойства (4). 11) Пустьзадано событие X и на множестве его исходов определена функция y = g (x). Введем событие Y с множеством исходов y = g (x). Тогда H (Y) Доказательство. Следует из свойства (8). H (X) + H (Y|X) = H (Y) + H (X|Y) Т.к. у полностью определяется по х, то H (Y|X) = 0. Алгоритмы кодирования Алгоритм Шеннона (Фано) Есть некоторые буквы:
H = 1/4 log 4 + 1/4 log 4 + 1/8 log 8 + 1/8 log 8 + 1/8 log 8 + 2 * 1/16 log 16 = 1 + 9/8 + 1/2 = 2, 625 Шаги алгоритма: 1) Упорядочиваем по вероятности 2) «Дихотомия»: разбиваем на части, вероятности которых одинаковы.
a 1 00 a 2 01 a 3 100 a 4 101 a 5 110 a 6 1110 a 7 1111 lш = 21/7 = 3 Пример:
l = 3, lш = 12/5 = 2,4 H = 7/18 log 18/7 + 1/2 log 6 + 1/5 log 9 = 2,17
Алгоритм Хаффмана Заведомо дает меньшее решение, чем по Шеннону.
a 2 1/4 a 3 1/8 a 4 1/8 a 5 1/8 a 6 1/16 a 7 1/16 В этом алгоритме идут итерации, по сути это построение листьев бинарного дерева. (1, 2, 3, 4, 5, 6, 7) → (1, 2, 3, 4, 5, (6, 7)) → (1, 2, (3, 4), 5, (6, 7)) → (1, 2, (3, 4), (5, 6, 7)) → ((1, 2), (3, 4), (5, 6, 7)) → ((1, 2), (3, 4, 5, 6, 7))
1 00 2 01 3 100 4 101 5 110 6 1110 7 1111
Блочное кодирование
a 00 1/16 000 b 01 3/16 001 c 10 3/16 01 d 11 9/16 1 H (xx) = H (x) + H (x) = 2 H (x) = 1,62 Хаффман: (a, b, c, d) → ((a, b), c, d) → (a, b, c), d)
l (xx) = ∑ pi li = 3/16 + 9/16 + 6/16 + 9/16 = 27/16 l (x) = 27/32 = 0, 844
b 001 3/64 00001 c 010 3/64 00010 d 011 9/64 010 e 100 3/64 00011 f 101 9/64 001 g 110 9/64 001 h 111 27/64 1 (a, b, c, D, e, f, g, H) → ((a, b), c, D, e, f, g, H) → ((a, b), (c, e), D, f, g, H) → ((a, b, c, e), D, f, g, H) → ((a, b, c, e), (D, f), g, H) → ((a, b, c, e, g), (D, f), H) → ((a, b, c, D, e, f, g), H)
l = 5/64 + 15/64 + 15/64 + 15/64 +28/64 + 15/64 +27/64 +27/64 +27/64 = 50/64 +108/64 = 158/64 = 2,46875 Тогда: X → l = 1 XX → l = 0,844 XXX → l = 0,823 H = 0,81 Пусть q (количество букв в кодируемом алфавите) = 2: H (α) ≤ l (x) ≤ H (x) + 1
l (x) – 1 ≤ H (x) ≤ l (x) Hk (x) = H (xx….x) → (по т. Шеннона) lk (x) – 1 ≤ Hk (x) ≤ lk (x) Тогда Hk (x) = k H (x) По определению lk (x) = k l (x) (правильнее l (x) = 1 /k lk (x)). Получим: l (x) – 1 /k ≤ H (x) ≤ l (x). Устремляем к бесконечности и делаем l (x) сколь угодно близким к H (x). За такую точность приходится платить трудоемкостью алгоритмов кодирования (декодирования).
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|