Език :
SWEWE Член :Логин |Регистрация
Търсене
Енциклопедия на общността |Енциклопедия Отговори |Знаете въпрос |Vocabulary Knowledge |Качи знания
въпроси :]Хафман
Посетител (92.55.*.*)
Категория :[Хора][Друг]
Аз трябва да отговарям [Посетител (3.235.*.*) | Логин ]

Снимка :
Тип :[|jpg|gif|jpeg|png|] Байт :[<2000KB]
Език :
| Проверка на код :
Всички отговори [ 2 ]
[Посетител (58.214.*.*)]отговори [Китайски ]Време :2022-12-17
Когато Хъфман предлага това кодиране в началото на петдесетте години на миналия век, той конструира най-краткото кодиране на средната дължина въз основа на вероятността за появата на знаци. Това е кодиране с променлива дължина. При кодирането, ако дължината на всяка кодова дума е строго подредена в обратен ред на вероятността за появата на символа, съответстващ на кодовата дума, средната дължина на кодирането е най-малка. (Забележка: Кодовата дума е кодът, получен след кодирането на символа от Хъфман, а дължината му е различна в зависимост от вероятността символът да се появи, така че кодът на Хъфман е по-дълго кодиране.) И Хъфман кодира според поддървото на бащата, докато четенето му е точно обратното.

Статично кодиране
Този метод на кодиране е статично кодиране на Хъфман, което сканира данните, които трябва да бъдат кодирани два пъти: първото преминаване отчита честотата на всеки знак в оригиналните данни, използва получената честотна стойност, за да създаде дърво на Хъфман и трябва да запази информацията за дървото, т.е. честотната стойност на знака 0-255 (2 ^ 8 = 256) се съхранява в реда на дължината на 2-4BYTES (честотната стойност се съхранява в дължината на 4Bytes, а стойността на честотата се изразява в диапазона 0--2^). 32-1, което е достатъчно, за да покаже колко често се появяват знаци в големи файлове), така че да се създаде същото дърво на Хъфман за декомпресия при декомпресиране; Вторият пас кодира дървото на Хъфман, получено от първото сканиране, и съхранява кодираните кодови думи.СТАТИЧНИЯТ МЕТОД НА КОДИРАНЕ НА ХЪФМАН ИМА НЯКОИ НЕДОСТАТЪЦИ: ПЪРВО, НЕ Е ОТ ГОЛЯМО ЗНАЧЕНИЕ ДА СЕ КОДИРАТ ТВЪРДЕ КРАТКИ ФАЙЛОВЕ, ЗАЩОТО САМО СЪХРАНЯВАНЕТО НА ИНФОРМАЦИЯТА НА ДЪРВОТО НА ХЪФМАН В ДЪЛЖИНА ОТ 4 БАЙТА ИЗИСКВА 1024 БАЙТА ПРОСТРАНСТВО ЗА СЪХРАНЕНИЕ; Второ, когато се извършва кодиране на Хъфман, при съхраняване на кодираната информация, ако се използва с комуникационната мрежа, това ще доведе до голямо забавяне; Трето, при кодиране на големи файлове, честият достъп за четене и запис на диска ще забави скоростта на кодиране на данни...
Динамично кодиране
Затова по-късно е предложен динамичен метод за кодиране на Хъфман. Динамичното кодиране на Хъфман използва динамично променящо се дърво на Хъфман, кодирането на знака t 1 се основава на дървото на Хъфман, получено от първите t символи в оригиналните данни, кодирането и декодирането използват едно и също първоначално дърво на Хъфман, всеки обработен знак, кодирането и декодирането използват същия метод за модифициране на дървото на Хъфман, така че няма нужда да се запазва информацията за дървото на Хъфман за декодиране. Времето, необходимо за кодиране и декодиране на знак, е пропорционално на дължината на кодиране на този знак, така че динамичното кодиране на Хъфман може да се извърши в реално време. Динамичното кодиране на Хъфман е много по-сложно от статичното кодиране на Хъфман и заинтересованите читатели могат да се позовават на книги за структури от данни и алгоритми.Гореспоменатият JPEG използва кодиране на Хъфман, не че JPEG използва само кодиране на Хъфман, а картина след няколко стъпки, за да получи своя списък от стойности, тези стойности са кодирани от Huffman за съхранение или предаване. Методът на кодиране на Хъфман е сравнително лесен за разбиране и можете да напишете свои собствени програми за кодиране и декодиране на Хъфман според неговия метод на кодиране.

Алгоритъмът за конструиране на дърветата на Хъфман.

максимална стойност на const = 10000; {Дефиниране на максимално тегло}

макслеат=30; {Определете броя на листните възли в дървото на Хъфман}

maxnode=maxleaf*2-1;

тип HnodeType=запис

тегло: цяло число;

родител: цяло число;

lchild: цяло число;

rchild: цяло число;

край;

HuffArr:array[0..maxnode] на HnodeType;

var ......

процедура CreatHaffmanTree(var HuffNode: HuffArr); {Алгоритъм за конструиране на дърво на Хъфман}

var i,j,m1,m2,x1,x2,n: цяло число;

започвам
readln(n); {Въведете броя на листните възли}

за i:=0 до 2*n-1 do {array HuffNode[ ] initialize}

започвам

HuffNode.weight=0;

HuffNode.parent=-1;

HuffNode.lchild=-1;

HuffNode.rchild=-1;

край;

за i:=0 до n-1 се чете (HuffNode.weight); {Въведете теглото на n листни възли}

за i:=0 до n-1 do {construct a Huffman tree}

започвам

m1:=MAXVALUE; m2:=MAXVALUE;

x1:=0; x2:=0;

за j:=0 до n i-1 do

ако (HuffNode[j].weight<m1) и (HuffNode[j].parent=-1), тогава

начало m2:=m1; x2:=x1;

m1:=HuffNode[j].тегло; x1:=j;

край

иначе ако (HuffNode[j].weight<m2) и (HuffNode[j].parent=-1), тогава

начало m2:=HuffNode[j].тегло; x2:=j; край;

{Обединяване на двете поддървета, идентифицирани в едно поддърво}

HuffNode[x1].parent:=n i; HuffNode[x2].parent:=n i;

HuffNode[n i].weight:= HuffNode[x1].weight HuffNode[x2].weight;

HuffNode[n i].lchild:=x1; HuffNode[n i].rchild:=x2;

край;

край;
[Посетител (58.214.*.*)]отговори [Китайски ]Време :2022-12-17
Хофман

пианист
Член на Комунистическата партия на Германия
адвокат
Американски актьор
Немски гръб
Професор в Берлинския университет, Германия
Знаци "Мост"
1970 Британски филм на режисьора Алвин Ракоф
Немски стрелецът
Полски лекоатлет
президент
Тибетолози
Озеленител
Президент на ФК Хофенхайм
Президент на ФК Аугсбург
Елфи в играта Sail

Търсене

版权申明 | 隐私权政策 | Авторско право @2018 World енциклопедични познания