Принцип работы кодера Шеннона-Фано заключается в присвоении двоичных кодов символам в соответствии с частотой их появления. www.naukri.com Например, если символ «C» встречается чаще, чем символ «B», то «B» получает более короткий двоичный код, чем «C». www.naukri.com
Алгоритм Шеннона-Фано использует коды переменной длины: часто встречающийся символ кодируется кодом меньшей длины, редко встречающийся — кодом большей длины. ru.wikipedia.org ru.ruwiki.ru
Основные этапы алгоритма: ru.wikipedia.org
- Вычисление вероятностей символов. www.naukri.com Для этого подсчитывают, сколько раз встречается каждый символ, и определяют вероятность каждого символа, разделив количество встреч на общее число символов. www.naukri.com
- Сортировка символов по убыванию вероятностей. ru.wikipedia.org Наиболее часто встречающиеся символы находятся слева, а наименее распространённые — справа. en.wikipedia.org
- Разделение символов на две части так, чтобы общее количество частот в левой части было как можно ближе к общему количеству частот в правой. en.wikipedia.org
- Присвоение двоичных цифр. ru.wikipedia.org Для первой части алфавита присваивается цифра «0», для второй части — «1». ru.wikipedia.org
- Рекурсивное деление полученных частей и назначение им соответствующих двоичных цифр в префиксном коде. ru.wikipedia.org
- Когда размер подалфавита становится равен нулю или единице, то дальнейшего удлинения префиксного кода для соответствующих ему символов первичного алфавита не происходит. ru.wikipedia.org
Коды Шеннона-Фано — префиксные, то есть никакое кодовое слово не является префиксом любого другого. ru.wikipedia.org ru.ruwiki.ru Это свойство позволяет однозначно декодировать любую последовательность кодовых слов. ru.wikipedia.org