Алгоритм Шеннона
Кодування Шеннона, назване на честь творця, Клода Шеннона, — безвтратна техніка стиснення даних для побудови префіксного коду, яка ґрунтується на наборі символів і їх імовірностях (розрахованих або виміряних). Кодування Шеннона субоптимальне в тому сенсі, що не досягає найменшої можливої очікуваної довжини кодового слова, подібно до кодування Гаффмана, і не краще але інколи рівне кодуванню Шеннона — Фано.
Метод був першим у своєму роді, цю методику використано під час доведення теореми Шеннона про завадостійке кодування[ru] в його статті 1948 року «Математична теорія зв'язку»[1].
Цей метод кодування породив галузь теорії інформації, і без нього світ не мав би жодного з багатьох наступників; наприклад кодування Шеннона — Фано, кодування Гаффмана або арифметичного кодування. Значна частина нашого повсякденного життя пов'язана з цифровими даними, і це було б неможливим без кодування Шеннона та постійної еволюції його методів.[2]
У кодуванні Шеннона символи розміщуються в порядку від найбільш імовірних до найменш імовірних. Їм призначаються коди з перших цифр двійкового розкладу кумулятивної ймовірності . Тут позначає функцію стеля, яка округлює до найближчого цілого значення, більшого або рівного .
У таблиці наведено приклад кодування методом Шеннона. За підсумковим кодом можна помітити, що він є менш оптимальним, ніж алгоритм Шеннона — Фано.
Перший крок — підрахунок імовірностей кожного символу. Потім рахується число для кожної ймовірності. Наприклад, для воно дорівнює 3 ( — найменший степінь двійки —3, отже ). Після цього підраховується сума ймовірностей від 0 до i—1 і переводиться в двійкову форму. Потім дробова частина усікається зліва до знаків.
ai | p (ai) | l i
|
Сума pnвід n=0 до i—1 | Сума за p(ai) bin | підсумковий
код |
---|---|---|---|---|---|
a 1 | 0.36 | 2 | 0.0 | 0.0000 | 00 |
a 2 | 0.18 | 3 | 0.36 | 0.0100 | 010 |
a 3 | 0.18 | 3 | 0.54 | 0.1000 | 100 |
a 4 | 0.12 | 4 | 0.72 | 0.1011 | 1011 |
a 5 | 0.09 | 4 | 0.84 | 0.1101 | 1101 |
a 6 | 0.07 | 4 | 0.93 | 0.1110 | 1110 |
- ↑ 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.
- ↑ 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.
Це незавершена стаття про алгоритми. Ви можете допомогти проєкту, виправивши або дописавши її. |