Кодирование Шеннона — Фано

Этот калькулятор по таблице вероятностей символов выдает коды Шеннона — Фано

Эта страница существует благодаря следующим персонам

Timur

Timur

Anton

Создан: 3 года назад, Последнее изменение: 3 года назад
Creative Commons Attribution/Share-Alike License 3.0 (Unported)

Этот материал распространяется на условиях лицензии Creative Commons Attribution/Share-Alike License 3.0 (Unported). Это означает, что вы можете размещать этот контент на своем сайте или создавать на его основе собственный (в том числе и в коммерческих целях), при условии сохранения оригинального лицензионного соглашения. Кроме того, Вы должны отметить автора этой работы, путем размещения HTML ссылки на оригинал работы https://planetcalc.ru/8168/. Пожалуйста оставьте без изменения все ссылки на других авторов данной работы или работы, на основе которой создана данная работа (если таковые имеются в спроводительном тексте).

Немного теории по кодированию Шеннона — Фано можно найти сразу под калькулятором.

PLANETCALC, Кодирование Шеннона — Фано

Кодирование Шеннона — Фано

Таблица вероятности символов

ИмяЗначение
А25
Б25
В20
Г15
Д10
Е5
Записей:
1-6 из 6

Знаков после запятой: 2
Средняя длина символа
2.45
Энтропия
2.42
Файл очень большой, при загрузке и создании может наблюдаться торможение браузера.

Кодирование Шеннона

СимволКод
Б01
А00
В10
Г110
Д1110
Е1111

Кодирование Шеннона — Фано

Кодирование Шеннона — Фано получило свое наименование в области сжатия данных благодаря авторам Клоду Шеннону и Роберту Фано. Данный способ кодирования информации представляет собой технику создания префиксного кода, основанного на наборе символов и их вероятностей (оценочных или измеренных). Этот код не вполне оптимален, в том смысле, что он не дает минимально возможной длинны кода, как, например Код Хаффмана.

При кодировании методом Шеннона — Фано, символы распределяются в порядке от наиболее вероятных к наименее вероятным и затем разделяются на два набора, чьи суммарные вероятности максимально приближены друг к другу. Далее формируется первый разряд кода всех символов: символы из первого набора получают двоичный "0", символы из второго — "1". Процесс деления на две части и получения следующих разрядов повторяется для полученных наборов аналогичным образом, до тех пор, пока в полученном наборе не остается по одному символу. Когда набор уменьшается до одного символа — код символа полностью сформирован.

Этот алгоритм производит довольно эффективный код переменной длины, когда наборы имеют одинаковую суммарную вероятность. Единственный бит, отличающий их друг от друга используется с максимальной эффективностью.
Однако, метод Шеннона — Фано не всегда дает оптимального префиксного кода; набор вероятностей {0.35, 0.17, 0.17, 0.16, 0.15} - один из примеров, по которому будет сформирован неоптимальный код этим способом.

По этой причине, код Шеннона — Фано почти никогда не используется. Код Хаффмана — почти такой же простой с точки зрения вычислительной сложности, но он производит наиболее короткий по длине код.1

Ссылка скопирована в буфер обмена
PLANETCALC, Кодирование Шеннона — Фано

Комментарии