Az Informatika Elméleti Alapjai dr. Kutor László Minimális redundanciájú kódok Statisztika alapú tömörítő algoritmusok http://mobil.nik.bmf.hu/tantargyak/iea.html Felhasználónév: iea Jelszó: IEA07 BMF NIK dr. Kutor László IEA 8/1 A kódolás folyamata és fogalmai U A A* U* Forrás Kódoló Csatorna Dekódoló Vevő A kódolás céljai: U-nak A-ba történő leképezése minimális redundancia létrehozásával Forrás kódolás U-nak A-ba történő leképezése növelt redundancia létrehozásával Csatorna kódolás U-nak A-ba történő leképezése a kódrendszer titkos megváltoztatásával Titkosító kódolás BMF NIK dr. Kutor László IEA 8/2
A kódolással szemben támasztott követelmények 1. Egyértelmű dekódolhatóság: nem redukálható = irreducibilis kód! Feltétele: hogy egyik kódszó sem lehet a másik kódszó része 2. Forráskódolásnál a minimális szóhossz 3. Csatornakódolásnál a hibák észlelése és javítása 4. Titkosító kódolásnál a megfelelően nehéz dekódolhatóság BMF NIK dr. Kutor László IEA 8/3 Morse kód A.- J.--- B -... K -.- C -.-. L.-.. D -.. M -- E. N -. F..-. O --- G --. P.--. H... Q --.- I.. R.-. (redukálható) S... T - U..- V...- W.-- X -..- Y -.-- Z --.. 0 ----- 1.---- 2..--- 3...-- 4...- 5... 6 -... 7 --... 8 ---.. 9 ----. Fullstop.-.-.- Comma --..-- Query..--.. BMF NIK dr. Kutor László IEA 8/4
Statisztikára épülő adattömörítés Forrás Kódoló Csatorna Dekódoló Vevő Statisztika Statisztika Előnye: biztosítja a minimális átlagos szóhosszat (minimum redundanciát) Hátránya: a statisztikát is továbbítani kell BMF NIK dr. Kutor László IEA 8/5 Minimum redundanciájú kódok 1. Shannon-Fano kód Claude Shannon Bell Lab. ~1950 R.M. Fano M.I.T. Az üzenetek (szimbólumok) előfordulási gyakoriságának (valószínűségének) ismeretében létrehozható olyan kód amely egyértelműen dekódolható változó (szó) hosszúságú a kódszavak hossza a kódolt szimbólumok előfordulási valószínűségétől függ Gyakori szimbólum Ritka szimbólum rövid kód hosszú kód BMF NIK dr. Kutor László IEA 8/6
A Shannon-Fano algoritmus 1. Az üzenetekben előforduló szimbólumok előfordulási gyakoriságának meghatározása 2. A szimbólumok gyakoriság szerinti csökkenő sorrendbe rendezése 3. A lista két részre osztása úgy, hogy a két részben lévő szimbólumok összesített gyakorisága (közel) egyenlő legyen 4. A lista felső részéhez 0 -át, az alsó részéhez 1 -et rendelünk (vagy fordítva) 5. A 3.-ik és 4.-ik eljárást addig ismételjük, amíg a kettéosztott lista mindkét részében csak 1-1 szimbólum található BMF NIK dr. Kutor László IEA 8/7 Példa a Shannon Fano algoritmusra Szimbólumok Előfordulások Információ Bitek száma száma tartalom A 15 1.38 20.68 B 7 2.48 17.35 C 6 2.7 16.2 D 6 2.7 16.2 E 5 2.96 14.82 B (7) C (6) D (6) E (5) (22) 0 (17) 1 B (7) C (6) D (6) E (5) 0 1 0 0 1 D (6) E (5) 1 A = 00 B = 01 C = 10 D = 110 E = 111 ASCII 39* 8 = 312 Shannon-Fano 89? BMF NIK dr. Kutor László IEA 8/8
Minimum redundanciájú kódok 2. Huffmann kód D.A. Huffmann (1952) 1. Az üzenetekben előforduló szimbólumok előfordulási gyakoriságának meghatározása 2. A szimbólumok gyakoriság szerinti csökkenő sorrendbe rendezése 3. A két legkevésbé gyakori szimbólumot összevonjuk és beírjuk a szimbólumok közé a gyakorisági sorba 4. A 3.-ik pontot addig ismételjük, amíg 2 elemű lesz a lista. Ekkor az egyik elemhez 0 -át a másikhoz 1 -et rendelünk. 5. Visszalépünk az előző összevont szimbólumhoz, és az előbbivel azonos sorrendben a két szimbólumhoz 0 -át és 1 -etrendelünk, mindaddig, míg vissza nem jutunk az egyes szimbólumokhoz BMF NIK dr. Kutor László IEA 8/9 Példa a Huffmann algoritmusra Szimbólumok Előfordulások Információ Bitek száma száma tartalom A 15 1.38 20.68 B 7 2.48 17.35 C 6 2.7 16.2 D 6 2.7 16.2 E 5 2.96 14.82 B (7) C (6) D (6) E (5) DE (11) B (7) 1 1 C (6) 0 0 BC(13) 1 DE (11) 0 BCDE(24) 1 0 A = 0 B = 111 C = 110 D = 101 E = 100 ASCII 39* 8 = 312 Huffmann 87? BMF NIK dr. Kutor László IEA 8/10
1/2 példa a Huffmann algoritmusra: Dekódolás Dekódolandó üzenet: 1101001010111101000110 Kódtábla: A = 0 B = 111 C = 110 D = 101 E = 100 C E D A B D AAAC Visszafejtett kód: CEDABDAAAC BMF NIK dr. Kutor László IEA 8/11 A kódolási példa fa szerkezete BCDE 1 0 DE 1 0 BC D 1 0 E B 1 0 C A gyökér A = 0 B = 111 C = 110 D = 101 E = 100 D E B C A levelek BMF NIK dr. Kutor László IEA 8/12
2. példa a Huffmann algoritmusra: Kódolandó szöveg: Semmi nem olyan egyszerű, mint amilyennek látszik 1. A karakterek gyakoriságának meghatározása = 2, S=1, e=6, m=5, i=4, _=6, n=5, o=1, l=3, y=3, a=2, g=1, s=2, z=2, r=1, ű=1,,=1, t=2, k=2 =50 2. Gyakoriság szerinti rendezés 3. A kevésbé gyakori karaktereket kettesével összevonjuk és beírjuk a gyakorisági sorba, ami két elemű lesz a lista 4. A lista elemekhez rendre 0-át és 1-et rendelve létrehozzuk, majd kiolvassuk a kódot e(6) (6) m(5) n(5) i(4) l(3) y(3) (2) a(2) s(2) z(2) t(2) k(2) o(1) r(1) ű(1) g(1),(1) BMF NIK dr. Kutor László IEA 8/13 FAX gépek adattömörítése CCITT szerint G1, G2, G3 (G4?) A4-es oldal felbontás átvitel továbbításához (vonal/mm) szükséges idő: vivő G1 6 perc 3.85 analóg (1300.1700 Hz) G2 3 perc 3.85 analóg (2100) G3 40-60 s 3.85(7.7) CCITT (2400 bit/s) A 215 mm hosszú sor 1728 pontból áll Egydimenziós kódolás Kétdimenziós kódolás (15 20 mp) BMF NIK dr. Kutor László IEA 8/14
Minimum redundanciájú kódok 3. Aritmetikai kód (1952) US Pat. #: 4,905,297 Az egész üzenetet egy számmal helyettesítjük Például: BILL GATES 0.2572167752 BMF NIK dr. Kutor László IEA 8/15 Az aritmetikai kódolás algoritmusa 1. Az üzenetekben előforduló szimbólumok előfordulási gyakoriságának meghatározása 2. Minden szimbólumhoz hozzárendelünk egy 0 1 közé eső számtartományt. A számtartomány nagysága arányos a szimbólum relatív gyakoriságával 3. A teljes karaktersorozatot egy számmá alakítjuk. Az átalakítást úgy végezzük, hogy az üzenetben egymás után következő karakterek által kijelölt számtartományt lépésről lépésre beszűkítjük, míg végül egy számhoz jutunk BMF NIK dr. Kutor László IEA 8/16
1. példa az aritmetikai kódolásra Kódolandó szöveg: ALMA Szimbólumok Előfordulások Relatív Számtartomány száma gyakoriság A 2 2/4 0 <=t A < 0.5 L 1 1/4 0.5 <=t L < 0.75 M 1 1/4 0.75<=t M < 1 A L M 0 <= t A < 0. 5 0.25 <= t AL < 0.375 0. <= t ALM < 0.. 0. <= t ALMA < 0.. BMF NIK dr. Kutor László IEA 8/17 2. példa az aritmetikai kódolásra Data Compresson book Kódolandó szöveg: BILL_GATES Mark Nelson 1991 Szimbólumok Előfordulások Relatív Számtartomány száma gyakoriság -_ 1 1/10 0.00 <= t _ < 0.10 A 1 1/10 0.10 <= t A < 0.20 B 1 1/10 0.20 <= t B < 0.30 E 1 1/10 0.30 <= t E < 0.40 G 1 1/10 0.40 <= t G < 0.50 I 1 1/10 0.50 <= t I < 0.60 L 2 2/10 0.60 <= t L < 0.80 S 1 1/10 0.80 <= t S < 0.90 T 1 1/10 0.90 <= t T < 1.00 BMF NIK dr. Kutor László IEA 8/18
2/2. példa az aritmetikai kódolásra Kódolt szöveg: BILL_GATES 0.2572167752 Kódtáblázat 0.00 <= < 0.10 0.10 <= A < 0.20 0.20 <= B < 0.30 0.30 <= E < 0.40 0.40 <= G < 0.50 0.50 <= I < 0.60 0.60 <= L < 0.80 0.80 <= S < 0.90 0.90 <= T < 1.00 Számtartomány alsó érték felső érték B 0.2 0.3 I 0.25 0.26 L 0.256 0.258 L 0.2572 0.2576-0.25720 0.25724 G 0.257216 0.2572220 A 0.2572164 0.2572168 T 0.257216772 0.257216776 E 0.257216772 0.257216776 S 0.2572167752 0.2572167756 BMF NIK dr. Kutor László IEA 8/19 2/3. példa az aritmetikai kódolásra: Dekódolás Kiinduló kód: 0.2572167752 Kódtáblázat 0.00 <= < 0.10 0.10 <= A < 0.20 0.20 <= B < 0.30 0.30 <= E < 0.40 0.40 <= G < 0.50 0.50 <= I < 0.60 0.60 <= L < 0.80 0.80 <= S < 0.90 0.90 <= T < 1.00 1. 0.2572167752 B 0.2572167752 a 0.2 (a tartomány alsó értéke) b 0.0572167752 /0.1=0.57216 2. 0.572167752 I tartomány a 0.5 b 0.072167752 /0.1=0.7216. 3. 0.72167752 L a 0.6 b 0.12167752/0.2= 0.6083876 4. 0.6083876 L a 0.6 b 0.0083876/0.2=0.041938 5. 0.041938 _ a 0.0 b 0.041938/0.1=0.41938 6. 0.41938 G... BMF NIK dr. Kutor László IEA 8/20