Изменения

Перейти к: навигация, поиск
Построение кода Хаффмана
€В приведенном ниже псевдокоде предполагается,что <tex>C</tex> - множество,состоящее из <tex>n</tex> символов,и что каждый из символов <tex>c \in C</tex> - объект с определенной частотой <tex>f(c)</tex>.В алгоритме строится оптимальное дерево <tex>T</tex>,соответствующее оптимальному коду,причем построение идет в восходящем направлении.Процесс построения начинается с множества,состоящего из <tex>|C|</tex> листьев,после чего последовательно выполняется <tex>|C|-1</tex> операций "слияния",в результате,которых образуется конечное дерево.
HUFFMAN(<tex>C</tex>)
struct Node //Звено дерева
int <math>\mathrm{data}</math> //пара ключ-значение
Node *left,*right
<math>\mathrm{n}</math> = <math>\mathrm{|C|}</math>
queue <char> <math>\mathrm{Q}</math>
int <math>\mathrm{f}</math>[<math>\mathrm{n}</math>]
'''for''' <math>\mathrm{i}</math> = 1 '''to''' <math>\mathrm{n}</math> <math>\mathrm{Q}</math> =.insert(<math>\mathrm{f}</math>[<math>\mathrm{Ci}</math>],<math>\mathrm{Ci}</math>) //пары в очереди,где f-частота соответствующего символа(ключ),C-множество символов(то есть значение) '''for''' <math>\mathrm{i}</math> = 1 '''to''' <math>\mathrm{n}</math> - 1 выделить память для узла Z //чтобы не было претензий по его определению
(<math>\mathrm{f}</math>[<math>\mathrm{x}</math>],<math>\mathrm{x}</math>) = <math>\mathrm{Q}</math>.extract_min()
<math>\mathrm{z}</math>.left = <math>\mathrm{x}</math>
Анонимный участник

Навигация