Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Tóth István Algoritmusok és adatszerkezetek 2.

Hasonló előadás


Az előadások a következő témára: "Tóth István Algoritmusok és adatszerkezetek 2."— Előadás másolata:

1 Tóth István Algoritmusok és adatszerkezetek 2.
LZW tömörítés Tóth István Algoritmusok és adatszerkezetek 2.

2 LZW – Áttekintés Veszteségmentes tömörítési algoritmus
Az LZ78 továbbfejlesztése Terry Welch publikálta 1984-ben Fő felhasználása: A Unix „compress” segédprogramja GIF TIFF és PDF tömörítő-algoritmusai közt is szerepel

3 LZW működése - általános
Szótár: Inicializáláskor: minden lehetséges egybetűs szimbólumot tartalmaz Folyamatosan bővül Kódolás: Inputból olvassa a szimbólumokat, amíg a szótárban van a sorozat Amikor nincs: sorozat indexét elküldjük, az új sorozatot (a következő karakterrel kiegészítve) felvesszük a szótárba, ettől a karaktertől folytatjuk Eltárolt kódok változó bitszélességben: alapból 1 bittel hosszabb, amint szükséges, 1 bittel növeli (max 12-ig) Speciális kódok: Törlőkód: a szótár felszabadítására Stop-kód: üzenet végét jelzi

4 LZW működése - általános
Dekódolás: Az alapszótárral kezd, ugyanúgy felépíti, mint kódolásnál Beolvas inputról egy szimbólumot (index), megkeresi a szótárban, kiadja a hozzá tartozó stringet Ennek az első karakterét hozzáadja ahhoz a stringhez, amivel dolgozik Az összefűzöttet hozzáadja a szótárhoz Újrakezdés, a dekódolt stringet használva Az LZW használati módjában meg kell egyezzen a kódolóval (ábécé mérete, kód maximális szélessége, eredeti kódméret, stb)

5 LZW működése - kódolás Input string: TOBEORNOTTOBEORTOBEORNOT#
# az input végét jelző szimbólum Kezdőszótár: az ábécé (26 betűvel), # Index: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Szimbólum:

6 LZW működése - kódolás String Következő karakter Kimenet
Szótár/kódtábla Megjegyzés Kód Bitek NULL T Index Eltárolt string O 20 10100 27: TO 27 = első lehetséges index új szótárelem számára B 15 01111 28: OB E 2 00010 29: BE 5 00101 30: EO R 31: OR N 18 10010 32: RN A következőnél 5-ről 6-ra növeljük a bitek számát 14 001110 33: NO 001111 34: OT 010100 35: TT 27 011011 36: TOB 29 011101 37: BEO 31 011111 38: ORT 36 100100 39: TOBE 30 011110 40: EOR 32 100000 41: RNO # 34 100010 # megállítja az algoritmust, kiírja a jelenlegi sorozatot és #-t 000000

7 LZW működése - dekódolás
Input Kimeneti sorozat Új szótárelem Megjegyzés Bit Kód Teljes Sejtés 10100 20 T 27: T? 01111 15 O TO 28: O? 00010 2 B OB 29: B? 00101 5 E BE 30: E? EO 31: 10010 18 R OR 32: R? a 31 kód létrehozása (utolsó 5 bitbe beleférő kód) 001110 14 N RN 33: N? az input beolvasása 6 bitnél 001111 NO 34: 010100 OT 35: 011011 27 TT 36: TO? 011101 29 TOB 37: BE? 36 = TO + az első jel (B) 011111 31 BEO 38: OR? a következő megérkező szekvenciából (BE) 100100 36 ORT 39: TOB? 011110 30 TOBE 40: EO? 100000 32 EOR 41: RN? 100010 34 RNO 42: OT? forrás: wikipedia.org

8 Változatai LZMW LZAP LZWL
Az inputban a leghosszabb, szótárban is lévő elemet keresi Összefűzi ezt a stringet az előző kikeresett elemmel, hozzáadja a szótárhoz Gyorsabban nő a szótár, implementálás viszont nehezebb LZAP Az LZMW módosított változata Karakterenként fűzi hozzá az új stringet az előzőhöz Mindegyik elemet hozzáadja a szótárhoz LZWL Az LZW szótagalapú változata

9


Letölteni ppt "Tóth István Algoritmusok és adatszerkezetek 2."

Hasonló előadás


Google Hirdetések