19
Lempel-Ziv-Welch veszteségmentes tömörítési algoritmus

Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

Lempel-Ziv-Welch

veszteségmentes tömörítési algoritmus

Page 2: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

� 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.

Page 3: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

� Adott egy szöveg: ababcbababaaaaaaa

� Adott ez ABC: a,b,c

� Az alap kódóló szótár:a=1b=2c=3

Page 4: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

T = ababcbababaaaaaaaSzótár:a=1b=2c=3

Page 5: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4

T = 1

Page 6: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5

T = 12

Page 7: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5abc=6

T = 124

Page 8: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5abc=6cb=7

T = 1243

Page 9: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8

T = 12435

Page 10: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8baba=9

T = 124358

Page 11: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

T = ababcbababaaaaaaaSzótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8baba=9aa=10

T = 1243581

Page 12: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

T = ababcbababaaaaaaaszótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8baba=9aa=10aaa=11

T = 1243581 10

Page 13: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

T = ababcbababaaaaaaaszótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8baba=9aa=10aaa=11aaaa=12

T = 1243581 10 11

Page 14: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

T = ababcbababaaaaaaaszótár:a=1b=2c=3ab=4ba=5abc=6cb=7bab=8baba=9aa=10aaa=11aaaa=12

T = 1243581 10 11 1

Page 15: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

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

Page 16: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

� 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”.

Page 17: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

� 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

Page 18: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

� 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

Page 19: Lempel-Ziv-Welch veszteségmentes tömörítési …vimba.web.elte.hu/algo2/bead/gy6/algo6.pdfLátható tehát, hogy így bináris alakban egy kódszó tárolható 3 biten. A kódolt

� 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.