Задача 7.2.3
Побудувати ефективні нерівномірні коди Хаффмена та Шеннона-Фано для кодування символів немарковського джерела з алфавітом ; ймовірності виникнення символів мають такі значення:
Розв’язання.Спочатку побудуємо нерівномірний код за методикою Шеннона-Фано. Згідно з алгоритмом упорядковуємо символи по незростанню ймовірностей та виконуємо перший поділ множини символів на дві підмножини. Однак цей поділ не є однозначним: перший варіант поділу – на та
, другий варіант – на
та
. Обидва варіанти дають однакові суми ймовірностей появи символів підмножин: 0,4 та 0,6. Таблиці 7.3 та 7.4 відображають побудову кодів Шеннона-Фано для двох варіантів.
Таблиця 7.3
![]() | ![]() | Кодова комбінація | ![]() | Номер поділу | |
0,4 | ![]() | ||||
0,2 | ![]() | ||||
0,15 | ![]() | ||||
0,15 | ![]() | ||||
0,1 | ![]() |
Таблиця 7.4
![]() | ![]() | Кодова комбінація | ![]() | Номер поділу | |
0,4 | ![]() | ||||
0,2 | ![]() | ||||
0,15 | ![]() | ||||
0,15 | ![]() | ||||
0,1 | ![]() |
Середня довжина кодової комбінації для першого варіанта
![]() |
для другого
![]() |
Зрозуміло, що хоча б один з цих кодів (той, що має більшу середню довжину кодової комбінації) не є оптимальним. Таким чином методика Шеннона-Фано не гарантує оптимальності коду.
Для отримання коду Хаффмена будуємо кодове дерево (рис.7.4), приписуємо гілкам символи алфавіту двійкового коду та записуємо кодові комбінації: ;
;
;
;
. Символи двійкового алфавіту приписувались гілкам дерева цілеспрямовано таким чином, щоб код цілком збігався з першим варіантом коду, побудованим за методикою Шеннона-Фано. Цей код є оптимальним з середньою довжиною кодової комбінації
. Ентропія джерела H(X) = 2,146 біт. Відносна різниця середньої довжини оптимального ефективного коду та ентропії джерела дорівнює
[ ( 2,2 – 2,146 ) / 2,146 ] ´ 100% = 2,52%.
х1 | х2 | х3 | х4 | х5 |
Рис. 2.4. Кодове дерево до задачі 2.2.3
Дата добавления: 2014-12-22; просмотров: 527;