tanszek:oktatas:infrendalapjai_architekturak:informacio_feldolgozas:toemoerites
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tanszek:oktatas:infrendalapjai_architekturak:informacio_feldolgozas:toemoerites [2024/11/12 13:16] – [Huffman kódolás] knehez | tanszek:oktatas:infrendalapjai_architekturak:informacio_feldolgozas:toemoerites [2024/11/15 18:01] (current) – knehez | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ===== Adattömörítő eljárások ===== | ||
| A tömörítő eljárások lényege: olyan változó szóhosszúságú kódot választunk, | A tömörítő eljárások lényege: olyan változó szóhosszúságú kódot választunk, | ||
| Line 49: | Line 50: | ||
| === Huffman-kódolási példa === | === Huffman-kódolási példa === | ||
| Kódoljuk a következő szöveget: '' | Kódoljuk a következő szöveget: '' | ||
| + | |||
| + | == Gyakoriságok meghatározása === | ||
| ^Karakter^Gyakoriság^ | ^Karakter^Gyakoriság^ | ||
| - | |A|7| | + | |A|9| |
| |B|3| | |B|3| | ||
| |C|1| | |C|1| | ||
| Line 57: | Line 60: | ||
| |E|1| | |E|1| | ||
| |F|1| | |F|1| | ||
| - | |G|2| | + | |G|1| |
| |H|1| | |H|1| | ||
| Line 68: | Line 71: | ||
| {{: | {{: | ||
| + | Vonjuk össze a F és G leveleket is ugyanígy: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Vonjuk össze a D és E leveleket is ugyanígy: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Most a középső két levél tartalmazza legkisebb gyakoriságot, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Most a B és a jobb oldali 2-vel jelölt levél tartalmazza legkisebb gyakoriságot, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Most vonjuk össze az utolsó két megmaradt levelet: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | A végén ez a fa lesz az eredmény: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | === Bináris kód hozzárendelés a fa leveleihez === | ||
| + | |||
| + | A bináris fa létrehozása után, rendeljük a levelekhez a kódokat, felülről lefelé haladva balra mozdulva 0-val, jobbra mozdulva 1-el egészítjük ki a kódot. | ||
| + | |||
| + | ^Karakter^Bináris kód^ | ||
| + | |A|0| | ||
| + | |B|100| | ||
| + | |C|1100| | ||
| + | |D|1110| | ||
| + | |E|1111| | ||
| + | |F|1010| | ||
| + | |G|1011| | ||
| + | |H|1101| | ||
| + | |||
| + | Az eredmény a következő lesz: | ||
| + | |||
| + | < | ||
| + | |||
| + | Hasonló módon készül el a végleges kód, mint a Shannon-Fano kódolás esetén, csak itt a fa készítés segít a bináris hozzárendelés elkészítésében. | ||
| + | |||
| + | megjegyzés: | ||
| + | |||
| + | ===== LZW kódolás ===== | ||
| + | |||
| + | Ennél a módszernél, | ||
| + | |||
| + | === Algoritmusa === | ||
| + | |||
| + | Kiindulásként a kódtáblázat tartalmazza a forrás összes előforduló elemét. | ||
| + | A kódoláskor az éppen aktuális pozíciótól kezdve addig olvassuk be a soron következő szimbólumokat egy bufferbe (**b**), amíg a sorozat szerepel a szótárban. Ha a soron következő karakter (**c**) az első olyan elem, amelyre **bc** már nem szerepel a szótárban, | ||
| + | |||
| + | Ezt a tömör leírást egy példa alapján tesszük érthetővé. | ||
| + | |||
| + | === Példa === | ||
| + | |||
| + | Kódoljuk a következő sorozatot LZW kódolással: | ||
| + | |||
| + | '' | ||
| + | |||
| + | Megvizsgálva az adatforrást, | ||
| + | |||
| + | - A kódoló először **d** karaktert veszi. | ||
| + | - A **d** benne van a szótárban, | ||
| + | - A **da** már nem szerepel jelenleg a szótárban, | ||
| + | - **d** 4-es indexét lejegyzi | ||
| + | - felveszi a szótárba **da** részszöveget a 6. bejegyzésbe és megy tovább **a**-val folytatva. | ||
| + | - Az **a** szerepel a szótárban, | ||
| + | |||
| + | '' | ||
| + | |||
| + | ^index^bejegyzés^ | ||
| + | |1|a| | ||
| + | |2|b| | ||
| + | |3|c| | ||
| + | |4|d| | ||
| + | |5|e| | ||
| + | |6|da| | ||
| + | |7|ab| | ||
| + | |8|bb| | ||
| + | |9|ba| | ||
| + | |10|ac| | ||
| + | |11|cd| | ||
| + | |12|dab| | ||
| + | |13|bba| | ||
| + | |14|acd| | ||
| + | |15|dabb| | ||
| + | |16|bac| | ||
| + | |17|cda| | ||
| + | |18|abb| | ||
| + | |19|bacd| | ||
| + | |20|de| | ||
| + | |21|ee| | ||
| + | |22|ec| | ||
| + | |23|cde| | ||
| + | |24|eec| | ||
| + | |25|cdee| | ||
| + | |||
| + | A Unix **compress** parancsa és a **GIF** (Graphics Interchange Format) képtömörítő eljárás is az **LZW** algoritmust alkalmazza. | ||
| + | ===== RLE kódolás ===== | ||
| + | |||
| + | Run-Length Encoding (RLE) – futáshossz kódolás. | ||
| + | |||
| + | A fentiekhez képes nagyon egyszerű, de mégis a gyakorlatban széleskörben használt kódolás. | ||
| + | |||
| + | Egyszerű tömörítési eljárás, amely a hosszasan ismétlődő azonos karaktereket, | ||
| + | Példa alapján könnyen érthető. | ||
| + | |||
| + | Kódoljuk a következő karaktereket RLE kódolással: | ||
| + | |||
| + | '' | ||
| + | |||
| + | === Kódolva === | ||
| + | |||
| + | '' | ||
| + | Melynek értelmezése: | ||
| + | Így tehát a Run-Length Encodinggal kódolt szöveg az eredeti 67 karaktert 18-cal írja le. Természetesen a valóságban nem karakterekkel, | ||
tanszek/oktatas/infrendalapjai_architekturak/informacio_feldolgozas/toemoerites.1731417385.txt.gz · Last modified: 2024/11/12 13:16 by knehez
