Изменения

Перейти к: навигация, поиск

Алгоритм Хаффмана для n ичной системы счисления

10 байт добавлено, 02:58, 4 января 2014
Построение кода Хаффмана
11 '''return''' Extract_Min(<math>\mathrm{Q}</math>) //Возврат корня дерева
В строке <tex>2</tex> инициализируется очередь с приоритетом <tex>Q</tex>,состоящая из элементов множества <tex>C</tex>.Цикл '''for''' в строках '''3-10 ''' поочередно извлекает по два узла,<tex>x</tex> и <tex>y</tex>,которые характеризуются в очереди с наименьшими частотами,и заменяет их в очереди с новым узлом <tex>z</tex>,представляющим объединение упомянутых выше элементов.Частота появления <tex>z</tex> вычисляется в строке '''9''' как сумма частот <tex>x</tex> и <tex>y</tex>.Узел <tex>x</tex> является левым дочерним узлом <tex>z</tex>,а <tex>y</tex> - его правым дочерним узлом.(Этот порядок является произвольным;перестановка левого и правого дочерних узлов приводит к созданию другого кода с той же стоимостью.) После <tex>n-1</tex> объединений в очереди остается один узел - корень дерева кодов,который возвращается в строке '''11'''. 
Алгоритм работает за <tex> {O(n\log{n}}) </tex> для алфавита из <math>\mathrm{n}</math> символов.
Анонимный участник

Навигация