МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Розв'язанняЗаданий арифметичний код повідомлення 010001011– це 9-розрядна двійкова комбінація, що визначає число, яке належить відрізку закодованого повідомлення. Знайдемо це число: 0100010112 = 13910. Число є поточним кодом повідомлення. Воно належить інтервалу, який визначає перший символ повідомлення 0,272Î [1/4; 3/4) - це інтервал символу «В». Щоб знайти наступне значення поточного коду, потрібно від попереднього його значення відняти нижню границю інтервалу розкодованого символу і різницю розділити на ширину цього інтервалу. Отримуємо число, що належить відрізку наступного символу і т.д. Процес розкодування повідомлення такий:
Розкодування повідомлення потрібно закінчити після отримання 5-го символу. Таким чином, закодовано повідомлення BAABC. Задачі до розділу 5
1Побудувати таблиці кодів і обчислити їх середню довжину за алгоритмами Шеннона-Фано, Хаффмена і арифметичним для дискретної випадкової величини Х, заданої таким розподілом:
2Обчислити середню довжину кодів Шеннона-Фано, Хаффмена і арифметичного для значень дискретної випадкової величини Х, заданої таким розподілом ймовірностей:
3Обчислити середню довжину кодів Шеннона-Фано, Хаффмена і арифметичного для значень дискретної випадкової величини Х, заданої таким розподілом ймовірностей:
4Побудувати таблиці кодів і обчислити їх середню довжину за алгоритмами Шеннона-Фано, Хаффмена і арифметичним для дискретної випадкової величини Х, заданої таким розподілом:
5Побудувати коди Шеннона-Фано, Хаффмена, арифметичний для повідомлення ABAAAB. Обчислити їх довжину. Приблизний закон розподілу ймовірностей символів визначити з аналізу повідомлення. 6Закодувати за арифметичнималгоритмом повідомлення BAABC дискретної випадкової величини X, заданої таким розподілом ймовірностей: P(X=A)=1/3, P(X=B)=7/15, P(X=C)=1/5. Обчислити довжину коду. 7Побудувати арифметичний код для повідомлення AFXAFF. Обчислити його довжину. Приблизний закон розподілу ймовірностей символів визначити з аналізу повідомлення. 8Розпакувати повідомлення довжиною 6 символів, закодоване за арифметичним алгоритмом. Код повідомлення 101000001. Таблиця кодера така:
9Розпакувати повідомлення, закодоване за арифметичним алгоритмом. Кінець повідомлення відмічений маркером #. Код повідомлення 010101. Таблиця символів і інтервалів така:
10Розпакувати повідомлення з5 символів, закодоване за арифметичним алгоритмом. Код повідомлення 011110101. Таблиця символів і інтервалів така:
11Для кодування послідовностей довжиною 6 символів двійкового джерела, імовірність одиниці в якому 1/6, використовується арифметичний алгоритм. Таблиця кодера така:
Знайти відповідні незакодовані вхідні послідовності, якщо кодові слова на виході кодера такі: а) 10000; б) 01011; в)10111. Розділ 6 АДАПТИВНИЙ АЛГОРИТМ ХАФФМЕНА З УПОРЯДКОВАНИМ ДЕРЕВОМ
На відміну від раніше розглянутих методів стиснення адаптивний (динамічний) алгоритм Хаффменабільш практичний, однопрохідний, не потребуючий передачі таблиці кодів. У процесі кодування залежно від значення поточного символу, що надходять на вхід алгоритму, кодове дерево постійно змінюється – коригується відповідно до зміни статистики вхідного потоку. При декодуванні відбувається той самий процес. Для однозначності декодування використовується упорядкована структура кодового дерева. Упорядкованим деревом Хаффменаназивається бінарне дерево, вузли якого можуть бути перелічені у порядку неубування їх ваги зліва-направо на кожному рівні і знизу-вверх за рівнями. Якщо дерево упорядковано таким чином, то при зміні ваги існуючого вузла в дереві достатньо поміняти місцями два вузли: вузол, що порушив упорядкованість, і останній з наступних за ним вузлів меншої ваги. Після обміну вузлів місцями необхідно перерахувати вагу всіх вузлів-предків. На початку роботи алгоритму дерево містить тільки один спеціальний символ <ESC>, що завжди має частоту 0. Він необхідний для занесення в кодове дерево нового символу, що передається безпосередньо після <ESC>. При появі нового символу праворуч від вузла <ESC> додається лист і потім, якщо необхідно, дерево упорядковується. Ліві гілки кодового дерева позначаються 0, а праві - 1. Наведемо приклад впорядкованого таким чином дерева Хаффмена (рис. 2.8 а). Додамо в це дерево дві букви «А», тоді вузли «A» і «D» повинні помінятися місцями (рис. 2.8 б). Якщо додати ще дві букви «А», то потрібно поміняти місцями спочатку вузол «А» та вузол - батько «D» і «В», а потім вузол «Е» і вузол - брат «Е» (рис. 2.8 в-г).
а) б)
в) г)
Рисунок 2. 8
Розглянемо приклади кодування/ декодування повідомлень за адаптивним алгоритмом Хаффмена. Приклад 1 Побудуємо адаптивний код Хаффмена для повідомлення АССВСАААВС. Процес кодування цього повідомлення подається табл. 2.11, а відповідні зміни кодового дерева показані на рис. 2.9. Домовимося символом в лапках позначати двійковий восьмибітовий код символу за таблицею ASCII+. Таблиця 2.11
1)
2)
3) 4)
5) 6)
7) 8)
9)
Довжина стиснутого повідомлення Lадапт.Хаффмена = 41 (біт).
Довжина стиснутого повідомлення у коді ASCII+ LASCII+ =80 (бітів). Рисунок 2. 9 Приклад 2 Розкодуємо повідомлення ‘X’0‘F’00‘Z’1111101 100‘A’111010, закодоване за адаптивним алгоритмом Хаффмена. Обчислимо довжини кодів стиснутого та нестиснутого (ASCII+) повідомлень. Процес декодування ілюструється табл. 2.12 і рис. 2.10. Таблиця 2.12
1)
Продовження табл. 2.12
2)
3) 4)
5) 6)
7) 8)
9)
Довжина стиснутого повідомлення Lадапт.Хаффмена =51 (біт).
Довжина нестиснутого повідомлення у коді ASCII+ LASCII+=80 (бітів). Рисунок 2. 10
На практиці адаптивний алгоритм Хаффмена забезпечує високий ефект стиснення, оскільки він враховує локальні зміни ймовірностей символів у вхідному потоці. Цей алгоритм характеризується мінімальною надмірністю за умови кодування кожного символу повідомлення не менш ніж одним бітом інформації. До недоліків цього алгоритму так само, як для неадаптивних оптимальних алгоритмів, належить залежність ефекту стиснення від близькості ймовірностей символів значенням від'ємного степеня 2, що пов'язано з необхідністю округлення довжини кожної кодової комбінації до більшого цілого, оскільки кожний символ кодується цілим числом бітів. Тому адаптивний алгоритм Хаффмена у більшості випадків поступається арифметичному методу за рівнем стиснення даних. Зразки розв'язування задач до розділу 6 Приклад 1 Закодувати повідомлення СИНЯЯ СИНЕВА СИНИ за адаптивним алгоритмом Хаффмена. Обчислити довжини коду.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|