1 / 13

Algoritmy komprese dat

Algoritmy komprese dat. Huffmanův kód. Huffmanův kód . David Huffman (1951) Huffmanův kód je optimální prefixový kód. Situace: Je dána abeceda A a zpráva Z nad touto abecedou. Pro každý znak z Î A známe jeho četnost f(z) = # výskytů znaku z v Z. Pozorování:

Download Presentation

Algoritmy komprese dat

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algoritmy komprese dat Huffmanův kód SWI072 Algoritmy komprese dat

  2. Huffmanův kód • David Huffman (1951) • Huffmanův kód je optimální prefixový kód. • Situace: Je dána abeceda A a zpráva Z nad touto abecedou. Pro každý znak zÎA známe jeho četnost f(z) = # výskytů znaku z v Z. • Pozorování: • pro každý optimální prefixový kód musí mít znaky s větší četnostístejně dlouhá či kratší kódová slova než znaky s menší četností • pro libovolné dva znaky s nejmenšími četnostmi existuje optimální prefixový kód, v němž mají tyto znaky kódová slova o stejné délce SWI072 Algoritmy komprese dat

  3. Příklad f:5 e:9 a:45 d:16 b:13 c:12 SWI072 Algoritmy komprese dat

  4. 14 f:5 e:9 Příklad a:45 d:16 b:13 c:12 SWI072 Algoritmy komprese dat

  5. 14 f:5 e:9 Příklad a:45 d:16 b:13 c:12 SWI072 Algoritmy komprese dat

  6. 14 25 f:5 b:13 e:9 c:12 Příklad d:16 a:45 SWI072 Algoritmy komprese dat

  7. 30 d:16 14 f:5 e:9 Příklad a:45 25 b:13 c:12 SWI072 Algoritmy komprese dat

  8. 55 30 25 b:13 c:12 d:16 14 f:5 e:9 Příklad a:45 SWI072 Algoritmy komprese dat

  9. 30 d:16 14 f:5 e:9 Příklad 100 a:45 55 25 b:13 c:12 SWI072 Algoritmy komprese dat

  10. Konstrukce Huffmanova stromu • Vstup: Množina znaků M, které se vyskytují ve vstupní zprávě, četnost f(z) (f(z) ¹0) pro každý znak zÎM. • Huffman(A) • for i:=1 to n-1 do vytvoř nový vrchol v • x:=levý-syn(v):=ExtractMin(M) • y:=pravý-syn(v):=ExtractMin(M) • f(v):=f(x)+f(y) • Insert(M,v) od • return ExtractMin(M). SWI072 Algoritmy komprese dat

  11. 0 1 a 0 1 0 1 b 0 1 0 1 0 1 a b c c 0 1 0 1 d e d e Minimální variace délky kódového slova • Dva různé Huffmanovy stromy pro týž vstup. SWI072 Algoritmy komprese dat

  12. Problémy • Jak provést konstrukci Huffmanova stromu, abychom obdrželi kód s minimální variací? • Jaká je maximální výška Huffmanova stromu pro vstup délky n? • Existuje nějaký optimální prefixový kód, který nelze získat Huffmanovým algoritmem? SWI072 Algoritmy komprese dat

  13. Implemetační poznámky • bitový vstup a výstup • problém přetečení • rekonstrukce kódu při dekompresi SWI072 Algoritmy komprese dat

More Related