Алгоритм Шеннона

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Кодування Шеннона, назване на честь творця, Клода Шеннона, — безвтратна техніка стиснення даних для побудови префіксного коду, яка ґрунтується на наборі символів і їх імовірностях (розрахованих або виміряних). Кодування Шеннона субоптимальне в тому сенсі, що не досягає найменшої можливої очікуваної довжини кодового слова, подібно до кодування Гаффмана, і не краще але інколи рівне кодуванню Шеннона — Фано.

Метод був першим у своєму роді, цю методику використано під час доведення теореми Шеннона про завадостійке кодування[ru] в його статті 1948 року «Математична теорія зв'язку»[1].

Цей метод кодування породив галузь теорії інформації, і без нього світ не мав би жодного з багатьох наступників; наприклад кодування Шеннона — Фано, кодування Гаффмана або арифметичного кодування. Значна частина нашого повсякденного життя пов'язана з цифровими даними, і це було б неможливим без кодування Шеннона та постійної еволюції його методів.[2]

У кодуванні Шеннона символи розміщуються в порядку від найбільш імовірних до найменш імовірних. Їм призначаються коди з перших цифр двійкового розкладу кумулятивної ймовірності . Тут позначає функцію стеля, яка округлює до найближчого цілого значення, більшого або рівного .

Приклад[ред. | ред. код]

У таблиці наведено приклад кодування методом Шеннона. За підсумковим кодом можна помітити, що він є менш оптимальним, ніж алгоритм Шеннона — Фано.

Перший крок — підрахунок імовірностей кожного символу. Потім рахується число для кожної ймовірності. Наприклад, для  воно дорівнює 3 ( — найменший степінь двійки —3, отже ). Після цього підраховується сума ймовірностей від 0 до i—1 і переводиться в двійкову форму. Потім дробова частина усікається зліва до  знаків.

ai p (ai) li Сума pnвід n=0 до i—1 Сума за p(aibin підсумковий 

код

1 0.36 2 0.0 0.0000 00
2 0.18 3 0.36 0.0100 010
3 0.18 3 0.54 0.1000 100
4 0.12 4 0.72 0.1011 1011
5 0.09 4 0.84 0.1101 1101
6 0.07 4 0.93 0.1110 1110

Примітки[ред. | ред. код]

  1. Shannon, Claude E. (July 1948). A Mathematical Theory of Communication (PDF). Bell System Technical Journal. 27 (3): 379—423. doi:10.1002/j.1538-7305.1948.tb01338.x. hdl:11858/00-001M-0000-002C-4314-2. Архів оригіналу (PDF) за 15 лютого 2019. Процитовано 17 серпня 2021.
  2. Ze-Nian Li; Mark S. Drew; Jiangchuan Liu (9 квітня 2014). Fundamentals of Multimedia. Springer Science & Business Media. ISBN 978-3-319-05290-8. Архів оригіналу за 17 квітня 2021. Процитовано 17 серпня 2021.