2005. Információelmélet Nagy Szilvia 3. Forráskódolási módszerek
Széchenyi István Egyetem 2 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 p i ≥ p j, 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
Széchenyi István Egyetem 3 Információelmélet – Forráskódolási módszerek Emlékeztető – forráskódolás Ha az f biná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
Széchenyi István Egyetem 4 Információelmélet – Forráskódolási módszerek Huffman-kód A legrövidebb átlagos szóhosszú bináris prefix kód. 1.Valószínűségek szerint sorba rendez 2.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. 3.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
Széchenyi István Egyetem 5 Információelmélet – Forráskódolási módszerek Huffman-kód A legrövidebb átlagos szóhosszú bináris prefix kód. 3.Az 1-2. lépést addig ismétli, amíg egyetlen, 1 valószínűségű összevont szimbólumot nem kap. 4.A kapott gráf minden csomópontja előtti két élt megcímkézi 0-val és 1-gyel. 5.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
Széchenyi István Egyetem 6 Információelmélet – Forráskódolási módszerek Huffman-kód Legyen a forrásábécé A={A 1, A 2, A 3, A 4, A 5, A 6, A 7 }, elemeinek előfordulási valószínű- sége rendre p 1 =0,17, p 2 =0,26, p 3 =0,07, p 4 =0,21, p 5 =0,10, p 6 =0,08 és p 7 =0,11. Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv- kódok: LZ78 Lempel—Ziv- kódok: LZW A2A2 0,26 0,320,420,581 A4A4 0,21 0,260,320,42 A1A1 0,17 0,21 0,26 A7A7 0,110,150,170,21 A5A5 0,100,110,15 A6A6 0,080,10 A3A3 0,07
Széchenyi István Egyetem 7 Huffman-kód Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv- kódok: LZ78 Lempel—Ziv- kódok: LZW A2A2 0,26 0,58 A4A4 0,21 0,421 A1A1 0,17 0,32 A7A7 0,11 0,21 A5A5 0,10 A6A6 0,08 0,15 A3A3 0,07 A 0 és 1 címkézése választ- ható, elágazásonként felcserélhető. Legyen a forrásábécé A={A 1, A 2, A 3, A 4, A 5, A 6, A 7 }, elemeinek előfordulási valószínű- sége rendre p 1 =0,17, p 2 =0,26, p 3 =0,07, p 4 =0,21, p 5 =0,10, p 6 =0,08 és p 7 =0,11. Információelmélet – Forráskódolási módszerek
Széchenyi István Egyetem 8 Huffman-kód Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv- kódok: LZ78 Lempel—Ziv- kódok: LZW A2A2 0,26 A4A4 0,21 A1A1 0,17 A7A7 0,11 A5A5 0,10 A6A6 0,08 A3A3 0,07 Az átlagos kódszóhossz: Az entrópia: Legyen a forrásábécé A={A 1, A 2, A 3, A 4, A 5, A 6, A 7 }, elemeinek előfordulási valószínű- sége rendre p 1 =0,17, p 2 =0,26, p 3 =0,07, p 4 =0,21, p 5 =0,10, p 6 =0,08 és p 7 =0,11. Információelmélet – Forráskódolási módszerek
Széchenyi István Egyetem 9 Huffman-kód 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 Legyen a forrásábécé A={A 1, A 2, A 3, A 4, A 5, A 6, A 7 }, elemeinek előfordulási valószínű- sége rendre p 1 =0,17, p 2 =0,26, p 3 =0,07, p 4 =0,21, p 5 =0,10, p 6 =0,08 és p 7 =0,11. Információelmélet – Forráskódolási módszerek
Széchenyi István Egyetem 10 Huffman-kód Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv- kódok: LZ78 Lempel—Ziv- kódok: LZW A2A2 0,26 0,320,420,581 A4A4 0,21 0,260,320,42 A1A1 0,17 0,21 0,26 A7A7 0,110,150,170,21 A5A5 0,100,110,15 A6A6 0,080,10 A3A3 0,07 Legyen a forrásábécé A={A 1, A 2, A 3, A 4, A 5, A 6, A 7 }, elemeinek előfordulási valószínű- sége rendre p 1 =0,17, p 2 =0,26, p 3 =0,07, p 4 =0,21, p 5 =0,10, p 6 =0,08 és p 7 =0,11. A kiolvasás iránya Információelmélet – Forráskódolási módszerek
Széchenyi István Egyetem 11 Huffman-kód Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv- kódok: LZ78 Lempel—Ziv- kódok: LZW 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. 0,40 0,601 0,25 0,350,40 0,120,130,220,25 0,100,120,13 0,080,10 0,05 A kiolvasás iránya Információelmélet – Forráskódolási módszerek
Széchenyi István Egyetem 12 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. Huffman-kód Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv- kódok: LZ78 Lempel—Ziv- kódok: LZW Az átlagos kódszóhossz: Az entrópia: Információelmélet – Forráskódolási módszerek A kiolvasás iránya
Széchenyi István Egyetem 13 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. Huffman-kód 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
Széchenyi István Egyetem 14 Huffman-kód Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv- kódok: LZ78 Lempel—Ziv- kódok: LZW 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. Információelmélet – Forráskódolási módszerek
Széchenyi István Egyetem 15 Aritmetikai kód Aritmetikai kód Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv- kódok: LZ78 Lempel—Ziv- kódok: LZW Legyen a forrásábécé elemszáma n, és m elemű blokkokat kódoljunk. 1.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. 2.Kiválasztja a blokk soron következő karakterének megfelelő intervallumot. 3.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. Információelmélet – Forráskódolási módszerek
Széchenyi István Egyetem 16 Aritmetikai kód Aritmetikai kód Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv- kódok: LZ78 Lempel—Ziv- kódok: LZW Legyen a forrásábécé elemszáma n, és m elemű blokkokat kódoljunk. 3.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. 4.A 2-3. lépéseket ismétli, amíg el nem fogy a blokk. 5.A végül maradt kis intervallumból kiválaszt egy (binárisan) jól leírható számot, az lesz a kódszó. Információelmélet – Forráskódolási módszerek
Széchenyi István Egyetem 17 Aritmetikai kód Aritmetikai kód Forráskódolási módszerek Huffman-kód Aritmetikai kód Lempel—Ziv- kódok: LZ78 Lempel—Ziv- kódok: LZW Legyen a forrásábécé A={A 1, A 2, A 3, A 4, A 5 }, elemeinek előfordulási valószínűsége rendre p 1 =0,18, p 2 =0,36, p 3 =0,11, p 4 =0,26 és p 5 =0,09. A kódolni kívánt blokk: A 2 A 2 A 1 A 4 A 1 Információelmélet – Forráskódolási módszerek
Széchenyi István Egyetem 18 Legyen a forrásábécé A={A 1, A 2, A 3, A 4, A 5 }, elemeinek előfordulási valószínűsége rendre p 1 =0,18, p 2 =0,36, p 3 =0,11, p 4 =0,26 és p 5 =0,09. A kódolni kívánt blokk: A 2 A 2 A 1 A 4 A 1 Aritmetikai kód Aritmetikai kód 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
Széchenyi István Egyetem 19 Aritmetikai kód Aritmetikai kód 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 Legyen a forrásábécé A={A 1, A 2, A 3, A 4, A 5 }, elemeinek előfordulási valószínűsége rendre p 1 =0,18, p 2 =0,36, p 3 =0,11, p 4 =0,26 és p 5 =0,09. A kódolni kívánt blokk: A 2 A 2 A 1 A 4 A 1 bináris tört alakban:
Széchenyi István Egyetem 20 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ár at épít. Egy szótársornak 3 mezője van: m sorszám, n mutató é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
Széchenyi István Egyetem 21 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 n m = 0, az utolsó használt sorszám is m u =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=m u +1, n=0, a karakter „c”. A megjegyzett elem n m = 0 az utolsó sorszám m u =m u +1. LZ78 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
Széchenyi István Egyetem 22 –Ha már szerepel a karakter a szótár- ban, akkor vizsgálja azokat a sorokat, amelyeknek a megjegyzett n m szerepel a mutató mezejükben. Ha talál olyant, amelynek a karaktermezejében „c” szerepel, annak a sornak az indexe lesz az új n m, m u nem változik. Ha nem talál olyan sort, amelyikben „c” a karakter, akkor nyit egy újat. A sorszám m=m u +1, a mutató n m, a karakter „c”. Az új megjegyzett sorszám 0. A használt utolsó sorszám m u =m u +1. LZ78 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
Széchenyi István Egyetem 23 Legyen az LZ78 algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 Információelmélet – Forráskódolási módszerek LZ78
Széchenyi István Egyetem 24 Legyen az LZ78 algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 43 Információelmélet – Forráskódolási módszerek LZ78
Széchenyi István Egyetem 25 Legyen az LZ78 algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 43 50 Információelmélet – Forráskódolási módszerek LZ78
Széchenyi István Egyetem 26 Legyen az LZ78 algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 43 50 61 Információelmélet – Forráskódolási módszerek LZ78
Széchenyi István Egyetem 27 Legyen az LZ78 algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 43 50 61 73 Információelmélet – Forráskódolási módszerek LZ78
Széchenyi István Egyetem 28 Legyen az LZ78 algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 43 50 61 73 82 Információelmélet – Forráskódolási módszerek LZ78
Széchenyi István Egyetem 29 Legyen az LZ78 algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 43 50 61 73 82 mn„c”sorozat 96 104 119 128 130 1413 151 1614 1713 Információelmélet – Forráskódolási módszerek LZ78
Széchenyi István Egyetem 30 Legyen az LZ78 algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 43 50 61 73 82 mn„c”sorozat 96 104 119 128 130 1413 151 1614 1713 Információelmélet – Forráskódolási módszerek LZ78 A szótár reprodukálásához szükséges adatok: az n sor és a „ c ” karaktereknek megfelelő kód
Széchenyi István Egyetem 31 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 n m = 0, az utolsó használt sorszám m u =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 n m szerepel a mutató mezejükben. Ha talál olyant, amelynek a karaktermezejében „c” szerepel, annak a sornak az indexe lesz az új n m. LZW 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
Széchenyi István Egyetem 32 Ha talál olyant, amelynek a karaktermezejében „c” szerepel, annak a sornak az indexe lesz az új n m. Ha nem talál olyan sort, amelyikben „c” a karakter, akkor nyit egy újat. A sorszám m=m u +1, a mutató n m, 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 m u =m u +1. Az üzenet ezen láncához rendelt kódszó n m. LZW 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
Széchenyi István Egyetem 33 Legyen az LZW algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 40 50 Információelmélet – Forráskódolási módszerek LZW A definiáló rész
Széchenyi István Egyetem 34 Legyen az LZW algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 40 50 61 Információelmélet – Forráskódolási módszerek LZW
Széchenyi István Egyetem 35 Legyen az LZW algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 40 50 61 72 Információelmélet – Forráskódolási módszerek LZW
Széchenyi István Egyetem 36 Legyen az LZW algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 40 50 61 72 83 Információelmélet – Forráskódolási módszerek LZW
Széchenyi István Egyetem 37 Legyen az LZW algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 40 50 61 72 83 mn„c”sorozat 93 102 114 126 Információelmélet – Forráskódolási módszerek LZW
Széchenyi István Egyetem 38 Legyen az LZW algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 40 50 61 72 83 mn„c”sorozat 93 102 114 126 138 Információelmélet – Forráskódolási módszerek LZW
Széchenyi István Egyetem 39 Legyen az LZW algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 40 50 61 72 83 mn„c”sorozat 93 102 114 126 138 1410 1512 169 1711 Információelmélet – Forráskódolási módszerek LZW
Széchenyi István Egyetem 40 Legyen az LZW algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 40 50 61 72 83 mn„c”sorozat 93 102 114 126 138 1410 1512 169 1711 mn„c”sorozat 187 1916 201 215 225 2311 2421 2523 Információelmélet – Forráskódolási módszerek LZW
Széchenyi István Egyetem 41 Legyen az LZW algoritmussal kódolandó üzenet: mn„c”sorozat 20 30 40 50 61 72 83 mn„c”sorozat 93 102 114 126 138 1410 1512 169 1711 mn„c”sorozat 187 1916 201 215 225 2311 2421 2523 -5 Információelmélet – Forráskódolási módszerek LZW