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

 .