• Nie Znaleziono Wyników

Grzegorz Ulacha, EFEKTYWNOŚĆ MIESZANYCH KODÓW HUFFMANAPolitechnika Szczecińska, Wydział Informatyki

N/A
N/A
Protected

Academic year: 2021

Share "Grzegorz Ulacha, EFEKTYWNOŚĆ MIESZANYCH KODÓW HUFFMANAPolitechnika Szczecińska, Wydział Informatyki"

Copied!
4
0
0

Pełen tekst

(1)

2003

Poznañskie Warsztaty Telekomunikacyjne

Poznañ 11-12 grudnia 2003 Grzegorz Ulacha Politechnika SzczeciĔska Wydziaá Informatyki ul. ĩoánierska 49 71-210 Szczecin gulacha@wi.ps.pl

EFEKTYWNOĝû MIESZANYCH KODÓW HUFFMANA

Streszczenie: W referacie przedstawiono propozycjĊ efek-tywnego kodowania liczb r-narnych do postaci binarnej, przy uĪyciu blokowej konwersji. Wyznaczone zostają za-leĪnoĞci miĊdzy efektywnoĞcią a sprawnoĞcią konwersji blokowej oraz warunki doboru wzorcowych parametrów q. Jako przykáad praktycznego wykorzystania konwersji blokowej zaprezentowany zostaá mieszany kod Huffmana mający wiĊkszą wydajnoĞü kompresji od binarnego kodu Huffmana. Przedstawiono takĪe definicjĊ klasy kodów mieszanych.

1. WSTĉP

Podstawowy binarny kod Huffmana naleĪy do grupy algorytmów, dla których istotna jest jedynie znajomoĞü rozkáadu prawdopodobieĔstwa wystĊpowania symboli Ĩródáa, przy zaáoĪeniu ich wzajemnej niezaleĪnoĞci. Do najefektywniejszych algorytmów entropijnych naleĪą kodowanie arytmetyczne i kodowanie Huffmana [1, 2, 3]. Ten drugi typ jest prosty do implementacji, a podsta-wowa wersja binarnego kodu Huffmana moĪe byü pod-dawana modyfikacji w celu zwiĊkszenia efektywnoĞci kompresji. Dotychczasowe podejĞcie np. poprzez two-rzenie rozszerzonego kodu Huffmana, wiązaáo siĊ z bardzo duĪym wzrostem zapotrzebowania na pamiĊü niezbĊdną do prawidáowego dziaáania kodera i dekodera. Przedstawiona w tej pracy propozycja wykorzystania mieszanych kodów Huffmana pozwala na wyelimino-wanie tej wady. Jest zatem konkurencyjną metodą wzro-stu wydajnoĞci kompresji dziĊki uĪyciu r-narnych ko-dów Huffmana.

2. WIELOWAROĝCIOWE KODY HUFFMANA

JeĞli symbole Ĩródáa stanowią zbiór zdarzeĔ nieza-leĪnych, to znając rozkáad prawdopodobieĔstwa symboli Ĩródáowych, moĪemy dokonaü kompresji danych wyko-rzystując binarny kod Huffmana. Algorytm konstrukcji takiego kodu prowadzi do otrzymania kodu o prostej implementacji kodera i dekodera. Jest to jednoczeĞnie kod o minimalnej Ğredniej dáugoĞci sáowa kodowego L2

dla binarnych kodów jednoznacznie dekodowalnych o zmiennej dáugoĞci sáowa kodowego, takich jak np. kody

Shannona – Fano [3]. Istnieje jednak moĪliwoĞü tworze-nia niebinarnych kodów Huffmana, które w pewnych przypadkach dają wyĪszą efektywnoĞü kodowania sym-boli Ĩródáa, niĪ jest to moĪliwe dla kodu binarnego [4]. Procentową efektywnoĞü binarnego kodu Huffmana E2

moĪemy wyznaczyü jako stosunek entropii do Ğredniej dáugoĞci sáowa kodowego:

% 100 log 2 1 2 2 ˜ ˜ 

¦

L p p E n i i i (1)

Aby zapisaü binarnie jedną cyfrĊ r-narną potrzebujemy b(r) bitów, gdzie: 1 log ) ( log2rdb r  2r (2) oraz b(r) jest liczbą caákowitą [1, 3]. Np. gdy mamy Ĩródáo skáadające siĊ z r = 5 równoprawdopodobnych symboli p1 = p2 = p3 = p4 = p5 = 0.2, to do zakodowania

jednego symbolu potrzebujemy b(5) = 3 bity, co oznacza efektywnoĞü zakodowania równą 77.398%. UĪywając binarnego kodu Huffmana dla r równoprawdopodobnych symboli otrzymujemy zmniejszenie Ğredniej dáugoĞci cyfry r-narnej do b(r): 1 2 ) ( ) ( ) (   r r b r b r b (3) uzyskując procentową efektywnoĞü:

% 100 ) ( log2 2 ˜ r b r E (4)

Zatem dla naszego przykáadu mamy b(5) = 2.4 bitu, co daje efektywnoĞü E2 = 96.747%. Ze wzglĊdu na

arytme-tykĊ obecnych komputerów, wymagana jest binarna reprezentacja symboli piĊciowartoĞciowych [4, 5], wiĊc dla r = 5 binarny kod Huffmana posiada wiĊkszą efek-tywnoĞü, niĪ binarna postaü symbolu r-narnego. W ko-lejnym punkcie problem nieefektywnego kodowania symboli r-narnych zostanie rozwiązany.

(2)

3. EFEKTYWNA KONWERSJA BLOKÓW CYFRR-NARNYCH DO POSTACI BINARNEJ

W celu zwiĊkszenia efektywnoĞci kodowania sym-boli r-narnych, naleĪy zastosowaü blokową zamianĊ cyfr r-narnych do postaci binarnej. Tworzymy liczbĊ B:

¦

 ˜ 1 0 q j j j r a B (5)

skáadającą siĊ z q cyfr r-narnych. Wówczas do zapisu tej liczby zgodnie z nierównoĞcią (2) wystarczy b(rq) bitów, z czego wynika, Īe Ğrednia dáugoĞü jednej cyfry r-narnej wynosi: q r b r b q q( ) ( ) (6)

DziĊki temu uzyskujemy procentową efektywnoĞü ko-dowania Er(q) równą: % 100 ) ( log2 ) ( ˜ r b r E q q r (7)

JeĪeli dla przykáadu z poprzedniego punktu stworzymy liczbĊ B skáadającą siĊ z q = 3 cyfr piĊciowartoĞciowych {a0, a1, a2}, to bĊdzie ona miaáa postaü:

7 2 2 1 1 0 0˜5 a ˜5 a ˜5 d1242 a B

Wtedy do jej zapisu wystarczy b(53) = 7 bitów, co daje Ğrednią dáugoĞü 2.3334 bitu na jeden symbol piĊciowartoĞciowy. Uzyskujemy w ten sposób efektywnoĞü kodowania E5(3) = 99.511%, czyli wyĪszą

niĪ w przypadku binarnego kodu Huffmana. Posáugując siĊ nierównoĞcią (2) moĪemy oszacowaü warunki konwersji blokowej: log2rq db(rq)log2rq 1, gdzie b(rq) jest dodatnią liczbą caákowitą. Wówczas:

q r b q r r b r r r q q q q ˜  d  d  2 2 2 2 2 ) ( 1 log ) ( log2 2

JeĪeli podstawimy wzór na sprawnoĞü konwersji

) ( ) ( 2 ˆ q r b q q r r U [6], to otrzymamy: 1 ˆ 2 1 2 ˆ ) ( ) ( d  ˜ ! t q r q q q r q q U r r U r r (8)

Z zaleĪnoĞci (8) wynika, Īe procentowa sprawnoĞü kon-wersji: % 100 2 ( ) ) ( q ˜ r b q q r r U (9)

ma staáy zakres ograniczeĔ miĊdzy 50% a 100%. Zatem dla uzyskania efektywnej konwersji wartoĞü q powinna

byü dobierana w taki sposób, aby liczba rq byáa bliska

pewnej potĊdze dwójki, ale mniejsza od tej potĊgi dwójki. Dobór takich par liczb (r,q) oparty jest na zaáoĪeniu, Īe procentowa sprawnoĞü Ur(q) powinna

przekraczaü np. 90%, tak aby konwersja blokowa dawaáa zadowalający efekt. Np. dla r = 5 i q = 3 otrzymujemy sprawnoĞü U5(3) = 97.656%. Szczegóáowe informacje

dotyczące sprawnoĞci konwersji blokowej znajdują siĊ w [6]. W tabeli 1 przedstawiono przykáadowe pary parametrów r < 30 oraz b(rq) < 87 wraz z porównaniem efektywnoĞci binarnego kodu Huffmana E2 oraz kodu

r-narnego Er(q).

Tab. 1 Przykáadowe wartoĞci parametów r < 30 oraz b(rq) < 87 r q b(rq) b(r) E2[%] Cbq(r) Er(q)[%] Ur(q)[%] 3 5 8 123 95.098 153 99.060 94.922 3 41 65 123 95.098 12441 99.975 98.860 5 3 7 252 96.747 213 99.511 97.656 5 31 72 252 96.747 21031 99.972 98.608 7 11 31 276 98.257 2119 99.616 92.076 7 16 45 276 98.257 21613 99.817 94.454 11 13 45 3116 97.574 3136 99.939 98.119 13 17 63 31310 98.175 31712 99.853 93.788 17 11 45 4172 99.267 4111 99.912 97.407 19 4 17 4196 98.428 441 99.951 99.427 23 19 86 41423 98.153 41910 99.939 96.438 29 8 39 42926 99.212 487 99.651 90.994

4. ZALEĩNOĝû MIĉDZY EFEKTYWNOĝCIĄ KOMPRESJI A SPRAWNOĝCIĄ KONWERSJI

Przeanalizujmy zaleĪnoĞü miĊdzy liczbą q cyfr w liczbie B, a efektywnoĞcią kompresji:

q q q q q q q q q q r r b r r r b r r r b r 1 2 2 2 1 2 1 2 2 log ) ( log ) 1 (log ) ( log 1 log ) ( log   d   d   d (9) JeĪeli podstawimy ) ( log ˆ 2 ) ( r b r E q q r do (9), to otrzymamy: 1 ˆ log log log log ˆ log log ) ( 1 2 2 1 2 2 ) ( 2 2 d    ! t q r q q q r E r r r r E r r (10)

Zatem w ogólnoĞci ze wzrostem q roĞnie ograniczenie dolne efektywnoĞci kompresji:

(3)

1 log log lim 1 2 2  f o q q r r (11)

Rozpatrzmy teraz wpáyw liczby cyfr q w liczbie blokowej B na sprawnoĞü konwersji na przykáadzie cyfr ternarnych (r = 3). Ze wzrostem q powinna rosnąü efek-tywnoĞü Er(q), ale nie zawsze, bo efektywnoĞü zaleĪy teĪ

od sprawnoĞci Ur(q). Np. dla q = 41 mamy b(rq) = 65, co

daje sprawnoĞü U3(41) = 98.860% i efektywnoĞü E3(41) =

99.975%. ZwiĊkszenie q do 42 powoduje spadek spraw-noĞci do U3(42) = 74.145% i efektywnoĞci do E3(42) =

99.356%. JednoczeĞnie wiĊksza sprawnoĞü Ur(q) nie musi

oznaczaü wiĊkszej efektywnoĞci Er(q), bo np.:

U3(5) = 94.922% > U3(42) = 74.145%,

ale E3(5) = 99.060% < E3(42) = 99.356%.

Na podstawie przeprowadzonej analizy wyników badaĔ moĪemy dojĞü do nastĊpującego wniosku:

jeĪeliq2 > q1 oraz Ur(q2)tUr(q1), to Er(q2)tEr(q1). 5. ALGORYTM TWORZENIA WZORCOWYCH

WARTOSCIq DLA ZADANEGO r

Na podstawie analizy wyników z poprzedniego punktu wnioskujemy, Īe nie moĪna w dowolny sposób dobieraü par (r,q). PoniewaĪ w pracy tej rozpatruje siĊ jedynie wartoĞci r bĊdące liczbą pierwszą, moĪemy dla kaĪdej takiej liczby znaleĨü tak zwaną wzorcową liczbĊ q stosując nastĊpujący algorytm:

Począwszy od q = 1 ustalamy pierwszą wzorcową war-toĞü qmin = 1, dla której obecna maksymalna sprawnoĞü

konwersji 100% 2 () ) (q br ˜ r r U , a efektywnoĞü kompre-sji wynosi 100% ) ( log2 ) ( ˜ r b r Er q .

Dla kaĪdej nastĊpnej wartoĞci qn testujemy sprawnoĞü

Ur(q) zgodnie ze wzorem (9), która moĪe:

- byü mniejsza lub równa aktualnej wzorcowej; - byü wiĊksza od wzorcowej, wtedy qn staje siĊ nową

wartoĞcią wzorcową, gdyĪ efektywnoĞü Er(q) teĪ

wzrasta.

6. MIESZANE KODY HUFFMANA

W celu uzyskania wiĊkszego stopnia kompresji niĪ w przypadku binarnego kodu Huffmana, autor proponuje tworzenie mieszanych kodów Huffmana wykorzystujące omówioną w poprzednich punktach efektywną konwer-sjĊ kodów r-narnych do postaci binarnej. DziĊki uĪyciu w jednym algorytmie róĪnych kodów r-narnych, mamy moĪliwoĞü minimalizacji Ğredniej dáugoĞci sáowa kodo-wego Lmix dopasowując wartoĞci r do

prawdopodo-bieĔstw wĊzáów na odpowiednich poziomach drzewa kodowego. EfektywnoĞü mieszanego kodu Huffmana jest nie mniejsza od efektywnoĞci binarnego kodu Huffmana (Emixt E2). Podczas kompresji wymagane jest

stosowanie osobnych buforów dla kaĪdego z kodów

r-narnych. W praktycznych zastosowaniach struktura skompresowanego pliku skáada siĊ z nagáówka zawiera-jącego tabelĊ kodową oraz wskaĨniki początku kaĪdego bufora, nastĊpnie bufor kodu binarnego, a po nim bufor kodu ternarnego oraz kolejne bufory r-narne (jeĞli wy-stĊpują). Taka struktura zapewnia peáną dekodowalnoĞü skompresowanego pliku. PoniĪszy przykáad przedstawia praktyczne zastosowanie mieszanych kodów Huffmana, jako efektywnej metody kompresji danych.

Przykáad 1

Dane jest Ĩródáo o n = 19 równoprawdopodobnych symbolach (p1 = p2 = ... = p19 = 1/19). Tworzymy kod

mieszany przedstawiony na rysunku 1 oraz w tabeli 2, uĪywając klasy kodów mieszanych (definicja klasy znaj-duje siĊ w kolejnym punkcie) o parametrach:

r1 = 3, q1 = 41, b(rq) = 65;

r2 = 5, q2 = 31, b(rq) = 72;

(oraz kod binarny r0 = 2).

Wówczas Ğrednia dáugoĞü sáowa kodowego zmniejsza siĊ z L2 = 4.31579 dla kodu binarnego Huffmana do:

25065 . 4 2 ) 1 ( 1 4165 19 9 31 72 19 10˜   ˜ ˜  mix L

Co oznacza wzrost efektywnoĞci z E2 = 98.4276% do

Emix = 99.9359%. Gdyby uĪyto klasy:

r1 = 19, q1 = 4, b(rq) = 17,

to Ğrednia dáugoĞü sáowa kodowego dla optymalnego kodu mieszanego wyniosáaby L19 = 4.25, a efektywnoĞü

E19 = 99.9512%.

Tab. 2 Tabela kodowa dla przykáadu 1 pi Kod mieszany p1 = 1/19 0 05 0 p2 = 1/19 0 05 1 p3 = 1/19 0 15 0 p4 = 1/19 0 15 1 p5 = 1/19 0 25 0 p6 = 1/19 0 25 1 p7 = 1/19 0 35 0 p8 = 1/19 0 35 1 p9 = 1/19 0 45 0 p10 = 1/19 0 45 1 p11 = 1/19 1 03 03 p12 = 1/19 1 03 13 p13 = 1/19 1 03 23 p14 = 1/19 1 13 03 p15 = 1/19 1 13 13 p16 = 1/19 1 13 23 p17 = 1/19 1 23 03 p18 = 1/19 1 23 13 p19 = 1/19 1 23 23

(4)

Rys.1 Mieszane drzewo kodowe Huffmana

7. KLASY KODÓW MIESZANYCH

Podobnie jak w przykáadzie 1, przedstawiony poni-Īej przykáad 2 uzasadnia, Īe w praktycznych zastosowa-niach nie moĪna mówiü o jedynej minimalnej dla danego Ĩródáa Ğredniej dáugoĞci sáowa kodu mieszanego Lmix.

MoĪemy jedynie okreĞlaü minimalną Ğrednią dáugoĞü sáowa kodu mieszanego Lmix dla danego Ĩródáa w

okre-Ğlonej klasie kodów mieszanych.

Definicja 1 Klasą kodów mieszanych nazywamy zestaw

parametrów wykorzystywanych do utworzenia kodu mieszanego, czyli liczb m uĪywanych buforów ri-narnych, zestaw r0, r1,..., rm-1, i związanych z nimi

wzorcowych wartoĞci qi oraz b(rq)i, a takĪe inne

opcjo-nalne parametry potrzebne podczas dekodowania. Przykáad 2

Dane jest Ĩródáo o prawdopodobieĔstwach: p1 = p2

= 20/121, p3 = p4 = p5 = 27/121. PoniewaĪ mamy piĊü

róĪnych symboli, to rid 5.

a) Dana jest klasa kodu mieszanego o parametrach: r1 = 3, q1 = 5, b(rq) = 8 oraz r2 = 5, q2 = 3, b(rq) = 7. Kod

mieszany nie daje lepszego rezultatu, natomiast Ğrednia dáugoĞü sáowa binarnego kodu Huffmana wynosi:

3305785 . 2 121 282 121 27 3 2 20 2 3 2 ˜ ˜  ˜ ˜ L

b) Tworzymy nową klasĊ zwiĊkszając wartoĞü q1 z 5 do

41 dla r1 = 3, co daje b(rq) = 65. Otrzymujemy kod

mie-szany, dla którego:

3241282 . 2 121 ) 1 ( 67 54 2 6541 3 , 2  ˜  ˜ L

c) Tworzymy kolejną klasĊ zwiĊkszając jeszcze wartoĞü q2 z 3 do 31 dla r2 = 5, co daje b(rq) = 72. Otrzymujemy

kod mieszany, dla którego 2.3225807 31

72 5 L

Jak widaü na podstawie tabeli 3, kod mieszany moĪe mieü róĪną postaü i efektywnoĞü w zaleĪnoĞci od zdefi-niowanej klasy. MoĪna teĪ (teoretycznie) rozwaĪaü klasĊ idealną, gdzie qi dąĪy do nieskoĔczonoĞci, wówczas

b(rq) = log2r.

Tab. 3 Zestawy kodowe dla Ĩródáa z przykáadu 2

pi Kod binarny Klasa a Kod mieszany Klasa b Kod mieszany Klasa c 20/121 111 1 03 05 20/121 110 1 13 15 27/121 10 1 23 25 27/121 01 01 35 27/121 00 00 45 8. WNIOSKI

Przedstawiona w tej pracy propozycja wykorzysta-nia mieszanych kodów Huffmana pozwala na zwiĊksze-nie stopnia kompresji przy zwiĊksze-nieznacznym wzroĞcie záoĪo-noĞci kodera i dekodera, w porównaniu do podstawowe-go alpodstawowe-gorytmu tworzenia binarnepodstawowe-go kodu Huffmana. Omówiony zostaá sposób doboru wzorcowych wartoĞci q dla blokowej konwersji bloków cyfr r-narnych, gwaran-tujący wysoką efektywnoĞü kompresji. W ostatnim punkcie autor uzasadnia, iĪ dla danego Ĩródáa nie istnieje jeden optymalny kod mieszany. MoĪna zatem mówiü jedynie o optymalnoĞci w zdefiniowanej klasie kodów mieszanych.

SPIS LITERATURY

[1] K. Sayood: Introduction to Data Compression

2nd edition, Morgan Kaufmann Publ., 2002

[2] W. Skarbek i inni: „Multimedia i standardy

kompresji danych”, Akademicka Oficyna Wy-dawnicza PLJ, Warszawa 1998

[3] A. Drozdek: „Wprowadzenie do kompresji

danych”, Wydawnictwa Naukowo-Techniczne, Warszawa 1999

[4] G. Ulacha, R. StasiĔski „Source binary coding

using non-binary Huffman codes”, Krajowe Sympozjum Nauk Radiowych URSI, PoznaĔ 2002

[5] G. Ulacha, R. StasiĔski „Mixed Huffman

codes”, Advanced Computer Systems – MiĊdzyzdroje 2002

[6] G. Ulacha, R. StasiĔski „Efektywne kodowanie

binarne elementów r-narnych dla potrzeb kodo-wania Ĩródáa”, PoznaĔskie Warsztaty Teleko-munikacyjne, PoznaĔ 2002

Cytaty

Powiązane dokumenty

W przeciwieństwie do choroby afektywnej dwubieguno- wej (ChAD) z szybką zmianą faz, gdzie stosowanie leków przeciwdepresyjnych może nie wywierać niekorzystnego wpływu na

Przesunąć dźwignię blokującą podajnika materiału na pozycję „Open”, a następnie pchnąć podajniki materiału do środka, aby umieścić materiał na środku rolki

W tym przypadku mianem głosowania podzielonego określane będzie zachowanie wyborcze polegające na oddaniu głosów na kandydatów ubiegających się o mandat w danym

W Karcie praw rodziny po stwierdze- niu, że „rodzice, ponieważ dali życie dzieciom, mają pierwotne, niezbywal- ne prawo i pierwszeństwo do wychowania potomstwa i dlatego muszą być

942 odnotowuje przydział majora do Okręgowej Kadry Oficerskiej nr V (czyli Kraków) w grupie oficerów kawalerii w stanie spoczynku przewidzianych do użycia w czasie wojny, z

W Prawie zawiera się wia- ra i przez wiarę utrwala się prawdziwa miłość, która [urzeczywistnia się] według tych dwóch przykazań, aby człowiek miłował Pana, swego Boga,

13– Naturalną kontynuacją tematu mogą być oczywiście badania osób, których małżeń- stwa z powodów różnic kulturowych nie wytrzymały próby czasu... – ale tez bez

Patrząc na stan wysokooporowy (rys. Ze wzrostem temperatury obserwujemy, że intensywność fotoluminescencji dla obu stanów oporowych maleje, a maksima widm przesuwają