Transcript REDUKCE DAT
REDUKCE DAT
Díváme-li se na soubory jako na text, pak je tento text redundantní.
Redundance vyplývá z:
některé fráze nebo slova se opakují existuje závislost mezi po sobě následujícími znaky
Existuje řada technik, jak redukovat množství ukládaných dat (bez ztráty informace)
Výhody a nevýhody redukce
Výhody redukce:
• snížení velikosti vnějších médií • zkrácení času přístupu k datům • zkrácení času přenosu dat
Nevýhody redukce:
• přídavná složitost odpovídajících algoritmů • manipulace s proměnnou délkou kódu • manipulace s jednotlivými bity
ZÁKLADNÍ POJMY REDUKCE DAT
Metody redukce jsou z větší části založeny na kódování.
KÓDOVÉ SLOVO
Je symbol či posloupnost symbolů, kterými kódujeme zdrojový objekt (jednotku).
KÓD
Je množina všech kódových slov.
Důležitá vlastnost kódu
• jednoznačná dekódovatelnost
Kódy mohou být:
• pevné délky: snadná dekódovatelnost • proměnné délky : zde se posuzuje
bezprostřední rozhodnutelnost
Kód je bezprostředně rozhodnutelný, jestliže poznáme konec kódového slova bezprostředně po příjmu jeho posledního znaku.
Kódy jsou bezprostředně rozhodnutelné, když mají tzv.
prefixovou vlastnost
.
Prefixová vlastnost je vlastnost kódu, kdy žádné kódové slovo kódu není předponou nějakého jiného kódového slova kódu.
Pro měření vhodnosti kompresní techniky slouží kompresní poměr, resp. zisk komprese.
Kompresní poměr = D´/ D
Zisk komprese = (D - D ´) / D
Kde:
D D ´
velikost původního zdrojového řetězce velikost zakódovaného řetězce
METODY REDUKCE
KOMPRESE
Zabezpečuje jednoznačnou dekompresi, tzn. neztrácí se žádné informace.
KOMPAKCE
Zachovává pouze jisté nutné informace, neexistuje inverzní proces dekódování. Např. zkracování klíčů v souborech indexů, kdy pro rozlišení stačí pouze některá místa klíče.
KÓDY PEVNÉ DÉLKY
Chceme li zakódovat ( jednotek, potřebujeme k zakódování kódová slova délky
l m
výskytů)
n
, pro které platí
l =
n log 2 n
počet jednotek
Příklad
Uvažujme text složený z 10 slov (n = 10): THE, OF, AND, TO, A, IN, THAT, IS, IT, ON
Původní kódování:
1 znak = 1 byte
Úspornější kódování:
I
=
log 2 10
= 4 bity 23 byte Délka kódového slova = 4 bity
x
nejbližší celé číslo, větší než x.
Původní text:
23 byte = 23*8 bitů = 184 bitů
Zakódovaný text:
10 slov = 10*4 bity = 40 bitů
Kompresní poměr = 40/184 = 0.22
Zisk komprese = (184-40)/184 = 0.78
KÓDY PROMĚNNÉ DÉLKY
Huffmanovo kódování
Používá kódy proměnné délky, bylo vyřešeno v r. 1952. Huffmanovo kódování je založeno na neorientovaných binárních stromech.
Vstup do metody: n
jednotek ke kódování, posloupnost pravděpodobností
p
i
pro 1 i n jejich výskytu.
Algoritmus:
• Pro každou jednotku
i
vytvoříme list
o(p
i
)
binárního stromu, tj. uzel ohodnocený
p
i
.
• Z
p p
r
p
r
i
vybereme dvě nejmenší nenulová a
p
s
, kde
r
+ p
s
.
s
a vypočteme
q :=
• Vytvoříme uzel ohodnocený
q
ohodnotíme
0 resp. 1
.
a hrany
Příklad:
Mějme slova: THE, OF, AND, TO, A, IN, THAT, IS, IT, ON, která se vyskytují s pravděpodobností (po řadě): 0,270, 0,170, 0,131, 0,099, 0,088, 0,074, 0,052, 0,043, 0,040, 0,033. Sestrojte Huffmanův strom a stanovte kódová slova jednotlivých slov.
Výsledný strom
Kód se čte od kořene k listu
Např. Slovo OF se zakóduje 000 IS 1101 Huffmanovo kódování vyžaduje známé a neměnící se
p
i
.