You are on page 1of 7

Statistiko kodiranje

Sad emo uvaiti injenicu da se pojedine poruke s , dakle i kodne rijei


x , ne pojavljuju jednako esto. Potrebno je voditi rauna o tome kakva je
raspodjela vjerovatnosti za elementarne poruke s . Neka je
i

pi = P (xi ) = P (si )

vjerovatnost pojavljivanja x . Tada je srednja duina kodne rijei


i

l=

pi li .

i=1

Sada moemo precizno iskazati cilj ekasnog kodiranja: za dati izvor


i dati kodirajui alfabet potrebno je nai takav kod da srednja duina l
kodnih rijei bude to manja. Pri tome naravno zahtijevamo da se kod moe
jednoznano dekodirati. Zbog toga emo posmatrati samo preksne kodove.
To znai da za duine kodnih rijei vrijedi Kraftova nejednakost,
N

Dli 1,

(K)

i=1

gdje je N ukupan broj kodnih rijei, a D broj simbola kodirajueg alfabeta.


Problem se dakle sastoji u nalaenju minimalne vrijednosti srednje duine
kodne rijei l = p l uz uslov (K). Pri tome su, naravno, l cijeli brojevi.
Prvo emo rijeiti odgovarajui problem minimizacije funkcije l = p l
sa realnim pozitivnim l  tako emo oito dobiti donju granicu za minimum l sa cjelobrojnim l . Pri tome, poto sad uzimamo realne l , nije teko
pokazati da u Kraftovoj nejednakosti treba uzeti znak jednakosti.
Koristei se standardnom tehnikom za nalaenje vezanih ekstrema, uvodimo pomonu funkciju
i i i

i i i

f =l+

li

Uslovi minimalnosti sada su


odnosno
Odavde je

f
= 0,

Dli = 1,

pi l i +

f
= 0,
li

li

i = 1, . . . , N

pi + Dli ( ln D) = 0.

Dli =

pi
,
ln D

1 .

a prvi uslov, D = 1, zajedno sa osobinom vjerovatnosti p = 1, daje


ln D = 1. To znai da je
li

i i

Dli = pi ,

li = logD pi = logD

Odgovarajua vrijednost l je
lm =

pi logD

1
.
pi

1
1
1
1
=
H(S).
pi ld =
pi
ld D i
pi
ld D

Ekstremna vrijednost prosjene duine kodne rijei odreena je entropijom


izvora.
Metodom Lagrangeovih multiplikatora openito se dobija samo lokalni
ekstrem, i treba zasebno pokazati da se radi o globalnom minimumu.Osim
toga, raun je proveden sa realnim l , a nas zapravo interesira l = p l
sa cjelobrojnim l . Posmatrajmo zato razliku l - l gdje je l gore naena
vrijednost, a l srednja duina kodne rijei za proizvoljni preksni kod (za
posmatrani izvor). Na uobiajeni nain lako se dobija
i i i

lm l

1
ln D

(N
1
i=1

D li

pi .

i=1

Ovdje su l duine kodnih rijei jednogpreksnog koda, te za njih vrijedi


Kraftova nejednakost, a osim toga je p = 1, pa je izraz na desnoj
strani negativan ili najvie jednak nuli. Ovo znai da je uvijek ispunjeno
l l 0, odnosno
i

N
i=1 i

H(S)
.
ld D

Minimalna mogua vrijednost prosjene duine kodne rijei za proizvoljan


preksni kod jednaka je entropiji izvora podijeljenoj sa kapacitetom kodirajueg alfabeta ld D

( ).
Ako je za neki kod ispunjeno l = l , nazivamo ga idealnim kompaktnim
kodom. Kasnije emo vidjeti kada postoji takav kod.
Uvodi se koecijent ekasnosti kodiranja:
m

lm
H(S)
=
.
l
l ld D

Za idealni kompaktni kod je = 1, a inae < 1. Redundansa koda


R=1 =

l lm
l

predstavlja relativni prosjean viak simbola.


2

Primjer

Razmotrimo binarno kodiranje izvora sa etiri simbola, s , s , s , s , i odgovarajuim vjerovatnostima p = 1/2, p = 1/4, p = p = 1/8. Za ravnomjerni kod
1

x1 = 00,

x2 = 01,

x3 = 10,

x4 = 11,

sve kodne rijei su duine 2, i prosjena duina kodne rijei je oito l = 2. S


druge strane, entropija ovog izvora je

H(S) =

pi ld

7
1
= .
pi
4

Koecijent ekasnosti ravnomjernog koda je = (7/4)/2 = 7/8, a redundansa R = 1 = 1/8. Dakle, svaki osmi simbol je suvian.
Sad se pozabavimo pitanjem  za kakve izvore postoji idealni kompaktni kod? Ovoje matematiki problem: dat je niz pozitivnih brojeva
p , p , . . . , p , sa
p = 1, i pitanje je da li se mogu nai prirodni brojevi
l takvi da je
1

i i

pi li = H(S) =

i=1

pi ld

i=1

1
pi

(uzeemo binarno kodiranje, D = 2).


Ako su svi brojevi ld(1/p ) cijeli, moemo uzeti l = ld(1/p ), i oito
vrijedi l = H(S). Preksni kod sa ovakvim l postoji, jer je onda
i

pi = 2li ,

2li =

i=1

pi = 1,

i=1

dakle vai Kraftova nejednakost (u ovom sluaju svodi se na jednakost). U


prethodnom primjeru imali smo upravo ovaj sluaj:
ld

1
= 1,
p1

ld

1
= 2,
p2

ld

1
= 3,
p3

ld

1
= 3,
p4

znai duine kodnih rijei su l = 1, l = 2, l = l = 3.


A ta ako nisu ld(1/p ) svi cijeli brojevi? Tada moemo uzeti za l najblii
vei cio broj, tako da je
1

ld

1
1
li < ld + 1.
pi
pi

Iz prvog dijela ove nejednakosti slijedi


1
2li ,
pi

pi 2li ,

()

pa je prema tome

li

pi = 1.

Ovo znai da l zadovoljavaju Kraftovu nejednakost, a odatle zakljuujemo


da postoji preksni kod sa kodnim rijeima duina
l , l , . . . , l . Pogledajmo
kolika je prosjena duina kodne rijei, l = p l . Iz nejednakosti ()
mnoenjem sa p i sabiranjem izlazi
i=1

i=1

i i i

N
N

1
1
1
pi ld l <
pi ld + 1 =
pi ld + 1
pi
pi
pi
i=1
i=1
i=1

(jer je suma svih vjerovatnosti jednaka 1). Dakle

H(S) l < H(S) + 1.

Ustanovili smo da postoji preksni binarni kod za koji se prosjena duina


kodne rijei ne razlikuje od entropije izvora za vie od 1. No, situacija se
moe jo poboljati ako umjesto originalnog izvora kodiramo neko njegovo
proirenje. Uzmimo da se radi o izvoru S bez memorije. Za n-to proirenje
izvora, S , na isti nain dobijamo
n

H(S n ) l(n) < H(S n ) + 1.

Sada su naravno kodne rijei due, jer ima ukupno N rijei  poruka
proirenog izvora kojima treba pridruiti kodne rijei, pa je i prosjena duina
l vea od l. No, znamo da je entropija proirenog izvora H(S ) = nH(S),
pa je
nH(S) l < nH(S) + 1,
dakle
l
n

(n)

(n)

H(S)

(n)

< H(S) +

1
.
n

()

Sad uzmimo u obzir da je l prosjena duina kodne rijei proirenog izvora


S , pa prema tome jednom simbolu originalnog izvora S odgovara prosjeno
l /n simbola kodirajueg alfabeta (nula i jedinica  radimo sa binarnim
kodom). Iz () vidimo da se l /n razlikuje od entropije H(S) najvie za
1/n. Time smo dobili kljuni rezultat o izvornom kodiranju:
(n)

(n)

(n)

Prvi Shannonov teorem: Prosjean broj binarnih simbola kojima se kodi-

raju simboli izvora S moe se uzimanjem dovoljno velikog proirenja izvora


i pogodnim izborom koda uiniti po volji bliskim entropiji izvora, ali nikad
manjim.

Vana dopuna: ovaj rezultat vrijedi i za izvore sa memorijom. Kljuno


je to da se za dobijanje to krae prosjene duine kodnih rijei koriste
proirenja izvora, a entropija izvora sa memorijom denie se sa
H(S) = lim

H(0 , 1 , . . . , n )
,
n+1

dakle proraunata po jednom simbolu izvora.


Ako se ne uzima binarni, nego D-arni kod, jedina promjena je to se
entropija treba podijeliti sa ld D  kapacitetom kodirajueg alfabeta.
Shannon-Fano kod

C. Shannon i R. Fano su konstruisali kodove za izvorno (kompresiono) kodiranje, koji su dosta slini i svode se na slijedee:
1. Simboli (elementarne poruke) izvora poredaju se tako da odgovarajue
vjerovatnosti ine opadajui niz,
p1 p2 p3 pN .

2. Skup S = {s , s , . . . , s } podijeli se na dva dijela S = {s , . . . , s },


S = {s , . . . , s } tako da se sume vjerovatnosti simbola iz prvog i
iz drugog dijela to manje meusobno razlikuju.
3. Tako dobijeni podskupovi dijele se dalje sve dok se ne dobiju jednoelementni podskupovi.
Kako smo ve ranije vidjeli, ovakav postupak nas dovodi do preksnog koda.
Primjer Posmatrajmo izvor sa etiri simbola s , s , s , s sa odgovarajuim vjerovatnostima p = 1/2, p = 1/4, p = 1/8, p = 1/8. Konstrukcija
Shannon-Fano koda moe se predstaviti slijedeom tabelom:
s
p
I II III
1

k+1

s1
s2
s3
s4

0.5
0.25
0.125
0.125

0
1
1
1

0
1
1

0
1

U ovom primjeru su ld(1/p ) cijeli brojevi, i l se podudara sa entropijom


izvora. Dakle, ovo je najekasniji mogui kod (idealni kompaktni kod) za
dati izvor.
i

Optimalno statistiko kodiranje

Za dati izvor S sa skupom simbola  elementarnih poruka s , s , . . . , s i


odgovarajuim vjerovatnostima p , p , . . . , p optimalni kod je onaj za koji
je srednja duina kodne rijei l = p l najmanja. Panja: ovdje kodiramo
sam izvor S, a ne njegova proirenja.
Osnovni princip dobijanja optimalnog koda je jednostavan: poruke koje
se ee pojavljuju (odnosno koje imaju veu vjerovatnost) kodiraju se kraim
kodnim rijeima, a manje vjerovatne poruke  duim kodnim rijeima.
5
1

i i i

Da bismo doli do naina konstrukcije optimalnog koda, razmotrimo njegove osobine. Uzmimo da su elementarne poruke  simboli numerisani tako
da odgovarajue vjerovatnosti opadaju,
p1 p2 p3 pN .

Za optimalni kod duine odgovarajuih kodnih rijei onda rastu,


l1 l2 l3 lN .

Intuitivno je ovo oigledno, ali nije teko provesti i formalni dokaz.


Bitna je jo jedna osobina optimalnog koda: Za optimalni binarni kod

postoje dvije kodne rijei maksimalne duine (lN ), takve da se one razlikuju
samo posljednjim simbolima, a svi prethodni su im jednaki.

I ova osobina se lako pokazuje, najbolje pomou posmatranja kodnog


stabla.
ta smo ovim postigli? Utvrdili smo da postoji optimalni binarni kod za
koji se dvije kodne rijei dviju najmanje vjerovatnih poruka izvora razlikuju
samo u posljednjem binarnom simbolu. Ako predstavimo ovaj kod pomou
kodnog stabla, onda su s i s susjedni listovi koji izlaze iz istog vora.
Na kodnom stablu moe biti jo listova na istoj visini, ali ne i veoj.
N 1

Kljunu ulogu u konstrukciji Humanovog koda ima postupak kontrakcije


izvora. Za posmatrani izvor uvodi se kontrahirani izvor sa N 1 poruka
s ,s ,...,s
, s, sa vjerovatnostima p , p , . . . p
, p, gdje je p = p
+
p . Dakle, kontrakcija se sastoji u tome da se dvije najmanje vjerovatne
poruke (s , s ) zamijene jednom, sa vjerovatnou jednakom sumi vjerovatnosti poruka s i s .
Pokazuje se: ako se nae optimalni kod za kontrahirani izvor, onda se
optimalni kod za originalni izvor dobija cijepanjem, tj. dodavanjem na kodnom stablu dviju grana koje odgovaraju s i s iz lista s. Naime, ako je
srednja duina rijei za kontrahirani izvor jednaka l , onda se cijepanjem
dobija
1

N 2

N 2

N 1

N 1

N 1

N 1

(N 1)

l = l(N 1) + p,

jer su stablu dodane dvije grane duine 1, sa vjerovatnostima p , p


ija suma je p. Stvar je u tome da su za dati izvor vjerovatnosti p (pa i
p) ksirane, a duine kodnih rijei l ulaze samo u l
. Na osnovu toga
zakljuujemo da minimumu l odgovara minimum l, odnosno da se zaista
cijepanjem iz optimalnog koda dobija optimalni kod.
6
N 1
i

(N 1)

(N 1)

Dakle, za dobijanje optimalnog koda trebaju se koristiti uzastopne kontrakcije originalnog izvora. To vodi na Humanov algoritam:
1. Poredaju se poruke izvora po opadajuim vjerovatnostima.
2. Saberu se dvije najmanje vjerovatnosti i naini nova lista  takoe
poredana po opadajuim vjerovatnostima.
3. Postupak se nastavlja sve dok se ne dobije lista od samo dva lana.
Njima se pripisuju 0 i 1 kao prve kodne cifre. Ostale cifre dopisuju
se prema pravilu cijepanja sve dok se ne vratimo na simbole (poruke)
originalnog izvora. Kako je polazni kod (0,1) oito optimalan (srednja
duina kodne rijei je 1, i nikako ne moe biti kraa), i kodovi koji se
dobijaju cijepanjem su takoe optimalni.
Primjer U slijedeoj tabeli prikazana je konstrukcija Humanovog koda
za izvor sa pet simbola. Kontrakcije izvora (sa sabiranjem vjerovatnosti)
dovode do novih kolona  idui s lijeva na desno, a kodne rijei se onda
dobijaju idui s desna na lijevo.
si
s1
s2
s3
s4
s5

pi

xi
1
010
011
000
001

si
s1
s45
s2
s3

pi

xi
1
00
010
011

si
s1
s45
s23

pi

xi
1
00
01

si
s4523
s1

pi

xi
0
1

0.4
0.4
0.4
0.6
0.15
0.3
0.3
0.4
0.15
0.15
0.3
0.15
0.15
0.15
Uporedimo dobijeni kod sa Shannon-Fano kodom za isti izvor. ShannonFano kod dobija se na poznati nain, dijeljenjem skupa simbola izvora na
dijelove sa to bliim sumama vjerovatnosti:
s
p I II III
i

s1
s2
s3
s4
s5

0.4
0.15
0.15
0.15
0.15

0
0
1
1
1

0
1
0
1
1

0
1

Za vjebu provjeriti da je srednja duina kodne rijei za Humanov kod


manja nego za Shannon-Fano kod. Takoe nacrtati kodna stabla za oba
koda.

You might also like