410 likes | 496 Views
Információelmélet. Nagy Szilvia 3. Forráskódolási módszerek. Információelmélet – Forráskódolási módszerek. Emlékeztető – forráskódolás.
E N D
Információelmélet Nagy Szilvia 3. Forráskódolási módszerek 2005.
Információelmélet – Forráskódolási módszerek Emlékeztető – forráskódolás Az olyan kódokat, amelyek különböző A-beli szimbólumokhoz más és más hosszúságú kódszavakat rendelnek, változó szóhosszúságú kódoknak nevezzük. Az B -beli sorozat, avagy kódszó hosszaℓi . A jó tömörítő eljárásokra tehát igaz, hogy ha pi ≥ pj , akkor ℓi ≤ℓj . Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek Emlékeztető – forráskódolás Ha az fbináris kód prefix, akkor • a leggyakoribb forrásábécébeli elemhez fog a legrövidebb kódszó tartozni, • a második leggyakoribbhoz eggyel hosszabb kódszó, • … • a két legritkábban előforduló betűhöz pedig azonosan hosszú kódszó fog tartozni, és csak az utolsó karakterben fog e két szó különbözni. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek Huffman-kód A legrövidebb átlagos szóhosszú bináris prefix kód. • Valószínűségek szerint sorba rendez • A két legkisebb valószínűségű szimbólumot összevonja. Az összevont szimbólum valószí-nűsége a két eredeti szimbólum valószínű-ségének összege. • Az 1-2. lépést addig ismétli, amíg egyetlen, 1 valószínűségű összevont szimbólumot nem kap. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek Huffman-kód A legrövidebb átlagos szóhosszú bináris prefix kód. • Az 1-2. lépést addig ismétli, amíg egyetlen, 1 valószínűségű összevont szimbólumot nem kap. • A kapott gráf minden csomópontja előtti két élt megcímkézi 0-val és 1-gyel. • A kódfa gyökerétől elindulva megkeresi az adott szimbólumhoz tartozó útvonalat, kiolvassa az éleknek megfelelő biteket. A kapott bitsorozatot rendeli a szimbólumhoz kódszóként. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek Huffman-kód Legyen a forrásábécé A={A1, A2, A3, A4, A5, A6, A7}, elemeinek előfordulási valószínű-sége rendre p1=0,17, p2=0,26, p3=0,07, p4=0,21, p5=0,10, p6=0,08 és p7=0,11. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek Huffman-kód Legyen a forrásábécé A={A1, A2, A3, A4, A5, A6, A7}, elemeinek előfordulási valószínű-sége rendre p1=0,17, p2=0,26, p3=0,07, p4=0,21, p5=0,10, p6=0,08 és p7=0,11. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW A 0 és 1 címkézése választ-ható, elágazásonként felcserélhető.
Az átlagos kódszóhossz: Az entrópia: Információelmélet – Forráskódolási módszerek Huffman-kód Legyen a forrásábécé A={A1, A2, A3, A4, A5, A6, A7}, elemeinek előfordulási valószínű-sége rendre p1=0,17, p2=0,26, p3=0,07, p4=0,21, p5=0,10, p6=0,08 és p7=0,11. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek Huffman-kód Legyen a forrásábécé A={A1, A2, A3, A4, A5, A6, A7}, elemeinek előfordulási valószínű-sége rendre p1=0,17, p2=0,26, p3=0,07, p4=0,21, p5=0,10, p6=0,08 és p7=0,11. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW A kiolvasás iránya
Információelmélet – Forráskódolási módszerek Huffman-kód Legyen a forrásábécé A={A1, A2, A3, A4, A5, A6, A7}, elemeinek előfordulási valószínű-sége rendre p1=0,17, p2=0,26, p3=0,07, p4=0,21, p5=0,10, p6=0,08 és p7=0,11. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW A kiolvasás iránya
Információelmélet – Forráskódolási módszerek Huffman-kód Legyen a forrásábécé A={,,,,,}, elemeinek előfordulási valószínűsége rendre p () =0,10, p () =0,05, p () =0,12, p () =0,25, p () =0,40 és p () =0,08 . Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW A kiolvasás iránya
Az átlagos kódszóhossz: Az entrópia: Információelmélet – Forráskódolási módszerek Huffman-kód Legyen a forrásábécé A={,,,,,}, elemeinek előfordulási valószínűsége rendre p () =0,10, p () =0,05, p () =0,12, p () =0,25, p () =0,40 és p () =0,08 . Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW A kiolvasás iránya
Információelmélet – Forráskódolási módszerek Huffman-kód Legyen a forrásábécé A={,,,,,}, elemeinek előfordulási valószínűsége rendre p () =0,10, p () =0,05, p () =0,12, p () =0,25, p () =0,40 és p () =0,08 . Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW A kiolvasás iránya
Információelmélet – Forráskódolási módszerek Huffman-kód Legyen a forrásábécé A={Б, Г, Д, Ж, З, И, К}, elemeinek előfordulási valószínűsége rendre pБ=0,17, pГ=0,26, pД=0,07, pЖ=0,21, pЗ=0,10, pИ=0,08 és pК=0,11. Kódoljuk bináris Huffman-kóddal a Ж Г К Г Д И Б Д З З И Ж Г Б üzenetet. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek Aritmetikai kód Legyen a forrásábécé elemszáma n, és m elemű blokkokat kódoljunk. • Felosztja a [0,1) intervallumot n diszjunkt részre, minden résznek megfeleltet egy-egy forrásábécébeli elemet.Célszerű a kis valószínűségű betűkhöz rövid, a gyakoriakhoz hosszú részintervallumot rendelni. • Kiválasztja a blokk soron következő karakterének megfelelő intervallumot. • Az új intervallumot felosztja ugyanolyan arányban, mint a [0,1)-et osztotta, és ugyanolyan sorrendben rendeli a részintervallumokhoz a lehetséges szimbólumokat. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek Aritmetikai kód Legyen a forrásábécé elemszáma n, és m elemű blokkokat kódoljunk. • Az új intervallumot felosztja ugyanolyan arányban, mint a [0,1)-et osztotta, és ugyanolyan sorrendben rendeli a részintervallumokhoz a lehetséges szimbólumokat. • A 2-3. lépéseket ismétli, amíg el nem fogy a blokk. • A végül maradt kis intervallumból kiválaszt egy (binárisan) jól leírható számot, az lesz a kódszó. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek Aritmetikai kód Legyen a forrásábécé A={A1, A2, A3, A4, A5}, elemeinek előfordulási valószínűsége rendre p1=0,18, p2=0,36, p3=0,11, p4=0,26 és p5=0,09. A kódolni kívánt blokk: A2A2A1A4A1 Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek Aritmetikai kód Legyen a forrásábécé A={A1, A2, A3, A4, A5}, elemeinek előfordulási valószínűsége rendre p1=0,18, p2=0,36, p3=0,11, p4=0,26 és p5=0,09. A kódolni kívánt blokk: A2A2A1A4A1 Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek Aritmetikai kód Legyen a forrásábécé A={A1, A2, A3, A4, A5}, elemeinek előfordulási valószínűsége rendre p1=0,18, p2=0,36, p3=0,11, p4=0,26 és p5=0,09. A kódolni kívánt blokk: A2A2A1A4A1 Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW bináris tört alakban: 0011011011
Információelmélet – Forráskódolási módszerek Lempel—Ziv-algoritmusok Nem szükséges előre ismerni a kódolandó karakterek előfordulási valószínűségét. Az üzenet bolvasása során egy láncolt listát, ú.n. szótárat épít. Egy szótársornak 3 mezője van: msorszám, nmutató és a karakter. A kódolt információ a sorszámokból álló sorozat lesz. A kódolás során a vevő is megkapja a szükséges információt, párhuzamosan építi a szótárat, vagy pedig a tömörített fájlban szerepel maga a szótár is. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek LZ78 A szótár nulladik sora adott: m=0, n=0 a karakter pedig üres. A kódolás elején a megjegyzett sorszám nm= 0, az utolsó használt sorszám is mu=0. A kódoló a következő lépéseket ismétli, amíg el nem fogy az üzenet: • Beolvassa a következő karaktert, amit nevezzünk „c”-nek • Ha egyáltalán nem szerepel a karak-ter a szótárban nyit neki egy új sort, a sor paraméterei: m=mu+1, n=0, a karakter „c”. A megjegyzett elem nm= 0 az utolsó sorszám mu=mu+1. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek LZ78 • Ha már szerepel a karakter a szótár-ban, akkor vizsgálja azokat a sorokat, amelyeknek a megjegyzett nm szerepel a mutató mezejükben. • Ha talál olyant, amelynek a karaktermezejében „c” szerepel, annak a sornak az indexe lesz az új nm, mu nem változik. • Ha nem talál olyan sort, amelyikben „c” a karakter, akkor nyit egy újat. A sorszám m=mu+1, a mutató nm, a karakter „c”. Az új megjegyzett sorszám 0. A használt utolsó sorszám mu=mu+1. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek LZ78 Legyen az LZ78 algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZ78 Legyen az LZ78 algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZ78 Legyen az LZ78 algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZ78 Legyen az LZ78 algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZ78 Legyen az LZ78 algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZ78 Legyen az LZ78 algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZ78 Legyen az LZ78 algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZ78 Legyen az LZ78 algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e A szótár reprodukálásához szükséges adatok: az n sor és a „c” karaktereknek megfelelő kód
Információelmélet – Forráskódolási módszerek LZW A szótár első k sora tartalmazza a használni kínánt k darab karaktert. A kódolás elején a megjegyzett sorszám nm= 0, az utolsó használt sorszám mu=k. A kódoló a következő lépéseket ismétli, amíg el nem fogy az üzenet: • Beolvassa a következő karaktert, amit nevezzünk „c”-nek. Vizsgálja azokat a sorokat, amelyeknek a megjegyzett nm szerepel a mutató mezejükben. • Ha talál olyant, amelynek a karaktermezejében „c” szerepel, annak a sornak az indexe lesz az új nm. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek LZW • Ha talál olyant, amelynek a karaktermezejében „c” szerepel, annak a sornak az indexe lesz az új nm. • Ha nem talál olyan sort, amelyikben „c” a karakter, akkor nyit egy újat. A sorszám m=mu+1, a mutató nm, a karakter „c”. Az új megjegyzett sorszám annak a sornak az m-je, ahol a „c” karakter először szerepelt. A használt utolsó sorszám mu=mu+1. Az üzenet ezen láncához rendelt kódszó nm. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv-kódok: LZ78 Lempel—Ziv-kódok: LZW
Információelmélet – Forráskódolási módszerek LZW Legyen az LZW algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e A definiáló rész
Információelmélet – Forráskódolási módszerek LZW Legyen az LZW algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZW Legyen az LZW algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZW Legyen az LZW algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZW Legyen az LZW algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZW Legyen az LZW algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZW Legyen az LZW algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZW Legyen az LZW algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e
Információelmélet – Forráskódolási módszerek LZW Legyen az LZW algoritmussal kódolandó üzenet: a b c c b d a b c c b d a b c c b d a b c c b d a e e d a e e d a e e 1 2 3 3 2 4 6 8 10 12 9 11 7 16 4 5 5 11 21 23 5