Записываем фразу:
ШВЕИ САМИ СШИЛИ ШУБУ ИЗ ШИНШИЛЛЫ
считаем количество появлений символов:
Символ "Ш" Количество повторов в тексте 5
Символ "В" Количество повторов в тексте 1
Символ "Е" Количество повторов в тексте 1
Символ "И" Количество повторов в тексте 7
Символ " " Количество повторов в тексте 5
Символ "С" Количество повторов в тексте 2
Символ "А" Количество повторов в тексте 1
Символ "М" Количество повторов в тексте 1
Символ "Л" Количество повторов в тексте 3
Символ "У" Количество повторов в тексте 2
Символ "Б" Количество повторов в тексте 1
Символ "З" Количество повторов в тексте 1
Символ "Н" Количество повторов в тексте 1
Символ "Ы" Количество повторов в тексте 1
Сортируем и получаем список нераспределенных узлов
- {"В" (1)}
- {"Е" (1)}
- {"А" (1)}
- {"М" (1)}
- {"Б" (1)}
- {"З" (1)}
- {"Н" (1)}
- {"Ы" (1)}
- {"С" (2)}
- {"У" (2)}
- {"Л" (3)}
- {"Ш" (5)}
- {" " (5)}
- {"И" (7)}
Объединяем {"В" (1)} и {"Е" (1)}
получаем узел {1 (2)} и добавляем в список вместо этих узлов
- {"А" (1)}
- {"М" (1)}
- {"Б" (1)}
- {"З" (1)}
- {"Н" (1)}
- {"Ы" (1)}
- {1 (2)}
- {"С" (2)}
- {"У" (2)}
- {"Л" (3)}
- {"Ш" (5)}
- {" " (5)}
- {"И" (7)}
Объединяем {"А" (1)} и {"М" (1)}
получаем узел {2 (2)} и добавляем в список вместо этих узлов
- {"Б" (1)}
- {"З" (1)}
- {"Н" (1)}
- {"Ы" (1)}
- {2 (2)}
- {1 (2)}
- {"С" (2)}
- {"У" (2)}
- {"Л" (3)}
- {"Ш" (5)}
- {" " (5)}
- {"И" (7)}
Объединяем {"Б" (1)} и {"З" (1)}
получаем узел {3 (2)} и добавляем в список вместо этих узлов
- {"Н" (1)}
- {"Ы" (1)}
- {3 (2)}
- {2 (2)}
- {1 (2)}
- {"С" (2)}
- {"У" (2)}
- {"Л" (3)}
- {"Ш" (5)}
- {" " (5)}
- {"И" (7)}
Объединяем {"Н" (1)} и {"Ы" (1)}
получаем узел {4 (2)} и добавляем в список вместо этих узлов
- {4 (2)}
- {3 (2)}
- {2 (2)}
- {1 (2)}
- {"С" (2)}
- {"У" (2)}
- {"Л" (3)}
- {"Ш" (5)}
- {" " (5)}
- {"И" (7)}
Объединяем {4 (2)} и {3 (2)}
получаем узел {5 (4)} и добавляем в список вместо этих узлов
- {2 (2)}
- {1 (2)}
- {"С" (2)}
- {"У" (2)}
- {"Л" (3)}
- {5 (4)}
- {"Ш" (5)}
- {" " (5)}
- {"И" (7)}
Объединяем {2 (2)} и {1 (2)}
получаем узел {6 (4)} и добавляем в список вместо этих узлов
- {"С" (2)}
- {"У" (2)}
- {"Л" (3)}
- {6 (4)}
- {5 (4)}
- {"Ш" (5)}
- {" " (5)}
- {"И" (7)}
Объединяем {"С" (2)} и {"У" (2)}
получаем узел {7 (4)} и добавляем в список вместо этих узлов
- {"Л" (3)}
- {7 (4)}
- {6 (4)}
- {5 (4)}
- {"Ш" (5)}
- {" " (5)}
- {"И" (7)}
Объединяем {"Л" (3)} и {7 (4)}
получаем узел {8 (7)} и добавляем в список вместо этих узлов
- {6 (4)}
- {5 (4)}
- {"Ш" (5)}
- {" " (5)}
- {8 (7)}
- {"И" (7)}
Объединяем {6 (4)} и {5 (4)}
получаем узел {9 (8)} и добавляем в список вместо этих узлов
- {"Ш" (5)}
- {" " (5)}
- {8 (7)}
- {"И" (7)}
- {9 (8)}
Объединяем {"Ш" (5)} и {" " (5)}
получаем узел {10 (10)} и добавляем в список вместо этих узлов
- {8 (7)}
- {"И" (7)}
- {9 (8)}
- {10 (10)}
Объединяем {8 (7)} и {"И" (7)}
получаем узел {11 (14)} и добавляем в список вместо этих узлов
- {9 (8)}
- {10 (10)}
- {11 (14)}
Объединяем {9 (8)} и {10 (10)}
получаем узел {12 (18)} и добавляем в список вместо этих узлов
- {11 (14)}
- {12 (18)}
Узлы 11 и 12 объединяем в корневой узел {13 (32)}и дерево готово.
Графическое изображение дерева строим начиная с корневого узла, в который входят узлы {11 (14)} и {12 (18)}
Каждый узел изображаем в виде прямоугольника из которого выходят 2 ребра ведущие к входящим в него узлам.
Левому ребру соответствует код 0, а правому код 1
Концевые узлы, содержащие символы текста, выделяем цветом.
Графически двоичное дерево кодов выглядит так:
по полученному дереву определяем коды символов как путь от корня до листа (концевого узла)
- Символ "И" код равен 01
- Символ " " код равен 111
- Символ "Ш" код равен 110
- Символ "Л" код равен 000
- Символ "У" код равен 0011
- Символ "С" код равен 0010
- Символ "Ы" код равен 10101
- Символ "Н" код равен 10100
- Символ "З" код равен 10111
- Символ "Б" код равен 10110
- Символ "М" код равен 10001
- Символ "А" код равен 10000
- Символ "Е" код равен 10011
- Символ "В" код равен 10010
Длина кодированного сообщения равна сумме произведений количества символов на длину их кодов:
5*3+1*5+1*5+7*2+5*3+<wbr />2*4+1*5+1*5+3*3+2*4+1<wbr />*5+1*5+1*5+1*5=109 бит
Кодированное сообщение выглядит так:
11010010100110111100<wbr />101000010001011110010<wbr />110010000111111000111<wbr />011000111110110111111<wbr />110011010011001000000<wbr />10101
ШВЕИ САМИ СШИЛИ ШУБУ ИЗ ШИНШИЛЛЫ
Длина исходного сообщения 32 байт или 256 бит в восьмибитном коде
сообщение содержит 14 различных символов. Длина кода одного символа при равномерном кодировании равна log₂(14)=4 бит
при равномерном кодировании минимальной длинны размер текста равен 32*4=128 бит
Коэффициэнт сжатия к восьмибитному коду K=256/109=~2.35
Коэффициэнт сжатия к равномерному коду минимальной длинны K=128/109=~1.17