- •Кафедра: “Комп’ютерні науки”
- •Теоретичні відомості
- •Теорія інформації та передача сигналів
- •Кількість інформації, ентропія
- •Властивості ентропії
- •Завдання
- •Зміст звіту по лабораторній роботі
- •Теоретичні відомості
- •Ентропія складних повідомлень
- •Властивості ентропії складних повідомлень
- •Надмірність джерела повідомлень
- •Завдання
- •Приклад виконання завдання
- •Теоретичні відомості
- •Кодування інформації
- •Способи представлення кодів
- •Нерівномірні коди
- •Статистичне кодування
- •Код Шеннона-Фано
- •Завдання
- •Приклад виконання завдання
- •Теоретичні відомості
- •Оптимальний код - Хаффмана
- •Завдання
- •Приклад виконання завдання
- •Перелік рекомендованої літератури
Завдання
Побудувати двійковий оптимальний нерівномірний код Хаффмана для для передачі M повідомлень, якщо повідомлення над виході з джерела з’являються з ймовірностями p(xi). Використати варіанти завдань наведені в таблиці 1.1.
Побудувати кодове дерево для отриманого коду.
Розв’язати завдання 1 при умові, що q стане на одиницю більшим.
Побудувати кодове дерево для отриманого коду.
Модифікувати програму розроблену в лабораторній роботі №1, додавши можливість побудови коду Хаффмана для україномовних текстів. В програмі передбачити наступні функції:
можливість роботи з символами однієї з кириличних кодових таблиць (cyrilic windows, koi8ru, або ін..);
можливість вводу та копіювання текстового блоку;
відображення загальної кількості символів у текстовому блоці;
розмір текстового блоку повинен бути не менше 2000 символів;
при обчисленні ентропії враховувати символи знаків пунктуації (коми, крапки, тире та ін..);
відображення імовірностей появи символів у текстовому блоці;
відображення обчисленого значення ентропії;
відображення таблиці покрокової побудови коду Хаффмана.
відображення таблиці побудованого коду.
відображення інформації про розробника (курс, група, прізвище та ініціали);
виконання без застосування середовища програмування використаного для створення програми.
Оформити звіт.
Приклад виконання завдання
Побудувати оптимальний нерівномірний код (ОНК) Хаффмана для передачі 13 повідомлень, якщо повідомлення над виході з джерела з’являються з ймовірностями 0.25, 0.1, 0.05, 0.02, 0.03, 0.05, 0.11, 0.04, 0.01, 0,15, 0.01, 0,08, 0.1.
Розв’язання:
Складаємо список повідомлень які потрібно закодувати, кожному з яких відповідає його ймовірність. Отриманий список сортуємо в порядку спадання (таблиця). хi з різними імовірностями подано в таблиці 4.2.
Таблиця 4.2 – Побудова нерівномірного коду Хаффмана для тринадцяти повідомлень
Номер повідом-лення |
Ймовір - ність повідом- лення |
Ймовірності повідомлень при об’єднаннях | |||||
перш -ому |
друго -му |
третьо-му |
четверт- ому |
п’ятому |
шостому | ||
1 |
0,25 |
0,25 |
0,25 |
0,25 |
0,25 |
0,25 |
0,25 |
2 |
0,15 |
0,15 |
0,15 |
0,15 |
0,15 |
0,15 |
0,17 |
3 |
0,11 |
0,11 |
0,11 |
0,11 |
0,11 |
0,12 |
0,15 |
4 |
0,1 |
0,1 |
0,1 |
0,1 |
0,1 |
0,11 |
0,12 |
5 |
0,1 |
0,1 |
0,1 |
0,1 |
0,1 |
0,1 |
0,11 |
6 |
0,08 |
0,08 |
0,08 |
0,08 |
0,09 |
0,1 |
0,1 |
7 |
0,05 |
0,05 |
0,05 |
0,07 |
0,08 |
0,09 |
0,1 |
8 |
0,05 |
0,05 |
0,05 |
0,05 |
0,07 |
0,08 |
|
9 |
0,04 |
0,04 |
0,04 |
0,05 |
0,05 |
|
|
10 |
0,03 |
0,03 |
0,04 |
0,04 |
|
|
|
11 |
0,02 |
0,02 |
0,03 |
|
|
|
|
12 |
0,01 |
0,02 |
|
|
|
|
|
13 |
0,01 |
|
|
|
|
|
|
Ймовірності повідомлень при об’єднаннях |
Кодова комбінація ОНК | |||||
сьомому |
восьмому |
дев’ятому |
десятому |
одинадця тому |
дванадця тому | |
0,25 |
0,25 |
0,32 |
0,43 |
0,57 |
1 |
01 |
0,2 |
0,23 |
0,25 |
0,32 |
0,43 |
|
001 |
0,17 |
0,2 |
0,23 |
0,25 |
|
|
101 |
0,15 |
0,17 |
0,2 |
|
|
|
110 |
0,12 |
0,15 |
|
|
|
|
111 |
0,11 |
|
|
|
|
|
0001 |
|
|
|
|
|
|
1001 |
|
|
|
|
|
|
00000 |
|
|
|
|
|
|
00001 |
|
|
|
|
|
|
10001 |
|
|
|
|
|
|
100000 |
|
|
|
|
|
|
1000010 |
|
|
|
|
|
|
1000011 |
Для створеного коду побудуємо кодове дерево наведене на рисунку 4.1.
Рисунок 4.1 – Кодове дерево коду Хаффмана для тринадцяти повідомлень