Kódelméletlet dolás
dolás o Kódolás o Betőnk nkénti nti kódolk dolás, felbontható kód Prefix kód Blokk kódk Kódfa o A kódok k hosszának alsó korlátja McMillan-egyenlıtlens tlenség Kraft-tételetele o Optimális kódk Témavázlat Átlagos szóhossz, a kód k d költsk ltsége Optimális kódokk Entrópia Shannon-tételetele Bináris Huffman-kód Adaptív v kódok: k LZ-, LZW-kód dolás 2
dolás dolás 3
A hírközlésben szüks kségünk van arra, hogy valamilyen üzenetet egy csatornán átjuttassunk. A csatorna azonban csak meghatározott jeleket tud befogadni, ezért az üzenetet idınk nként nt megfelelıképpen át t kell alakítanunk, kódolnunk kell. Ez az átalakítás s olyan kell legyen, hogy a csatorna túlst lsó oldalán n többt bbé-kevésbé helyesen visszaáll llítható legyen az eredeti üzenet. Az alábbiakban olyan kódolk dolásokkal foglalkozunk, amelyek lehetıvé teszik a kódbk dból l az üzenet helyes visszaáll llítását, és a kódok k lehetıség g szerint rövidek. Ennek az elvi korlátait vizsgáljuk. dolás 4
Kódolás Definíci ció. Az A={a,,, a n } véges, v nemüres halmazt ábécé-nek nevezzük, elemei a betők,, a belılük k képezhetk pezhetı véges hosszú sorozatok a szavak.. Az összes véges v hosszú sorozat halmazát t A* jelöli. li. Definíci ció. Legyen B és s C ábécé.. A f: B C* leképez pezést kódolásnak nevezzük, ha injektív. f(b) C* a kódszavak halmaza, a kód. A b B b bető kódja f(b). Az injektivitás s garantálja a dekódolhat dolhatóságot,, vagyis azt, hogy a képelemekbıl l helyesen vissza tudjuk állítani a B halmaz elemeit.. példa. p Legyen B={a, b, c}, C={0, } és s f(a)= 0, f(b)=0, f(c)=00. Ez a leképez pezés s kódolk dolás. dolás 5
Betőnk nkénti nti kódolk dolás, felbontható kód Definíci ció. Terjesszük k ki f-et f B*-ra a következk vetkezıképpen: Legyen b=b b 2 b s B*. Ekkor f(b)=f(b )f(b 2 ) f( f(b s ). A B*-beli szavak kódjk dját t a szavakat alkotó betők k kódjainak k egymás s mellé írásával kapjuk. Ekkor E az f: B* C* kódolk dolást betőnk nkénti nti kódolk dolásnak nevezzük. Definíci ció. Az f: B* C* betőnk nkénti nti kódolk dolás felbontható kódot állít t elı,, ha két t különbk nbözı B*-beli szóhoz tartozó kód d különbk nbözı. A kód k d felbonthatósága garantálja az üzenet kódjk djából l az üzenet egyértelm rtelmő visszaáll llíthatóságát. t. 2. példa. p Az. példa p kódja k példp ldául nem felbontható,, mert f(ab)=f(c). dolás 6
Prefix kód Definíci ció. Betőnkénti nti kódolk dolás s esetén n a kódot k prefixnek nevezzük, ha egyik kódszó sem valódi szókezd kezdı része a másiknak. m 3. példa. p Az elızı példában szereplı kód d nem prefix. f(a)= 0, f(b)=0, f(c)=00, Például f(a) szerepel f(b) elején, más m s szóval f(b) az f(a)-nak folytatása. 4. példa. p Legyen B={a, b, c}, C={0, } és s f(a)= 0, f(b)=0, f(c)=00. Ez a kód k prefix. Tétel. Prefix kód d felbontható. Bizonyítás. Könnyen adható dekódol dolási algoritmus. Ez prefix kód d esetén n egyértelm rtelmően en elıáll llítja a kódolt k üzenetbıl l az eredetit. dolás 7
Blokk-kód Definíci ció. Betőnkénti nti kódolk dolás s esetén n a kódot k blokk-kódnak nevezzük, ha a B halmaz mindegyik eleméhez ugyanolyan hosszú kódszó tartozik. Tétel. Blokk-kód d felbontható. Bizonyítás. A blokk-kód d egyúttal prefix kód d is, így az elızı tétel tel alkalmazható. dolás 8
Kódfa Definíci ció. Az f: B C* által létrehozott l prefix kódhoz k irány nyított fát, f un. kódfát rendelhetünk nk a következk vetkezı módon. A fa csúcsaib csaiból legfeljebb C elemszámú él l vezethet ki, ezeket az éleket C elemeivel címkc mkézzük k meg. A fa leveleit (olyan csúcsok, csok, amelyekbıl l nem vezet ki él) a B elemeivel címkc mkézzük k meg. Ekkor a kódolk dolás s a következk vetkezıképpen olvasható le a fáról. f Legyen az egyik levél l a b B b és s a gyökérb rbıl l a hozzá vezetı élek címkéi i sorban c, c 2,, c k. Ekkor f(b)= c c 2 c k. A következk vetkezı példában bináris prefix kód d kódfk dfáját t látjuk. l dolás 9
5. példa. 0 0 0 b 6 0 b 3 0 b b 2 B={b, b 2, b 3, b 4, b 5, b 6 } C={0,} f(b )=000 f(b 2 )=00 f(b 3 )=0 f(b 4 )=000 f(b 5 )=00 f(b 6 )= 0 b 4 b 5 dolás 0
A kódok k hosszának alsó korlátja dolás
McMillan-egyenl egyenlıtlenség Tétel. (McMillan-egyenlıtlenség) Tegyük k fel, hogy f: B C* felbontható kódot határoz meg. B ={b, b 2,, b k }, és s az f(b ), f(b 2 ),,, f(b k ) kódszavak k hossza {h, h 2,, h k }, C =c. k Ekkor i= c h i 6. példa. p A 4. példa p prefix kódjára C =2, a kódhosszak k, 2, 3, a McMillan-egyenl egyenlıtlenség teljesül. l. k i= c h i = 2 + 2 2 + 2 3 = 7 8 dolás 2
Vigyázzunk, a McMillan-egyenl egyenlıtlenség nem megfordíthat tható.. Ha teljesül l az egyenlıtlens tlenség, nem biztos, hogy a kód k d felbontható. 7. példa. p Az. példa p esetében ugyanazt az értéket kapjuk mint az 5. példában, pedig az elıbbi kód k d nem felbontható. Tétel. (Kraft-tétel) Legyen B és s C véges v ábécé, B ={b, b 2,, b k }, C =c, és s legyenek {h, h 2,, h k } pozitív v egész számok, melyekre teljesül l a McMillan-egyenl egyenlıtlenség. i= c h i Ekkor létezik l olyan prefix kódot meghatároz rozó f: B C* kódolk dolás, amelyre az f(b ), f(b 2 ),,, f(b k ) kódszavak k hossza éppen {h, h 2,, h k }. k dolás 3
Következmény. A McMillan- és s a Kraft-tételb telbıl következik, hogy ha f: B C* felbontható kódot határoz meg, akkor létezik l olyan prefix kód, hogy a két k t kódban k a B elemeihez tartozó kódszavak hossza megegyezik. Ez a tény t megnöveli a prefix kód d jelentıségét. t. dolás 4
Optimális kódk dolás 5
Átlagos szóhossz, a kód k d költsk ltsége A kódolandk dolandó üzenetben a különbk nbözı jelek más m és s más m gyakorisággal ggal fordulhatnak elı.. Ha törekszt rekszünk arra, hogy az üzenethez tartozó kód d minél l rövidebb r legyen, akkor a gyakrabban elıfordul forduló jelekhez rövidebb r kódot, k míg m g a ritkábban elıfordul fordulókhoz a hosszabb kódokat k érdemes rendelnünk. nk. dolás 6
Tegyük k fel a továbbiakban, hogy az F jelforrás s a B ={b, b 2,, b k } ábécé jeleit egymást stól l függetlenf ggetlenül véletlenszerően en bocsátja ki. Jelölje lje p i annak a valósz színőségét, hogy az F által kibocsátott jel b i. Feltesszük, hogy k p i >0 (i=..k), és p i i= = Elég g hosszú,, pl. M számú jelbıl álló jelsorozatban a benne elıfordul forduló b i -k száma közelk zelítıleg leg p i M. Az M számú jelbıl álló sorozat kódjk djának átlagos hossza: k p i h i Ha csökken a értéke, akkor csökken a közlk zlések átlagos i= hossza is. Ez indokolja a következk vetkezı definíci ciót. M k i= p i h i dolás 7
Definíci ció. Tegyük k fel, hogy az f: B C* felbontható kódolást alkalmazzuk, és s az f(b ), f(b 2 ),,, f(b k ) kódszavak k hossza {h, h 2,, h k }, C =c, K=f(B) C*. Jelölje lje p i annak a valósz színőségét, hogy az F forrás által kibocsátott jel b i. A K kód k d F forrás s melletti átlagos szóhossza hossza,, vagy költsége: k H ( K ) = i= p i h i dolás 8
Optimális kódokk Definíci ció. Legyen B és s C véges v ábécé.. RögzR gzítsük k a F jelforrást, vagyis a B ábécé betőihez tartozó p i valósz színőségeket. Tekintsük k az f: B C* függvf ggvények által meghatározott felbontható kódokat. Ezek közül k l a legkisebb átlagos szóhossz hosszúságú (költs ltségő) ) kódot k optimális kódnak k nevezzük. Korábbi megjegyzésünk alapján n elég g adott esetben az optimális prefix kódot keresnünk. nk. dolás 9
Entrópia Definíci ció. Az alábbi E(F) értéket az F forrás entrópi piájának nevezzük. (A log 2-es alapú logaritmust jelöl) l) E( F) = k i= p i log p i = k i= p i log p i dolás 20
H k ( K) = p i h i E( F) = pi log = i= Tétel.. (Shannon( tétele tele zajmentes csatornákra) Egy F jelforráshoz tartozó tetszıleges K felbontható kódra teljesül l a következk vetkezı H ( K) k i= E( F) log c p i k i= p i log p i Prefix kóddal ez a korlát t jól j l megközel zelíthetı. Tétel. E( F) Létezik olyan f: B C* B prefix kód, amelyre H ( K) + logc Bizonyítás. A bizonyítást példp ldául az un. Shannon-Fano kód d segíts tségével lehet elvégezni. dolás 2
Bináris Huffman-kód Legyen B ={b, b 2,, b k }, a valósz színőségek pedig sorban (nagyság g szerint csökken kkenıen rendezve): {0,20; 0,20; 0,9; 0,2; 0,; 0,09; 0,09} b b 2 b 3 b 4 b 5 b 6 b 7 0,20 0,20 0,9 0,2 0, 0,09 0,09 0,20 0,20 0,9 0,8 0,2 0, 0,23 0,20 0,20 0,9 0,8 0,37 0,23 0,20 0,20 0,40 0,37 0,23 0,60 0,40 b b 2 b 3 b 4 b 5 b 6 0 000 00 0 000 00 b 7 0 000 00 00 0 0 0 000 00 00 0 0 00 0 dolás 22 0
A Huffmann-kód d elınye: Optimális kódot k állít t elı. A Huffmann-kód d hátrh trányai: Ismernünk nk kell kódolk dolásnál l a teljes szöveget. Kétszer kell végigmennv gigmennünk nk az adatokon. Elısz ször meghatározzuk a forrásbet sbetők k relatív v gyakoriságát, ami megegyezik a valósz színőségekkel, majd ennek felhasználásával elvégezz gezzük k a tényleges t kódolk dolást. Adaptív v Huffmann-kódol dolás. Csak egyszer megy végig v az adatokon. Az optimalitás rovására ra idıt t takarítunk tunk meg. Egy forrásbet sbetőt t az elızı forrásbet sbetők elıfordul fordulásai alapján n kódolunk, k s ezzel együtt lépésenkl senként nt változik maga a kód k d is. Az aktuális forrásbet sbető kódolását t egy, az elızıleg leg feldolgozott forrásbet sbetőkre optimális kóddal k hajtjuk végre. dolás 23
Adaptív v kódok. k Menet közben k győjt jtünk informáci ciót t a forrásszimb sszimbólumokról, l, az aktuális szimbólumot az ezt megelızı szimbólumok alapján kódoljuk. Lempel-Ziv kódok: LZ77 algoritmus. 977-ben publikált lták. LZ78 algoritmus. LZW kód: k Terry Welch az LZ78-at módosm dosította. Az Unix COMPRESS parancsa és s a GIF (Graphics( Interchange Format) képtömörítı is az LZW algoritmust használja. dolás 24
Irodalomjegyzék Demetrovics, Denev,, Pavlov: A számítástudom studomány matematikai alapjai Tankönyvkiad nyvkiadó,, Budapest, 985 Gyırfi László-Gyıri Sándor-Vajda István: Informáci ció és kódelmélet let Typotex Kiadó,, 2000 Jablonszkij, Lupanov: Diszkrét t matematika a számítástudom studományban Mőszaki KönyvkiadK nyvkiadó,, 980 dolás 25