Lempel-Ziv-Welch veszteségmentes tömörítési algoritmus
Lempel-Ziv-Welch
veszteségmentes tömörítési algoritmus
� Adott egy szöveg, és egy ABC.
� A szöveget szeretnénk kódolni.
� Az LZW-vel nem csak karaktereket tudunk kódolni, hanem a szótár bővíthető a szóban szereplő szótöredékekkel is.
� Ezáltal tömöríteni is képes.
� A dekódoláshoz elégséges pusztán az alap ABC ismerete, a módszer szinte ugyanaz, mint maga a kódolás folyamata.
� Adott egy szöveg: ababcbababaaaaaaa
� Adott ez ABC: a,b,c
� Az alap kódóló szótár:a=1b=2c=3
T = ababcbababaaaaaaaSzótár:a=1b=2c=3
T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4
T = 1
T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5
T = 12
T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5abc=6
T = 124
T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5abc=6cb=7
T = 1243
T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8
T = 12435
T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8baba=9
T = 124358
T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8baba=9aa=10
T = 1243581
T = ababcbababaaaaaaaszótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8baba=9aa=10aaa=11
T = 1243581 10
T = ababcbababaaaaaaaszótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8baba=9aa=10aaa=11aaaa=12
T = 1243581 10 11
T = ababcbababaaaaaaaszótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8baba=9aa=10aaa=11aaaa=12
T = 1243581 10 11 1
T = ababcbababaaaaaaaszótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8baba=9aa=10aaa=11aaaa=12
T = 1 2 4 3 5 8 1 10 11 1
� Az eredeti szöveget: ababcbababaaaaaaa
� Erre kódoltuk át: 1 2 4 3 5 8 1 10 11 1
� Ha azt szeretnénk, hogy a kódolt szöveg tömörebb is legyen, mint az eredeti, akkor szükségünk van egy kis „optimalizációra”.
� Nézzük meg:
� Feleltessünk megy egy bináris kódot minden egyes kódnak, így kapunk egy új szótárat:
1 0
2 1
3 2
4 3
5 4
8 5
10 6
11 7
� Látható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten.
� A kódolt szöveg: 1 2 4 3 5 8 1 10 11 1� Tehát 10*3 bit szükséges, összesen 3.� Az eredeti szöveg 17 hosszú, és 2 bit
szükséges egy kódszó tárolásához, így 34 bit kell összesen neki.
� Végeredményben tehát a kódolás után rövidebb az eredményünk
� A LZW algoritmus titkosításhoz is használható, ha az ABC és a kódolt üzenet külön kerül tárolásra.
� A dekódolás folyamata majdnem megegyezik a kódolással, csak az ellenkező irányba haladva.