User Tools

Site Tools


tanszek:oktatas:infrendalapjai_architekturak:informacio_feldolgozas:toemoerites

This is an old revision of the document!


A tömörítő eljárások lényege: olyan változó szóhosszúságú kódot választunk, hogy a sokszor előforduló szimbólumokhoz rövidebb, míg a ritkábbakhoz hosszabb kódot rendelünk.

Shannon-Fano eljárás

Egyszerű adattömörítési eljárás, amelynek lényege az, hogy:

  1. A továbbítandó szimbólumokat valószínűség szerint rendezzük.
  2. A szimbólumhalmaz két lehetőség azonos valószínűségű részhalmazra bontjuk. Az egyikhez 0, a másikhoz 1 szimbólummal kezdődő szót rendelünk.
  3. Az eljárást addig folytatjuk, míg el nem fogynak szimbólumok.

Példa

SzimbólumValószínűségKódSzóhossz
X10.25002
X20.25012
X30.1251003
X40.1251013
X50.062511004
X60.062511014
X70.062511104
X80.062511114

8 szimbólumot használunk a kódolásnál, amelynek egyes szimbólumai a táblázatban megadott valószínűséggel szerepelnek a küldendő üzenetben. Ezeket előfordulási gyakoriság alapján csökkenő sorrendbe rendeztük, azaz a leggyakoribbak vannak elől. A harmadik oszlopban hozzárendeltük változó hosszúságú kódokat, a gyakoriakhoz hosszabbakat.

A 8 szimbólum teljes eseményrendszert alkot, hiszen egymást kizáró eseményekből áll, valamint a szimbólumok előfordulási valószínűségeik összege 1.

Tömörítsük az X2 X3 X8 X7 X1 üzenetet:

Az eredmény:

011001111111000

A tömörítés nélkül az üzenet hossza 4 * 5 azaz 20 bit lett volna. A tömörítés után 15 bitre csökkent.

Számítsuk ki a kód entrópiáját.

$$ H = - (\frac{2}{4}log\frac{1}{4} + \frac{2}{8} log \frac{1}{8} + \frac{4}{16} log \frac{1}{16}) = 2.75 \,\, [bit]$$

Huffman kódolás

A Huffman kódolás egy veszteségmentes adatkompressziós algoritmus, amely a gyakrabban előforduló szimbólumokhoz rövidebb, míg a ritkábban előfordulókhoz hosszabb kódokat rendel. Ez az előfordulási gyakoriság alapján történik az adatban. Az eljárás optimális, mert a legkisebb átlagos kódhosszt eredményezi.

A Huffman-kódolás lépései

  1. Számoljuk ki az egyes karakterek előfordulási gyakoriságát az adatban.
  2. Építsünk bináris fát a gyakorisági adatok alapján.
  3. Rendeljünk bináris kódokat minden karakterhez a fa szerkezetét követve, biztosítva, hogy a gyakoribb karakterek rövidebb kódokat kapjanak.

Huffman-kódolási példa

Kódoljuk a következő szöveget: BACADAEAFABBAAAGAH

KarakterGyakoriság
A7
B3
C1
D1
E1
F1
G2
H1

Készítsük el a bináris fa leveleit úgy, hogy zárójelben feltüntetjük a gyakoriságokat:

Válasszuk ki a két legkisebb gyakoriságú levelet és vonjuk össze az alábbiak szerint:

tanszek/oktatas/infrendalapjai_architekturak/informacio_feldolgozas/toemoerites.1731417385.txt.gz · Last modified: 2024/11/12 13:16 by knehez