КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Алгоритм Хаффмена
Пусть имеются распределения вероятностей p1 ≥ p2 ≥… ≥ pn (1) причем =1,
Положим pj =+, поместим pj в соответствующее место (чтобы условие (1) выполнялось) распределения вероятностей и запомним позицию. р1,р2, …,рj, …, рn-2, рn-3 (2) Сложим последние две вероятности =+и поместим его в соответствующее место распределения и запомним это место. Получили новое распределение. Здесь складываем последние две вероятности и помещаем в соответствующее место, и так далее, пока не получим две вероятности. Назначаем первой букве код 0, а второй 1. Если первая вероятность является суммой, то исключаем ее из распределения, код ее опускаем на второе и третье место (подняв код второй вероятности на первое место) и приписываем 0 и 1. Новая первая вероятность – сумма? Да. Все нижние вероятности сдвигаем вверх, вместе с кодами, а код являющейся суммой опускаем вниз на две последние строчки, приписав ему ноль в предпоследней строчке и 1 в последней. Если вероятность первой строки не является суммой, то код первой букве назначен, и мы переходим ко второй вероятности. Разбиваем её (если она является суммой) и переносим код вниз с приписыванием 0 и 1. И так до тех пор, пока не исчерпаем все суммы. Пример. вероятности 11 12 13 14 15 16 17 18 19 0,25 0,25 0,25 0,25 0,25 0,25 0,290,460,64 0,15 0,15 0,15 0,15 0,220,24 0,25 0,29 0,46 0,12 0,12 0,120,14 0,15 0,22 0,24 025 0,11 0,11 0,12 0,12 0,14 0,15 0,22 0,08 0,11 0,11 0,12 0,12 0,14 0,06 0,08 0,08 0,11 0,11 0,06 0,06 0,06 0,08 0,06 0,06 0,06 0,06 0,06 0,05 В каждом из столбцов подчеркнуты вероятности, являющиеся суммами двух вероятностей. Именно их будем разбивать на соответствующие слагаемые при построении схем оптимального кодирования, в соответствии с теоремой об оптимальном кодировании. Перейдем к назначению кодов. Столбец 19 содержит две вероятности, поэтому оптимальными будут коды длиной 1 (столбец 28). Коды 28 27 26 25 24 23 22 21 0 1 00 01 01 01 01 01 1 00 01 10 11 11 11 11 01 10 11 000 001 100 100 11 000 001 100 101 0000 001 100 101 0000 0001 101 0000 0001 0010 0001 0010 0011 0011 1010 В первой строке 19 столбца вероятность подчеркнута. Это значит, что она является суммой. Разбиваем ее на два слагаемых и получаем 18 столбец. Первый код столбца 28 опускаем в две строчки, следующие за последней, и приписываем 0 в одной строке и 1 в другой. Поднимем все строки вверх. Получим коды (столбец 27) для распределения 18 столбца. В первой строке 18 столбца вероятность подчеркнута. Это значит, что она является суммой. Разбиваем ее на два слагаемых и получаем 17 столбец. Первый код столбца 27 опускаем в две строчки, следующие за последней, и приписываем 0 в одной строке и 1 в другой. Поднимем все строки вверх. Получим коды (столбец 26) для распределения 17 столбца. В первой строке 17 столбца вероятность подчеркнута. Это значит, что она является суммой. Разбиваем ее на два слагаемых и получаем 16 столбец. Первый код столбца 26 опускаем в две строчки, следующие за последней, и приписываем 0 в одной строке и 1 в другой. Поднимем все строки вверх. Получим коды (столбец 25) для распределения 16 столбца. В 16 столбце подчеркнута вторая вероятность. Это значит, что она является суммой. Разбиваем ее на два слагаемых и получаем 15 столбец. Первый код столбца 25 уже назначен, поэтому мы его не трогаем, а опускаем второй в две строчки, следующие за последней, и приписываем 0 в одной строке и 1 в другой. Поднимем все строки ниже первой вверх. Получим коды (столбец 24) для распределения 15 столбца. Продолжая в том же духе, получим 21-ый столбец кодов, соответствующих распределению 11 столбца, т.е. исходному распределению.
Дата добавления: 2014-01-06; Просмотров: 342; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |