220 likes | 470 Views
Iz vsebine. Osnovno o zgoščevanju podatkov Entropijsko kodiranje, Huffmanov kod Kodiranje nizov, algoritem LZW. Zgoščevanje podatkov – osnovni cilj. Čimkrajše zapisati dano informacijsko vsebino zmanjšamo potrebni pomnilniški prostor povečamo informacijski pretok Osnovna pristopa:
E N D
Iz vsebine • Osnovno o zgoščevanju podatkov • Entropijsko kodiranje, Huffmanov kod • Kodiranje nizov, algoritem LZW
Zgoščevanje podatkov – osnovni cilj • Čimkrajše zapisati dano informacijsko vsebino • zmanjšamo potrebni pomnilniški prostor • povečamo informacijski pretok • Osnovna pristopa: • brezizgubno kodiranje: • vsa informacijska vsebina ostane popolnoma neokrnjena • izgubno kodiranje: • nekaj informacije se izgubi, bistvena pa ostane
Količina informacije • Kolikšna je informacijska vsebina sporočila ? • Na primer sporočila: a b a b a b a a c a a c a b d d ? • Množica simbolov • Verjetnosti simbolov (pogostost pojavljanja): • Entropija – merilo nedoločenosti in količine informacije
Primer 1/3 • Za prejšnji primer, vseh simbolov v nizu: 16 • a – 8, pa = 8/16 = 0.5 (to je seveda ocena verjetnosti) • b – 4, pb = 4/16 = 0.25 • c – 2, pc = 2/16 = 0.125 • d – 2, pd = 2/16 = 0.125 • Entropija: • H = - (0.5 x log 0.5 + 0.25 x log 0.25 + 0.125 x log 0.125 + 0.125 x log 0.125) • H = 1.75 bitov/simbol • Razlaga: • Če želimo z binarnimi simboli (biti) zakodirati osnovne simbole a, b, c d, • rabimo v povprečju vsaj 1.75 binarnih simbolov (bitov) na osnovni simbol. • Z manj biti se tega ne da narediti.
Primer 2/3 • Vprašanje: kako ? • a wa = 00 • b wb = 01 • c wc = 10 • d wd = 11 • (Povprečno) število bitov na simbol, • To je več, kot bi bilo nujno potrebno • Nekaj binarnih simbolov je torej odveč • To imenujemo odvečnost ali redundanca:
Primer 3/3 • Druga možnost – različno število bitov na simbol: • a wa = 0 • b wb = 10 • c wc = 110 • d wd = 111 • (Povprečno) število bitov na simbol: • Redundanca: • Boljše se s kodiranjem posameznih osnovnih simbolov ne da zakodirati
Kodiranje - splošno • Imamo: • Kod je pravilo za prirejanje kodnih besed osnovnim simbolom: • Iščemo kod - kodne besede: • Želimo, da bi bila redundanca čim manjša: • Povprečna dolžina kodnih besed čim manjša
Kodiranje - splošno • Velja (!): • Ampak tudi • Pri tem je:
Huffmanov kod • Bolj pogostim (verjetnim) simbolom priredimo krajše kodne besede • Simbol z najmanjšo verjetnostjo ima najdaljšo kodno besedo • Simbola z najmanjšima verjetnostima imata enako dolgi kodni besedi • Pomembno: • Zakodirano sporočilo se da ‘sproti’ odkodirati
Huffmanov kod - postopek • Simbole uredimo po padajočih verjatnostih • Združimo simbola z najmanjšo verjetnostjo v nov simbol z • verjetnostjo, ki je enaka vsoti verjetnosti posameznih simbolov • Ponavljamo zgornja koraka, dokler se da – imamo samo dva simbola • Dobljena simbola zakodiramo, priredimo enemu 0 in drugemu 1 • Razdružimo združeni simbol • Pripišemo prejšnjemu binarnemu simbolu enkrat 0 in drugič 1 • Ponavljamo zgornja dva koraka, dokler se da.
Huffmanov kod – primer 3 H(S) = H(0.9, 0.1) = 0.469
Huffmanov kod – primer 3 H(S2) = H(0.81, 0.09, 0.09, 0.01) = 0.938 H (S2) = 2 H(S)
Huffmanov kod – primer 3 H(S2) = H(0.81, 0.09, 0.09, 0.01) = 0.938 H (S2) = 2 H(S)
Huffmanov kod – primer 3 H(S2) = H(0.81, 0.09, 0.09, 0.01) = 0.938 H (S2) = 2 H(S) Na en simbol torej 1.29/2 = 0.645 Na ta način se spodnji meji lahko poljubno pribljižamo
LZW (Lempel, Ziv, Welch) Daljše in različno dolge nize vhodnih simbolov nadomestimo s krajšimi in enako dolgimi nizi izhodnih simbolov. Algoritem se sproti prilagaja statističnim zakonitostim vhodnega niza Sprva kodni slovar sestavljajo osnovni simboli, s kodiranjem se slovar dopolnjuje tako, da se vhodnim nizom prireja nove simbole. Kodni slovar, ki je potreben za dekodiranje, se da pridobiti iz sprejetega zakodiranega niza. Za dekodiranje kodnega slovarja torej ni potrebno poznati (prenašati).