Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Код Хаффмена

Стискаючи файл за алгоритмом Хаффмена, необхідно спочатку прочитати файл цілком і підрахувати, скільки разів зустрічається кожен символ з розширеного набору ASCII. Якщо ми будемо враховувати всі 256 символів, то для нас не буде різниці в стиску текстового і EXE файла.

Алгоритм Хаффмена вимагає читати вхідний файл двічі, один раз, вважаючи частоти входження символів, а другий раз, виконуючи безпосереднє кодування.

Отже, в основі алгоритму кодування Хаффмена лежить простий принцип: символи заміняються кодовими послідовностями різної довжини. Чим частіше використовується символ, тим коротше відповідна послідовність. Наприклад, для англійського тексту символам e, t, a можна поставити відповідні 3-бітові послідовності, а j, z, q — 8-бітові. В одних варіантах алгоритму Хаффмена використовуються готові кодові таблиці, в інших — кодова таблиця будується на основі статистичного аналізу умісту файла. Застосування коду Хаффмена гарантує можливість декодування. Це важливо, тому що "упаковані" кодові послідовності мають різну довжину, на відміну від звичайних, довжина яких постійна і дорівнює 8 біт на символ.

Застосування алгоритму коду Хаффмана полягає в наступному. Літери вихідного алфавіту виписуються в стовпець в порядку зменшення їх ймовірностей. Останні дві літери стовпця об'єднуються в одну - допоміжну літеру, якої приписується сумарна ймовірність. Потім формується наступний стовпець з урахуванням нової літери за принципом зменшення ймовірностей.

Процес повторюється і продовжується до тих пір, поки залишиться одна літера з імовірністю, рівною 1. Кодові комбінації можна легко отримати, побудувавши кодове дерево. Вершиною дерева є остання літера, процес розгалуження проводиться з урахуванням отриманої таблиці, рухаючись у зворотному напрямку. Кожному з двох ребер, що беруть участь в об'єднанні, приписується кодовий символ: ребру з більшою ймовірністю - «1», з меншою - «0». Рухаючись від вершини дерева до однієї з літер алфавіту по відповідним ребрах, отримуємо її кодову комбінацію.

 

Приклад 4.1. Проведемо кодування за методом Хаффмена. Вихідний алфавіт складається з шести літер із заданими ймовірностями. Складемо таблицю.

 

Ai p(Ai) Допоміжні стовпці

A1 0.4 0.4 0.4 0.4 0.4 1.0
A2 0.25 0.25 0.25 0.25 0.6  
A3 0.15 0.15 0.15 0.35    
A4 0.10 0.10 0.20      
A5 0.06 0.10        
A6 0.04          

 

Складемо таблицю кодування.

 

Ai p(Ai) Допоміжні стовпці

A1 0.4 0 0.4 0 0.4 0 0.4 0 0.4 0 1.0
A2 0.25 10 0.25 10 0.25 10 0.25 10 0.6 1  
A3 0.15 110 0.15 110 0.15 110 0.35 11    
A4 0.10 1110 0.10 1110 0.20 111      
A5 0.06 11110 0.10 1111        
A6 0.04 11111          

 

Отриманий код:

 

A1 A2 A3 A4 A5 A6

 


Читайте також:

  1. Кодування та стиснення інформації методом хаффмена та Шенона-Фано




Переглядів: 504

<== попередня сторінка | наступна сторінка ==>
Кодування та стиснення інформації методом хаффмена та Шенона-Фано | Код Шеннона-Фано

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.001 сек.