Kodowanie Huffmana 1. Kodowanie Huffmana. W 1962 roku
Transkrypt
Kodowanie Huffmana 1. Kodowanie Huffmana. W 1962 roku
Kodowanie Huffmana 1. Kodowanie Huffmana. W 1962 roku Huffman przedstawił procedurę pozwalającą na uzyskanie kodu zwięzłego dla dowolnego bezpamięciowego źródła wiadomości, którą zilustrujemy przykładem. Przykład. Rozważmy źródło o 6-cio literowym alfabecie, w którym i-ta wiadomość występuje z prawdopodobieństwem Pi w kolumnieX0 tabeli. Bez straty ogólności możemy założyć, że wiadomości są uporządkowane według prawdopodobieństw malejąco. Algorytm polega na tworzeniu źródeł zredukowanych, w których dwie najmniej prawdopodobne wiadomości są zastępowane nową wiadomością o prawdopodobieństwie wystąpienia równym sumie zastępowanych wiadomości. Źródło zredukowane zostaje również uporządkowane według prawdopodobieństw malejąco. Źródła są redukowane dopóty, dopóki nie otrzymamy źródła zredukowanego do dwóch wiadomości. Wiadomości te są kodowane odpowiednio „0”i „1”, po czym następuje kodowanie źródła 3-elementowego przez przedłużenie słowa kodowego odpowiadającego wiadomościom zredukowanym w źródle 3-elementowym o symbole odpowiednio „0” i „1”, itd. Łatwo obliczyć, że entropia źródła wynosi E(X)=0.3*log(1/0.3)+0.2*log(1/0.2)+3*0.15*log(1/0.15)+0.05*log(1/0.05)=2.4332, natomiast średnia długość słowa kodowego L=2(0.3+0.2)+3(3*0.15+0.05)=2.5. Wynik zastosowania algorytmu dla przykładu, który był użyty dla przedstawienia algorytmu Huffmana, jest pokazany w tabeli wraz z jego ilustracją graficzną. 1 Kodowanie Huffmana 2. Zadania: • utworzyć 2-gie rozszerzenie źródła, • obliczyć entropię otrzymanego źródła, • utworzyć graf kodera/dekodera metodą Huffmana, • obliczyć średnią długość słowa kodowego, • obliczyć sprawność kodowania. • zaimplementować koder/dekoder w języku VHDL • zadanie wykonać w oparciu o źródło bezpamięciowe 4-ro elementowe podane przez prowadzącego • wykonać symulację behawioralną zaprojektowanego kodera/dekodera • wyniki przedstaw prowadzącemu 3. Sprawozdanie W sprawozdaniu należy zamieścić: • wartość entropii otrzymanego źródła • narysować otrzymany graf kodera/dekodera Huffmana • wartość średniej długości słowa • wartość otrzymanej sprawności • kod VHDL opisujący przedstawiony koder/dekoder • przebiegi symulacji kodera/dekodera 2