Garbage / Информатика / 2.1.2.1 - Схема двоичного кодирования текстов по Р. Фано
.pdfСхема двоичного кодирования текстов по Р. Фано
Предложенная американским специалистом Р. Фано схема двоичного кодирования сводится к выполнению следующих операций.
1)Составить список букв алфавита (исходное множество букв) в порядке убывания значений соответствующих им вероятностей.
2)Разбить этот список на два подсписка (подмножества букв) таким образом, чтобы значения вероятностей того, что наугад взятая из рассматриваемого текста буква окажется в первом или во втором из этих подмножеств, были бы по возможности близки.
3)Приписать произвольному одному из этих подмножеств (подсписков) символ "0", а другому - "1".
4)Рассматривая каждое из этих подмножеств (подсписков) как исходное, применительно к каждому из них осуществить операции, указанные в пунктах (2)
и(3).
5)Этот процесс продолжать до тех пор, пока в каждом из очередных подмножеств не окажется по одной букве.
6)Каждой букве приписать двоичный код, состоящий из последовательности нулей и единиц, встречающихся на пути из исходного множества букв ко множеству, состоящему из одной этой буквы.
Пользуясь схемой Р. Фано (см. рис. 2.1) применительно к приведенному выше примеру, легко установить наборы двоичных символов, соответствующие буквам исходного текста:
Буква |
Двоичный код |
Буква |
Двоичный код |
А |
00 |
Е |
1011 |
В |
01 |
F |
110 |
С |
100 |
G |
1110 |
D |
1010 |
Н |
1111 |
Если обозначить через LA = 2, LB = 3, LC = 3,... числа двоичных символов в кодовых наборах, соответствующих буквам А, В, С, ..., то среднее число двоичных символов, отводимых под одну букву исходного алфавита, можно определить по формуле
l = р(А)lА + p(В)lB +...+ p(Н)lH = 2,8.
Таким образом, с переходом к переменной длине кодовых наборов, отводимых под каждую букву исходного текста, удается на 7% (2,8 вместо трех символов на одну букву) сократить число двоичных символов в закодированном тексте. Правда, это связано с некоторым усложнением процедур кодирования и декодирования. Будучи достаточно эффективной, схема кодирования Р. Фано не всегда гарантирует, что при заданном наборе значений вероятностей средняя длина кодовых наборов l окажется наименее возможной. Такую гарантию дает другая схема кодирования, предложенная американским математиком Д. Хаффманом. Исходные соображения здесь те же, что и при рассмотрении схемы Р. Фано, однако, оперируя более тонким механизмом кодирования, Д. Хаффману удалось достичь наименьшего возможного при побуквенном кодировании значения средней длины кодовых наборов.