Приклад кодування Хафмана.
Закодуємо поліндром(рядок, що читається однаково за обома напрямками):
A MAN A PLAN A CANAL PANAMA.
Початковій пул:
A C L M N P <SPACE> .
10 1 2 2 4 2 6 1
1.Два значення з найменшою появою у тексті (=1)-символи «С» та «.». Використовуємо ці символи для створення вузла дерева. Призначаємо цьому вузлу значення частоти, що дорівнює частоті гілок, що відходять від вузла. Маємо пул з вузлом дерева:
A L M N P <SPACE>
10 2 2 4 2 6
С .
1 1
2. Чотири елементи, що відображені в пулі, мають нижчу частоту, що = 2. Беремо «P» і вузол дерева, з’єднуємо їх між собою, щоб створити новий вузол дерева із сумарною частотою, що = 4.
A L M N <SPACE>
10 2 2 4 6
4
Р2
С .
1 1
3.Тепер із залишених символів найменша частота зустрічається у букв L та M. Оскільки всім доступним гілкам дерева призначені більші частоти, необхідно створити новий вузол, не з’єднаний з деревом:
A N <SPACE>
10 4 4 6 4
L M Р
2 2 2 С .
1 1
4. Тепер є два вузли дерева та буква «N», що зв’язані з найменшою частотою, що = 4. Ми обираємо букву «N» і приєднуємо її до дерева:
A <SPACE>
10 4 6 N 4
4 2
L M Р
2 2 2 С .
1 1
5. Із залишених елементів:
A
10 10 8
<SPACE> 4 N 4
6 4 2
L M Р
2 2 2 С .
1 1
6. Тепер залишились 2 вузла дерева та буква «А». Ми довільно вирішуємо з’єднати два вузли дерева, а не букву з одним із цих вузлів:
A 18
10 10 8
<SPACE> 4 N 4
6 4 2
L M Р
2 2 2 С .
1 1
Дата добавления: 2014-12-08; просмотров: 1131;