28
Kpitl 3 Humn Cods und Dtnkomprssion Ds Zil dr Dtnkomprssion ist s, Dtn mit wnir Spichrpltz bzuspichrn. Abhäni von dn Dtn schiht ds vrlustri odr nicht vrlustri. Audio-, Vido- und Bilddtin wrdn in dr Rl komprimirt, indm Inormtionn wlssn wrdn. Ds Prinzip bi MP3-Dtin bispilswis ist s, ll di Inormtionn wzulssn, di ds mnschlich Ohr nicht whrnhmn knn. Somit stllt dr Inormtionsvrlust kinn Qulitätsvrlust ür di spichrt Musik dr. Txtdtin möcht mn ohn Vrlust von Inormtionn komprimirn. Um zu vrsthn, wi ds unktionirt, muss mn vrsthn, wi Txt bspichrt wrdn. Dr olnd Abschnitt soll Auschluss drübr bn. 3. Codirun Wir btrchtn inn Zichnstz C (z.b. ds Alphbt, in Jv Zichnstz, ll Wörtr im Dudn) und in Zichn c C. Dis Zichn wrdn im Computr mit Codwörtrn codirt, und zwr übr dm Alphbt {,}. Di Gsmthit dr Codwörtr ür dn Zichnstz C hißt dnn Cod ür C. Üblichrwis hbn di Codwörtr llr Zichn ins Zichnstzs C di slb Län. Ein solchr Cod hißt Blockcod. So sind uch dr ASCII Cod, bi dm ll Codwörtr di Län 8 hbn, und dr Unicod, bi dm ll Codwörtr di Län 6 hbn, Blockcods. Bispil 3. (Blockcod dr Län 3) Wnn C = {,b,c,d,,,, } ist, ist b c d 29
3 KAPITEL 3. HUFFMAN CODES UND DATENKOMPRESSION in zuhörir Blockcod dr Län 3. Es ibt uch Cods, bi dnn di Län dr Codwörtr dr inzlnn Zichn ins Zichnstzs C untrschidlich ln ist, di sonnntn vribl lnth cods. Bispil 3.2 ( vribl lnth cod ) Wir btrchtn widr C = {,b,c,d,,,, }. b c d Ein Txtdti ist nun in Fol von Zichn c C. Um si bzuspichrn, muss si vrschlüsslt wrdn. Di Vrschlüsslun odr uch Codirun ntspricht dm Erstzn jds Zichns durch sin Codwort. Dmit di Dti spätr widr lsbr ist, müssn di Codwörtr widr in di Zichn ds Zichnstzs umwndlt wrdn. Di Entschlüsslun bzw. Dcodirun ntspricht dm umkhrtn Prozss. Ds Codirn/Dcodirn inr Nchricht ntspricht lso inr bijktivn Abbildun. Bispil 3.3 (Codirun/Dcodirun mit Blockcod) Annommn, di Dti bstht us disn Zichn: Wird di Dti mit dr Codtbll von Bispil 3. codirt, ribt sich dis Bitol: Di Dcodirun ist hir shr inch, d wir wissn, dss dri Bits immr inm Zichn ntsprchn. Es ntstht widr induti unsr Dti:
3.. CODIERUNG 3 Bispil 3.4 (Codirun / Dcodirun mit vribl lnth cod) Btrchtn wir jtzt dis bidn Dtin: Dti : bb Dti 2: Mit dr Codtbll von Bispil 3.2 codirt, shn si so us: (bb) ( ) Dti : Dti 2: Doch mit dr Dcodirun wird s schwr, dnn di Dtin sind nicht mhr induti ntschlüsslbr. Mn st, dr Cod von Bispil 3.2 ist nicht induti ntzirbr. Ein Cod hißt lso induti ntzirbr, wnn vrschidn Dtin, codirt mit dm slbn Cod, uch zu vrschidnn Codirunn ührn. Dr Grund dür, dss dr Cod von Bispil 3.2 nicht induti ntzirbr ist, lit in dr Bschnhit dr Codwörtr. Ds Problm bstht drin, dss s Codwörtr ibt, di uch durch Zusmmnstzn ndrr Codwörtr ntsthn könnn. So ist zum Bispil ds Codwort von, di, idntisch mit dn hintrinndr schribnn Codwörtrn von d und, di uch rbn. Es ibt kin Mölichkit zu untrschidn, ob dort in odr in d und in stht. Ein Lösun ür diss Problm sind präixri Cods. 3.. Präixcod Ein Cod hißt Präixcod, wnn kin Codwort Annsstück ins ndrn Codworts ist. Jdr Blockcod ist zum Bispil in Präixcod, wil kin Codwort in inm ndrn nthltn sin knn. Abr uch vribl lnth cods könnn präixri sin. Lmm 3. Jdr Präixcod ist induti ntzirbr. Bwis: Bim Lsn dr codirtn Dti ist induti klr, wnn in Codwort zu End ist. Dnn lässt sich induti sn, wlchs Zichn mit dism Codwort codirt wurd. Di Umkhrrichtun von Lmm 3. ilt br nicht. Nicht jdr induti ntzirbr Cod muss in Präixcod sin. Ds zit ds olnd Bispil: Dr Nm ist tws vrwirrnd, dnn intlich müsst dr Cod präixrir Cod hißn. Abr Präixcod ht sich in dr Litrtur durchstzt.
32 KAPITEL 3. HUFFMAN CODES UND DATENKOMPRESSION Bispil 3.5 Wir btrchtn disn Cod: b c Auch wnn disr Cod nicht präixri ist, knn mn codirt Dtin widr dcodirn, indm mn di Nulln zählt. Stht hintr inr Eins in rd Anzhl von Nulln, hndlt s sich um in mit ntsprchnd viln c s dhintr. Stht br hintr inr Eins in unrd Anzhl von Nulln, und zwr mindstns ün, hndlt s sich um in b mit ntsprchnd viln c s dhintr. Dür ist s br untr Umständn nöti, sich rst di nz Dti nzushn, um zu wissn wi vil Nulln nch dn Einsn kommn. Es ist lso mölich, dn olndn codirtn Txt zu ntschlüssln: c c c } {{ } b Im witrn Vrlu wrdn wir uns nur noch mit Präixcods bssn, d vor llm dis in dr Prxis üblich sind. Lmm 3.2 Präixcods lssn sich mit binärn Bäumn T idntiizirn, bi dnn di Zichn c C in dn Blättrn sthn und di W von dr Wurzl bis zum Bltt di Codwörtr bildn (in Kntn nch links ntspricht dr, in Knt nch rchts ntspricht dr ). Bwis: = : =: Si C in Zichnstz mit inm zuhörin Präixcod. Konstruir inn Bum T, in dm pro Codwort dr W nn wird, dr durch di bzw. di vorbn ist. Bi dr h nch links, bi dr nch rchts. D dr Cod präixri ist, ndt mn immr in inm Bltt. Es ribt sich lso in Bum mit dn ordrtn Einschtn. Si C in Zichnstz und T in Bum mit dn Zichn c C in sinn Blättrn. Btrcht dn W von dr Wurzl zu dn Zichn c ls Codwort ür jds inzln Zichn, wobi dr W nch links dr und dr W nch rchts dr ntspricht. D di Zichn in dn Blättrn ds Bums sthn, ist klr, dss kin W zu inm Zichn in inm W zu inm ndrn Zichn nthltn sin knn. Dhr knn kin Codwort Annsstück ins ndrn Codworts sin. Also hndlt s sich bi dm Cod um inn Präixcod. Bispil 3.6 Dr Bum T in Abb. 3. ntspricht dism Präixcod: b c d
3.2. DER HUFFMAN ALGORITHMUS 33 b d c Abbildun 3.: Präixcod ls Bum Kommn wir nun zurück zur Fr dr Komprimirun. Dr bnötit Spichrpltz ür in Txtdti ntspricht immr dr Anzhl dr Bits bzülich ihrr Codirun. Btrchtn wir noch inml Bispil 3.3 und codirn s mit dm Cod von Bispil 3., so bnötin wir 7 3 = 5 Bits. Codirt mn br ds Bispil mit dm Cod von Bispil 3.2, bnötit mn 43 Bits. Vrschidn Codirunn nhmn lso untrschidlich vil Spichrpltz in Anspruch. Bi dr Komprimirun wird lso (dtibhäni) in Cod undn, dr dn Spichrpltz rduzirt. Disr Cod muss ntürlich in Präixcod sin, dmit di Dti widr inch dcodirbr ist. 3.2 Dr Humn Alorithmus Txtdtin wrdn stndrdmäßi im Blockcod codirt und spichrt. Dr Humn Alorithmus konstruirt inn Präixcod vriblr Län, so dss di Anzhl dr bnötitn Bits klinr wird. Dr Cod wird so konstruirt, dss Zichn, di shr häui utrtn, kurz Codwörtr bkommn, und wnir häui Zichn länr Codwörtr. So wird, bhäni von dr Dti, dr bnötit Spichrpltz vrrinrt. Dr Humn Alorithmus ist sor so ut, ds dr ntsthnd Präixcod optiml bzülich ds bnötitn Spichrpltzs ist. Es sind Spichrpltzinsprunn von 2% bis 9% üblich, j nch Bschnhit dr Dti.
34 KAPITEL 3. HUFFMAN CODES UND DATENKOMPRESSION Um dn optimln Präixcod zu konstruirn, muss di Dti rst inml lsn wrdn, wobi di Häuikitn (c) ür ll Zichn c C rmittlt wrdn. Ist di Häuikit dr Zichn bknnt, und wird di Dti mit dm Präixcod T (ls binärr Bum usst) codirt, so ribt sich dr bnötit Spichrpltz dr Dtiwi olt: B(T ) = (c) h T (c) (3.) c C Dbi ibt h T (c) di Höh ds Zichns c im Bum T n, lso di Anzhl dr Kntn ds Bums von dr Wurzl bis zu dm Bltt, in dr ds Zichn c stht, n. Dis ntspricht nch Lmm 3. dr Län ds Codworts ür ds Zichn c. Bispil 3.7 zit, wi dr Spichrpltz bi untrschidlichn Codirunn vriirn knn. Zichn c (c) in Cod Cod 2 45 b 3 c 2 d 6 9 5 Cod Cod 2 b c d c b d Abbildun 3.2: Di Bäum dr bidn Cods Dnn ribt sich dr bnötit Spichrpltz ür Cod zu: B(T ) = (45 + 3 + 2 + 6 + 9 + 5) 3 = 3 Dr bnötit Spichrpltz ür Cod 2 bträt hinn: B(T 2 ) = (45 + 3 3 + 2 3 + 6 3 + 9 4 + 5 4) = 224
3.2. DER HUFFMAN ALGORITHMUS 35 Wir wolln wir uns nun Humn Alorithmus nshn, dr ür jd Txtdti inn optimln Präixcod rmittlt. Alorithmus 3. (Humn Alorithmus). Fss jds Zichn c C ls inlmntin Bum u und ü s in in Priority Quu Q in, wobi di Häuikit (c) ls Schlüsslwrt dint. 2. Soln Q mhr ls inn Bum nthält: Wähl di bidn Bäum T und T 2 mit dn klinstn Häuikitn (muss nicht induti sin). Entrn si us Q. Konstruir inn nun Bum us dn T, T 2 ls Tilbäum untr inr nun Wurzl und b ihm di Häuikit (T ) + (T 2 ). Fü disn Bum in Q in. 3. Gb (dn inzi übri blibnn Bum) T in Q zurück. Disr Bum (dr so nnnt Humn Bum odr Humn Cod) ist in optimlr Präixcod. Bi dr Codirun inr Dti mäß T muss nbn dr codirtn Dti ntürlich dr Cod z.b. ls Bum mit bspichrt wrdn, dnn r ist zur Dcodirun notwndi. Dr Spichrpltz dür ist br bi nünd roßn Dtin im Vrlich zum insprtn Spichrpltz so rin, dss r vrnchlässit wrdn knn. Ds olnd Bispil zit, wi dr Humn Alorithmus unktionirt: Bispil 3.8 (Konstruktion ins Humn Bums) Zichn c b c d (c) 45 3 2 6 9 5 Di Zichn wrdn ll ls inknoti Bäum mit (c) ls Schlüssl in di Priority Quu Q inüt: Q: 45 3 2 6 9 5 b c d Di bidn Bäum mit dn klinstn Schlüssln wrdn us Q ntrnt, zu inm nun Bum zusmmnüt und widr in Q inüt:
36 KAPITEL 3. HUFFMAN CODES UND DATENKOMPRESSION Q: 45 3 2 6 b c d 4 Ds wird ortstzt, bis nur noch in Bum in Q ist: Q: 45 25 6 d 4 b c Q: 45 25 3 b c d Q: 45 55 b c d
3.2. DER HUFFMAN ALGORITHMUS 37 Q: 45 b c d Am End wird dr rti Humn Bum von Q ntrnt: 45 b c d Di Luzit ds Humn Alorithmus Ist di Priority Quu ls Hp implmntirt (sih Abschnitt 2.2. u Sit 26) und ht mn n Zichn, so ribt sich olnd Luzit ür dn Humn Alorithmus:. ll Zichn inün in Q: O(3n) 2. n Phsn: n ml: - di bidn Klinstn us Q ntrnn: O(2lon) - nun Bum bun: O() - widr inün in Q: O(lon) 3. Bum zurück bn: O() inssmt: O(n lo n)
38 KAPITEL 3. HUFFMAN CODES UND DATENKOMPRESSION Di Optimlität ds Humn Cods Ein Präixcod T hißt optiml ür inn Zichnstz C und Häuikitn (c), c C, wnn B(T ) B(T ), (3.2) ür jdn ndrn Präixcod T (zu C und dnslbn Häuikitn (c)). Lmm 3.3 Si C in Mn von Zichn mit dn Häuikitn (c). Sin x,y di Zichn mit dn nidristn Häuikitn. Dnn ibt s inn optimln Präixcod T, in dm x und y di rößt Höh und minsmn Vtr hbn. Di bidn Codwörtr ür x und y hbn dnn dislb Län und untrschidn sich nur im ltztn Bit. Bwis: Di Id ds Bwiss ist s, inn Bum T zu btrchtn, dr inn optimln Präixcod rpräsntirt und ihn bnnlls so zu modiizirn, dss r optiml blibt und di bidn Zichn x und y in dn Blättrn mit dr rößtn Höh sthn und dnslbn Vtr hbn. Ist ds mölich, sind di bidn wünschtn Einschtn im optimln Präixcod rüllt. Abbildun 3.3 skizzirt dis Vorhnswis. T T T x y y b b x b x y Abbildun 3.3: Modiizirn ds Bums T ür dn Bwis von Lmm 3.3 Zunächst übrln wir uns, dss s inn optimln Präixcod ibt. Dis olt drus, dss dr Wrt B(T ) immr nzzhli und positiv ist. In disr Mn von Zhln xistirt in klinstr Wrt B(T ), und dr zuhöri Bum T ist in optimlr Präixcod. Si lso nun T in optimlr Präixcod. Si in Bltt in T mit rößtr Höh h T (). Dnn ht urund dr Optimlität von T inn Brudr b, dnn hätt kinn Brudr, könnt mn inn Lvl höhr hänn und hätt dn Wrt B(T ) vrbssrt, ws im Widrspruch zur Optimlität von T stünd. Btrcht nun x und y, di bidn Zichn mit dn rinstn Häuikitn. Vrtuscht mn und x im Bum T, so ntstht dr Bum T. Für dn Spichrpltz dr bidn Bäum ilt dnn: B(T ) B(T ) = (c) h T (c) (c) h T (c) c C c C = B(T ) B(T ) = (x) h T (x) + () h T () (x) h T (x) () h } {{ } T () } {{ } =h T () =h T (x) = ( () (x)) (h } {{ } T () h T (x)) } {{ }
3.2. DER HUFFMAN ALGORITHMUS 39 D T br optiml ist, knn s kinn Präixcod bn, dr wnir Spichrpltz bnötit. Also ilt: Dr Präixcod T ist lso uch optiml. B(T ) = B(T ) Entstht T, indm mn in T b und y vrtuscht, lässt sich u nlo Wis zin, dss uch T optiml ist. T rüllt dnn di Aussn ds Lmms. Lmm 3.4 (Prinzip dr optimln Substruktur) Si C in Zichnstz mit dn Zichn c C und dn Häuikitn (c), und sin x und y di bidn Zichn mit dn rinstn Häuikitn. Si T in Präixcod ür C und (c), in dm x und y inn minsmn Vtr z hbn. Si T dr Bum, dr us T ntstht, indm x und y wlln, sttt dssn br z ls nus Zichn mit dr Häuikit (z) = (x) + (y) hinzukommt. T ist dnn in Präixcod ür C := C \ {x,y} {z}. Untr disn Vorusstzunn ilt: T ist optiml ür C T ist optiml ür C Bwis: D wir nur di Rückrichtun bnötin, wolln wir nur zin: Für T und T ilt: T ist optiml ür C = T ist optiml ür C B(T ) B(T ) = (x)h T (x) + (y)h T (y) (z)h T (z) } {{ } =:α (h T (x) = h T (y) = α +, d x und y Söhn von z) = (x)(α + ) + (y)(α + ) ( (x) + (y))α = ( (x) + (y))(α + ) ( (x) + (y))α = ( (x) + (y))(α + α) = B(T ) B(T ) = (x) + (y) = B(T ) = B(T ) + (x) + (y) (3.3) Si T optiml, T br nicht. Btrcht dn optimln Bum T ür C, d.h. B(T ) < B(T ). Nch Lmm 3.3, dr nnommn wrdn, dss x und y n dr tistn Stll im Bum T sthn und inn minsmn Vtr w hbn. Btrcht nun dn Bum T, dr ntstht, wnn x und y im Bum T wlln und w ls nus Zichn mit dr Häuikit (w) = (x) + (y) hinzukommt. Dnn ribt sich nch Glichun 3.3 ür dn Spichrbdr: B(T ) = B(T ) + (x) + (y)
4 KAPITEL 3. HUFFMAN CODES UND DATENKOMPRESSION D T optiml ür C ist und T in Präixcod ür C und dislbn Häuikitn ist, olt B(T ) B(T ). Dmit ilt: B(T ) < B(T ) 3.3 = B(T ) + (x) + (y) B(T ) + (x) + (y) = B(T ) Ds ribt inn Widrspruch. Also muss uch T optiml sin. Stz 3. (Optimlität) Dr Humn Cod T ist optiml untr lln Präixcods, ds hißt: ür ll Präixcods T. B(T ) := (c) h T (c) B(T ) c C Bwis: (Induktion nch dr Anzhl dr Zichn n = C ) Induktionsnn: Für n = 2 lirt dr Alorithmus in Codirun, bi dnn di Codwörtr nur us inr bzw. bsthn. Ds ntspricht dm optimln Spichrpltz. Induktionsschritt von n u n: Si n = C. Dr Humn Alorithmus rmittlt di Zichn x und y mit dn klinstn Häuikitn und rstzt si durch inn nun Bum, mit dm Zichn z in dr Wurzl und dn bidn Söhnn x und y, wobi (z) = (x) + (y) ist. Dnch wird mit dm Zichnstz C = C\{x,y} {z} witrrbitt. Nch Induktionsvorusstzun lirt dr Humn Alorithmus inn optimln Bum T ür C. Erstzt mn z widr ntsprchnd Lmm 3.4, so rhält mn inn optimln Präixcod T ür C. D dr Humn Alorithmus rd u dis Wis dn Bum T konstruirt, ist dr Humn Cod optiml untr lln Präixcods. Bmrkunn zu Humn Cods Hir soll nochml u bsondr Einschtn ds Humn Alorithmus und u Altrntivn dzu hinwisn wrdn. Dr Humn Alorithmus ntspricht inr zichnwisn Codirun. Es wird jdm Zichn c C in ins Codwort zuwisn. Wi wir spätr noch shn wrdn, ibt s uch Alorithmn, di Codwörtr ür Tilstrins konstruirn. Auch bim Humn Alorithmus wär ds mölich, indm mn Strins dr Län k ls Zichn btrchtt. Bim Humn Cod hndlt s sich um inn sttischn Cod. Ds bdutt, dss di nz Nchricht vorb lsn und nlysirt wird, um di Häuikitn dr inzlnn Zichn zu rmittln und
3.3. WEITERE DATENKOMPRESSIONSVERFAHREN 4 dmntsprchnd st Codwörtr zu konstruirn. Dnch muss di Dti noch inml lsn wrdn, um si mit dn ntstndnn Codwörtrn zu codirn. Ds Gntil hirzu wärn di dynmischn bzw. dptivn Cods. Bi disn Codirunn wrdn di Codwörtr währnd ds Lsns ds Txtils rstllt und im Lu ds Lsns ändrt, wnn s mhr Inormtionn übr di Nchricht ibt. Di Dti wird währnd ds Lsns codirt, und zwr mit sich ändrndn Codwörtrn. Dis Vorhnswis rsprt in zwimlis Lsn. Ds dynmisch Codirn wird uch Komprimirun on th ly nnnt. Di Dtnkomprssion mittls ds Humn Alorithmus ist im Gnstz zur Komprssion von Audio-, Vido- und Grphikdtin vrlustri. Di ursprünlich Nchricht knn lso ohn Vrlust von Inormtionn widr rkonstruirt wrdn. 3.3 Witr Dtnkomprssionsvrhrn 3.3. Dr dptiv Humncod Im Gnstz zum sttischn Humncod, wird bi dism Vrhrn in dynmischr Cod rstllt. Im Lu ds Lsns wrdn zu jdm Zitpunkt, bhäni von dr schon lsnn Nchricht, di whrschinlichn Häuikitn bschätzt und u disr Grundl di Codwörtr rstllt. Dr Präixcod wird lso immr so vrändrt, dss r ür di ktulln Abschätzunn optiml ist. Bim Vrschlüssln wird di Bschnhit dr Qulldti lrnt. Bim Entschlüssln muss dr Humn Bum kontinuirlich ktulisirt wrdn, dmit di Zichn widr mit dn richtin Codwörtrn übrstzt wrdn könnn. Wi obn schon bschribn lit dr Vortil drin, dss di Qulldti nur inml lsn wrdn muss. Abhäni von dr Dti, knn dis Vorhnswis bssr, br uch schlchtr Listun brinn. Dr Alorithmus bildt di Bsis ür dn Unixbhl compct, dr in dr Rl in Komprssionsrt von 3-4% rbrint. 3.3.2 Dr run lnth cod Diss Vrhrn wird zum Komprimirn von Bildrn vrwndt. Dr Computr spichrt Bildr, indm r si in vil Bildpunkt (Pixl) utilt und sich di nu Frb ins Pixls mrkt. Di Pixl wrdn dnn in inr bstimmtn Rihnol (z.b. zilnwis) bspichrt. Um ds Bild nun zu komprimirn, wrdn nicht ll Pixl spichrt, sondrn s wird usnutzt, dss ot Widrholun intritt (z.b. schwrz Fläch). Dhr wrdn nur Pixl mit dr Vilchhit ihrs widrholtn Autrtns spichrt. Dmit wird Spichrpltz insprt. 3.3.3 Dr Lmpl-Ziv Cod Disr Alorithmus wurd 977 ntwicklt. Er rbitt vrlustri und dptiv. Es ist lidr nicht mölich ür ihn in Optimlitätsuss zu trn, jdoch ist r mpirisch ut. Typisch sind Listunn, di in dr Größnordnun von 5 6% lin. D r in zip, comprss und zip nutzt wird, soll r hir nur rklärt wrdn.
42 KAPITEL 3. HUFFMAN CODES UND DATENKOMPRESSION Dr Lmpl-Ziv Alorithmus rstllt so. Kttn, di Strins wchsndr Län ntsprchn. In jdm Schritt ds Alorithmus wird von dr Rst-Nchricht, di noch nicht codirt wurd, dr länst Präixcod rmittlt, dr inr brits dinirtn Ktt α ntspricht. Dis wird dnn mit dm dnch kommndn Zichn c ls Strin αc in in Tbll, dm so. Wörtrbuch, intrn und si wird mit ic codirt, wobi i dm Codwort von α ntspricht. Di Ktt ic rhält dnn in ins Codwort. Di Codwörtr hbn dislb vordinirt Län, di dnn di Größ dr Tbll und di Län dr länstn Ktt bstimmt. Um dn Lmpl-Ziv Alorithmus bssr zu vrsthn, oln hir zur Vrnschulichun zwi Bispil. Bispil 3.9 Gbn si di Nchricht: und dr dzuhöri Blockcod: bbb cccc ddddd Zichn Codwort b c d Drus ribt sich dnn mit dm bschribnn Vrhrn dr Lmpl-Ziv Cod: Strin lr b bb c cc c d dd dd Ktt b 3b c 6c 6 d 9d 2 Codwortnummr 2 3 4 5 6 7 8 9 2 3 Strin Ktt 3 5 6 7 9 2 Codwortnummr 4 5 6 7 8 9 2 2 Di komprimirt Nchricht siht dnn so us: ()( )(b)(3b)( )(c)(6c)(6 )(d)(9d)( )()(2)(3)(5)()(6)(7)()(9)(2)(2) Um 2 Codwortnummrn bzuspichrn, bnötit mn lo 2 = 5 Bit. Für di Zichn n sich wrdn zum Abspichrn di ursprünlichn 3 Bit bnötit. Dnn olt ür dn Spichrpltz: 2 Zichn 5 Bit + 3 Bit = 68 Bit + Zichn 5 Bit = 5 Bit 73 Bit
3.4. ABSCHLIESSENDE BEMERKUNGEN 43 Bispil 3. Ds nun olnd Bispil bnutzt dn uns brits bknntn ASCII Cod, dr in Län von 8 Bit ht: ischrs ritz ischt risch isch risch isch ischt ischrs ritz Dr Lmpl-Ziv Cod siht dnn wi olt us Strin lr i s c h r s r it z i Ktt i s c h r 3 r 2t z 6 i Codwortnummr 2 3 4 5 6 7 8 9 2 3 Strin sc ht ri sch is ch r isc i sch Ktt 3c 5t 9i 4h 2 2s 4h 9r 2c 9i 8 6 Codwortnummr 4 5 6 7 8 9 2 2 22 23 24 25 26 Strin isch t i schr s ri tz Ktt 23h t 26i 25r 8 7i 28z Codwortnummr 27 28 29 3 3 32 33 und codirt di Nchricht olndrmßn: ()(i)(s)(c)(h)()(r)(3 )(r)(2t)(z)(6 )(i)(3c)(5t)( )(9i)(4h)(2) (2s)(4h)(9r)(2c)(9i)(8)(6)(23h)(t)(26i)(25r)(8)(7i)(28z)(6) Zum Abspichrn von 33 Codwörtrn wrdn lo 33 = 6 Bit und zum Abspichrn ins Zichns mit ASCII Cod wrdn 8 Bit bnötit. Ds hißt ür dn Spichrpltzbdr: 33 (6Bit + 8Bit) + 6Bit = 468Bit 3.4 Abschlißnd Bmrkunn Abschlißnd soll dru hinwisn wrdn, dss s in von dn Häuikitn bhäni untr Schrnk ür Dtnkomprssion, di Entropi, ibt. Um dis zu rklärn bnötin wir di olndn bidn Bri. Zum Einn ibt s dn Bri dr normirtn Häuiikit P(c), di di Häuikit ins Zichns c in Abhänikit von dr Summ dr Häuikitn llr Zichn dr Qulldti nibt: P(c) = u C (c) (u) Wird dr Spichrpltz B(T ), dr di Gsmthit dr Wortlänn nibt, normirt, ribt sich di mittlr Wortlän: A(T ) = P(c) h(c) (3.5) c C Nun könnn wir di Entropi H(C) inr Qulldti C dinirn: (3.4) H(C) = [P(c) ( lop(c))] (3.6) c C
44 KAPITEL 3. HUFFMAN CODES UND DATENKOMPRESSION Dr Stz von Shnnon st nun, dss di mittlr Wortlän jdr vrlustrin Komprimirun übr dr Entropi lit: A(T ) H(C) ür jd Codirun T von C (3.7) Um nun quntittiv sn zu könnn wi ut in Komprssionsvrhrn ist, ibt s dn Bri dr Rdundnz. Di Rdundnz knn ls Dirnz zwischn dr mittlrn Wortlän dr codirtn Dti und dr Entropi dr Qulldti dinirt wrdn: R(T ) = A(T ) H(C) ür in Codirun T von C (3.8) Bispil 3. In dr bnn Qulldti trtn di olndn Zichn mit dn nbnn normirtn Häuikitn u: c C b c d P(c),45,3,2,6,9,5 Dnn olt mit Glichun 3.6, dss di Entropi H(c) = 2, 299 bträt. Komprimirt mn di Dti mit dm Humn Cod, ribt sich mit Glichun 3.5 in mittlr Wortlän von A(T ) = 2,24. Di Rdundnz bträt dnn nch Glichun 3.8 R(T ) =.2. Di Rdundnz ist lso bim Humn Cod shr rin. Dr Humn Cod ist symptotisch optiml untr lln Codirunsvrhrn. Btrchtt mn nämlich dn vrllminrtn Humn Block Cod, dr Tilstrins str Län k ls inzln Zichn bhndlt, ilt olndr Stz: Stz 3.2 Zu jdm ε > ibt s in k, so dss ür dn Humn Block Cod T k mit dn Tilstrins dr Län k ilt: A(T k ) H(C) + ε 3.5 Litrturhinwis Dr Humn Alorithmus wird usührlich [CLRS] bhndlt. Ein uszichnt Übrsicht und ch tirhnd Inormtionn übr Komprssionsvrhrn indt mn untr http://www.dt-comprssion.com/