Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Készítette: Lakos Péter
LZW-algoritmus Készítette: Lakos Péter
2
LZW-algoritmus: Veszteségmentes tömörítő eljárás
Abraham Lempel és Jacob Ziv 1978-ban publikálták az LZ78 algoritmust Az LZW ennek továbbfejlesztett változata, amit Terry Welch publikált 1984-ben Az LZW-algoritmust használja a compress / uncompress parancs UNIX rendszereken Az LZW-algoritmus továbbfejlesztéseiből születtek a zip, gzip és bzip tömörítések
3
Feladat: Adott egy T input string és egy S szótár
Az S a T-ben lévő betűkhöz és szavakhoz természetes számokat rendel Készítsük el T kódját S kibővítésével, hogy az output kisebb méretű legyen, mint T!
4
Példa tömörítésre T: a b a b a b a b a b a b Puffer: S: 0 : a 1 : b -
Tegyük a beolvasott karaktereket a pufferba, amíg a puffer tartalma + a következő karakter már nincs benne a szótárban Írjuk ki a puffer tartalmát az outputra és vegyük fel a szótárba a puffer tartalma + következő karaktert Ezután a puffer tartalma legyen ez a következő karakter
5
Példa tömörítésre T: a b a b a b a b a b a b Puffer: S: 0 : a 1 : b a
- Beolvassuk az a-t. Az a-t betesszük a pufferba Ekkor a puffer tartalma + a következő betű (a) már megvan a szótárban, így tovább mehetünk
6
Példa tömörítésre T: a b a b a b a b a b a b Puffer: S: 0 : a 1 : b
Vegyük fel a szótárba a puffer tartalma + következő karaktert (ab) A puffer tartalma legyen ez az új karakter (b) Most a puffer tartalma + következő karakter: „ab”, ami még nincs meg a szótárban A puffer tartalmát (annak kódját) kiírjuk az outputra
7
Példa tömörítésre T: a b a b a b a b a b a b Puffer: S: 0 : a 1 : b
1 És így tovább…
8
Példa tömörítésre T: a b a b a b a b a b a b Puffer: S: 0 : a 1 : b
1 2 „ab” már benne van a szótárban
9
Példa tömörítésre T: a b a b a b a b a b a b Puffer: S: 0 : a 1 : b
1 2 4
10
Példa tömörítésre T: a b a b a b a b a b a b Puffer: S: 0 : a 1 : b
1 2 4 3
11
Példa tömörítésre T: a b a b a b a b a b a b Puffer: S: 0 : a 1 : b
1 2 4 3
12
Példa tömörítésre T: a b a b a b a b a b a b Puffer: S: 0 : a 1 : b
1 2 4 3 6 A kapott kód tehát: Végezetül a puffer tartalmát kiírjuk az outputra
13
Példa visszafejtésre Input: 0 1 2 4 3 6 S: 0 : a 1 : b
A tömörítés logikáját alkalmazzuk visszafelé.
14
Példa visszafejtésre Input: 0 1 2 4 3 6 S: 0 : a 1 : b a
A 0-s kód megvan a szótárban, jelentése: a
15
Példa visszafejtésre Input: 0 1 2 4 3 6 S: 0 : a 1 : b a
A piros nyíl jelzi, hol tartott ekkor a tömörítés.
16
Példa visszafejtésre Input: 0 1 2 4 3 6 S: 0 : a 1 : b 2 : ab a b
Az „ab” ekkor még nem volt benne a szótárban, ezért most bekerült És így tovább…
17
Példa visszafejtésre Input: 0 1 2 4 3 6 S: 0 : a 1 : b 2 : ab 3 : ba a
A 4-es kód ismeretlen, de tudjuk, hogy ezen a ponton egy abx szó került be a szótárba 4-esként
18
Példa visszafejtésre Input: 0 1 2 4 3 6 S: 0 : a 1 : b 2 : ab 3 : ba
4 : abx a b ab abx A 4-es kód ismeretlen, de tudjuk, hogy ezen a ponton egy abx szó került be a szótárba 4-esként
19
Példa visszafejtésre Input: 0 1 2 4 3 6 S: 0 : a 1 : b 2 : ab 3 : ba
4 : abx a b ab aba abx 4 : aba Ezt visszahelyettesítve látjuk, hogy x = a
20
Példa visszafejtésre Input: 0 1 2 4 3 6 S: 0 : a 1 : b 2 : ab 3 : ba
21
Példa visszafejtésre Input: 0 1 2 4 3 6 S: 0 : a 1 : b 2 : ab 3 : ba
6 : bay a b ab aba ba bay A 6-os kód szintén ismeretlen, ugyanúgy járunk el, mint korábban
22
Példa visszafejtésre Input: 0 1 2 4 3 6 S: 0 : a 1 : b 2 : ab 3 : ba
6 : bay a b ab aba ba bab bay 6 : bab
23
Példa visszafejtésre Input: 0 1 2 4 3 6 S: 0 : a 1 : b 2 : ab 3 : ba
Az input végére értünk, a kapott string tehát: abababababab
24
Megjegyzés: A szótárat nem kell elküldeni a címzettnek, a példában látott módon a visszafejtő algoritmus azt megkonstruálja DE a szövegben lévő betűk kódját ismerni kell a visszafejtés elkezdése előtt (lehet közös kódkészlet) További információk, példa:
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.