You are on page 1of 48

Sveuilite u Zagrebu

Fakultet elektrotehnike i raunarstva

Zatitno kodiranje
Mr. sc. Zdenko Vrdoljak

Dopunski materijal za predmet Teorija informacije


(neproiena verzija)

Zagreb, 2006.

Zadatak nekog komunikacijskog sustava je to vjernije prikazati informacijski sadraj izvora


informacije primatelju informacije koji se nalazi na fiziki udaljenoj lokaciji. Kako bi
informacijski sadraj bilo mogue prenositi, on mora dobiti fizikalnu reprezentaciju pogodnu za
zapis i prijenos slijed kodiranih poruka (Slika 0.1). Svaka kodirana poruka sastoji se od niza
simbola izabranih iz konane abecede simbola. Kodirane poruke nastaju u koderu informacije
postupkom kodiranja koji je posebno prilagoen prirodi izvora informacije. Dekoder informacije
na prijemnoj strani vri dekodiranje primljenih kodiranih poruka i primatelju informacije predaje
sadraj poslane informacije.
Prijenos poruka formiranih u koderu informacije podloan je pogrekama uzrokovanim
smetnjama u prijenosnom kanalu. Pogreka se oituje kao pogrean prijenos jednog ili vie
simbola poslane poruke. Smetnje su najvie izraene u prijenosnom mediju, kao sastavnom dijelu
prijenosnog kanala. Simboli poruke se u prijenosnom mediju preslikavaju u odreene oblike
elektromagnetskog vala, kojeg nazivamo signal. Svako izoblienje oblika signala uzrokuje
pogrenu detekciju simbola koji je poslan u prijemniku, a time i pogreku u kodiranoj poruci.
Izoblienju signala najvie doprinosi um. um najveim dijelom nastaje kao napon induciran
djelovanjem okoline na promatrani medij. Takoer, signal se prilikom propagacije izobliuje i
zbog meudjelovanja elektromagnetskog vala sa samim prijenosnim medijem.

Slika 0.1: Pojednostavljeni model komunikacijskog sustava

Meu prioritetima komunikacijskog sustava je osigurati zatitu kodiranih poruka od pogreaka


koje nastaju prilikom prijenosa. Zatita kodiranih poruka vri se upotrebom zatitnog kodiranja.
Zatitno kodiranje je postupak dodjeljivanja kodnih rijei porukama iz kodera informacije.
Navedeni postupak provodi se u koderu kanala (Slika 0.1). Kodne rijei se sastoje od niza
simbola iz abecede koja je jednaka ili razliita od abecede simbola od kojih je sainjena kodirana
poruka. Pravila dodjele kodnih rijei kodnim porukama ine kd, pa kaemo da se zatitno
kodiranje provodi zatitnim kodom. Dekodiranje prenijetih kodnih rijei na prijemnoj strani
odvija se u dekoderu kanala.
Princip zatitnog kodiranja poruka slian je mehanizmu koji ve postoji u jeziku. Hrvatski jezik
je savren primjer budui da postoji nedvosmisleno preslikavanje izmeu izgovorene i pisane
rijei (fonetinost). Prosjena duljina rijei je 5 slova (simbola), a abeceda koju upotrebljavamo
ima 30 slova. Tako moemo procijeniti da bi u hrvatskom jeziku moglo biti oko 305 24.3
milijuna rijei. Meutim, svjesni smo da je realan broj rijei daleko manji. To omoguuje da se u
velikom broju sluajeva susjedne rijei razlikuju ne samo po duljini, nego i po velikom broju
razliitih slova. Na primjer, rijei PRODOR i PRIZOR su jednake po duljini i vrlo sline po
redoslijedu i upotrebi simbola (slova). Meutim, ak i u tom sluaju razlika izmeu ovih rijei je
u 2 simbola. To nam omoguuje da prilikom razgovora u prostoru s velikom razinom buke
(smetnje pri prijenosu) ipak razaznamo o kojoj se rijei radi na nain da izaberemo postojeu
rije koja je najslinija rijei koju smo zapravo uli.
Prosjena duljina rijei koje upotrebljavamo u jeziku je puno vea od prosjene duljine
zamiljenog optimalnog koda jezika (njegove entropije). Meutim, jezik osigurava zatitu od
2

smetnji pri komunikaciji: npr. buke, prekida u komunikaciji ili npr. razmazanih ili izgubljenih
slova u pismu.
Jednak princip se koristi i kod zatitnog kodiranja. Kodirane poruke se kodiraju kodnim rijeima
koje imaju veu prosjenu duljinu od prosjene duljine poruka, to omoguuje da dekoder na
odreditu otkrije pogreku nastalu prilikom prijenosa. Cilj je iskoristiti onaj zatitni kd koji
uvodi najmanje mogue poveanje prosjene duljine kodnih rijei u odnosu na prosjenu duljinu
kodiranih poruka, a u isto vrijeme osigurava prihvatljivo malu vjerojatnost neotkrivanja
pogreaka simbola nastalih pri prijenosu.
Ukoliko doe do otkrivanja pogreke na primljenoj kodnoj rijei, pokree se postupak otklanjanja
pogreke (engl. error correction). Jedan nain otklanjanja pogreke je koritenje posebnih
svojstava zatitnog koda kako bi se odredila kodna rije koja je zapravo poslana. Opisani pristup
zovemo ispravljanje pogreki u dekoderu kanala (FEC engl. forward error correction).
Koristi se prvenstveno onda kada odredite ne moe zatraiti ponovno slanje pogreno primljene
kodne rijei (engl. retransmission). Zatitni kodovi koji se koriste u ovom pristupu moraju
posjedovati svojstva otkrivanja i ispravljanja pogreaka i takve kodove zovemo kodovi za
ispravljanje pogreaka (engl. error correcting code).
U sluaju kada postoji mehanizam koji odreditu omoguuje da zatrai ponovno slanje krivo
primljene kodne rijei, koristi se pristup ispravljanja pogreki ponovnim slanjem (BEC engl.
backward error correction). U ovom pristupu, kada odredite otkrije pogreku na primljenoj
kodnoj rijei, prvo je pokuava otkloniti koristei se strukturom samog koda. Ukoliko nije
mogue otkloniti pogreku, ili sam zatitni kd ne prua mogunost otklanjanja pogreke,
odredite trai ponovno slanje kodne rijei sve dok se ne primi ispravna kodna rije. Zatitni
kodovi koji mogu samo otkriti pogreke zovemo kodovi za otkrivanje pogreaka (engl. error
detection code). Zatitni kodovi za otkrivanje pogreaka mogu, ali ne moraju imati sposobnost
otklanjanja pogreaka.
Zatitni kodovi dijele se u dvije osnovne skupine: blok-kodovi (engl. block codes) i konvolucijski
kodovi (engl. convolutional codes), koji se u literaturi dosta esto mogu nai i pod nazivima
stablasti (engl. tree) ili reetkasti (engl. trellis) kodovi. Glavne razlike meu navedenim
skupinama kodova su u nainu izvedbe kodera. Kod blok-kodova se k-bitni ulazni blok bitova
potpuno preslikava u n-bitnu izlaznu kodnu rije (engl. code word). Drugaije reeno, koder za
blok-kodove spada u grupu kodera bez memorije (engl. memoryless) iz razloga to je generiranje
nekog bita u kodiranoj poruci iskljuivo funkcija trenutanog stanja ulaza kodera. Konvolucijski
kodovi spadaju u grupu memorijskih kodova. Kod njih je generiranje nekog bita u kodiranoj
poruci funkcija trenutanog stanja ulaza kodera kao i nekolicine njegovih prethodnih stanja.
Takoer, postoji i druga podjela zatitnih kodova, a to je na linearne (engl. linear) i nelinearne
(engl. nonlinear) kodove. Navedena podjela napravljena je na osnovu strukture i svojstava
kodnih rijei. Linearni kodovi su oni kodovi ija se svaka kodna rije moe izraziti kao linearna
kombinacija drugih kodnih rijei. Njihova primjena je jako rasprostranjena. Postoje tri kategorije
linearnih kodova, i to: blok, konvolucijski i turbo kodovi. Njihova e svojstva biti analizirana u
sljedeim poglavljima.

1.1. Uvod u blok-kodove


Zatitni kd se sastoji od odreenog broja kodnih rijei i pravila dodjeljivanja kodnih rije i
porukama koje se kodiraju. Broj simbola u kodnoj rijei se zove duljina kodne rijei. Kodne rije i
zatitnog koda se formiraju na nain da se simbolima originalne kodirane poruke dodaje jedan ili
vie redundantnih simbola ili se svakoj kodiranoj poruci pridruuje zasebna kodna rije koja ima
3

vei broj simbola od originalne poruke. U binarnim digitalnim komunikacijskim sustavima kodne
rijei i kodirane poruke su nizovi jedinica i nula. Na primjer, kodirana poruka moe biti 10110 .
Zatitni koder na tu kodiranu poruku dodaje jedan zatitni bit tako da zbroj jedinica bude paran 101101 . Dobivena kodna rije omoguuje otkrivanje jednostruke pogreke simbola/bita. Ovo je
primjer paritetnog kodiranja koje e biti posebno obraeno u nastavku poglavlja.

Openito se moe govoriti o q-narnom kodu, ije se kodne rijei sastoje od simbola izabranih iz
konanog skupa simbola Fq = {1, , q} s q elemenata kojeg nazivamo abeceda (engl.
alphabet). Najee se abeceda izabire kao podskup skupa cijelih brojeva, a broj elemenata u
abecedi se izabire kao prost broj ili potencija prostog broja. U digitalnim komunikacijskim
sustavima koristi se abeceda F2 = {0, 1}. Simboli abecede F2 su binarne znamenke 0 i 1, a kodovi
koji koriste ovu abecedu zovu se binarni kodovi. Nadalje prouavamo iskljuivo binarne
zatitne kodove.
Primjer: zatitno kodiranje

0
0

P=
1
1

0
1
0
1

A;
B;
C;
D.

Koder kanala zatitno kodira ove kodirane poruke dodajui jedan redundantni simbol na sljede i
nain:
0 0 0 A ;
0 1 1 B ;

K1 =
1 0 1 C ;
1 1 0 D .
Dobiven je zatitni kd s etiri kodne rijei i pravilom njihovog pridruivanja kodiranim
porukama. Moe se uoiti da ukoliko prilikom prijenosa doe do pogreke na jednom simbolu
kodne rijei, primljena kodna rije nee pripadati zatitnom kodu pa prijemnik moe otkriti da je
dolo do pogreke. Kd K1 je kd za otkrivanje jednostruke pogreke.

Neki drugi koder moe dodati tri redundantna simbola. Na primjer, zatitni kd moe biti sljedei:
0 0 0 0 0 A ;
0 1 1 0 1 B ;

K2 =
1 0 1 1 0 C ;
1 1 0 1 1 D .
Kd K 2 ne samo da moe otkriti jednostruku pogreku, nego je moe i ispraviti. Dodatno, kd
K 2 moe otkriti i dvostruku pogreku. Ispravljanje pogreke se vri na nain da prijemnik odredi
onu kodnu rije koja se najmanje razlikuje od primljene. Na primjer, ako je primljena kodna rije
01100, najblia ispravna kodna rije je 01101, pod pretpostavkom da je nastupila jednostruka
pogreka na zadnjem simbolu (binarnoj znamenci).
4

PRIMJER

Princip zatitnog kodiranja vidljiv je iz sljedeeg primjera. Izvor informacije generira etiri
razliite informacijske poruke: A, B, C i D, a koder informacije kodira ih binarnim kodom na
sljedei nain:

Zatitni kodovi K1 i K 2 iz prethodnog primjera imaju svojstvo da su im sve kodne rijei jednake
duljine. Takvi kodovi se nazivaju blok-kodovi. Naglasimo ovaj pojam sljedeom definicijom.

1.1.1. Hammingova distanca


Iz prethodnog primjera vidimo da je cilj koristiti zatitni kd koji osigurava to veu razliku
izmeu svih kodnih rijei. Za mjeru razliitosti kodnih rijei uzima se Hammingova distanca [1].

Na primjer, Hammingova distanca kodnih rijei 01101 i 10110 je d(01101, 10110) = 4.


Kodne rijei esto prikazujemo vektorima simbola. Na primjer, kodna rije 10110 koda K2 iz
prethodnog primjera se moe prikazati kao vektor redak s oznakom x = [10110]. lanovi ovog
vektora su skalari, 0 i 1 i pripadaju abecedi simbola. Na taj nain poistovjeujemo kodnu rije i
vektor, pa je i sam blok-kd duljine n zapravo podskup skupa svih moguih vektora tipa
x = [ x1, x2, , xn ], gdje su xi skalari iz abecede F2={0,1}.

Za kodne rijei x, y , z blok-koda K, Hammingova distanca ima sljedea svojstva:


d (x, y ) = 0 ako i samo ako je x = y ;
d (x, y ) = d ( y, x) za sve x, y K ;
d (x, y ) d ( x, z ) + d ( z, y ) za sve x, y , z K (nejednakost trokuta).
Navedena svojstva Hammingove distance ilustrirana su na slici (Slika 0.2).

3
=

=
3

Slika 0.2: Grafike interpretacije svojstava Hammingove distance

Hammingova distanca je vaan parametar kada se govori o sposobnosti koda da otkrije ili ispravi
pogreku. Problem s kojim se suoava primatelj kada primi kodnu rije koja nije dio
dogovorenog zatitnog koda je otkriti o kojoj se kodnoj rijei zapravo radi. Jedna od strategija
koja se najee primjenjuje je dekodiranje najbliim susjedom. U binarnim simetrinim
kanalima u kojima je vjerojatnost pogreke bita jednaka za 1 i 0, takva strategija rezultira
dekodiranjem s najveom vjerojatnou. Ukoliko kd ima sposobnost otklanjanja pogreke
bita, odabire se ona rezultantna kodna rije koja ima najmanju Hammingovu distancu od
5

DEFINICIJA

HAMMINGOVA DISTANCA: Hammingova distanca izmeu dvije kodne rijei je broj


pozicija na kojima se kodne rijei razlikuju, tj. broj pozicija na kojima kodne rijei imaju razliite
simbole. Oznaka Hammingove distance izmeu dviju kodnih rijei x i y je d(x, y). Hammingova
distanca se definira samo za kodne rijei jednakih duljina.

DEFINICIJA

BLOK-KD: Kd K zove se blok-kd ukoliko su duljine svih njegovih kodnih rijei jednake.
Ako kodne rijei koda K imaju duljinu n, onda je K blok-kd duljine n.

primljene kodne rijei. Drugim rijeima, ukoliko je primljena kodna rije x, izabire se kodna rije
x' K takva da je distanca d (x, x) minimalna. Sposobnost koda da otkrije ili ispravi pogreku
ovisi o najmanjoj Hammingovoj distanci svih parova kodnih rijei nekog koda K. Tu najmanju
distancu nazivamo distanca koda.

d ( K ) = min ( d (x, y ) x y ) .
x , yK

OZNAKA BLOK-KODA: Blok-kd duljine n s M kodnih rijei i distancom d ima


oznaku (n, M , d ) .

DEFINICIJA

DISTANCA KODA: Distanca koda K, s oznakom d(K), je najmanja Hammingova distanca svih
parova kodnih rijei koda K, tj.

Distanca koda d ( K ) odreuje sposobnost otkrivanja i ispravljanja pogreke simbola.

Kd K moe otkriti najvie d ( K ) 1 pogreki u jednoj kodnoj rijei, tj. ako je najvei broj
pogreki koje kd moe otkriti s, onda mora biti zadovoljen izraz d ( K ) s + 1 .

Kd K moe ispraviti najvie (d ( K ) 1)/2 pogreki u jednoj kodnoj rijei, gdje je x


oznaka za najvei cijeli broj manji od x. Drugim rijeima, ukoliko se s t oznai najve i
broj pogreki koje kd K moe ispraviti u jednoj kodnoj rijei, onda mora biti zadovoljen
izraz d ( K ) 2t + 1 .

TEOREM

SPOSOBNOST KODA DA OTKRIJE I ISPRAVI POGREKU: Ako zatitni kd K ima


distancu d(K) i ako se dekodiranje provodi principom najblieg susjeda, onda vrijedi sljedee:

Prvo svojstvo je jednostavno za shvatiti. Ukoliko je jednu kodnu rije nekog koda mogue
pretvoriti u neku drugu kodnu rije tek izmjenom s + 1 simbola, onda e bilo koja izmjena od s
ili manje simbola zasigurno dati rije koja nije dio koda. Dekoder e takvu rije smatrati
pogrenom i pogreka e biti otkrivena.

Drugo svojstvo izgleda netrivijalno. Da bismo ga shvatili, uvest emo pojam sfere, koji e nam
posluiti i kasnije u tekstu.

gdje je (F2)n oznaka za skup svih binarnih kodnih rijei duljine n (vektorski prostor).
Dakle, sfera S (x, r ) je skup svih vektora koji su od x po Hammingovoj distanci udaljeni 0,1,,r.
n
Korisno je primijetiti da je broj vektora koji do vektora x imaju udaljenost m tono . Na
m
primjer, neka je zadana kodna rije 0101 nekog binarnog koda. Sfera S(0101, 2) je skup sljedeih
kodnih rijei:
6

DEFINICIJA

SFERA KODNE RIJEI: Neka je x bilo koja kodna rije (vektor) duljine n koda K. Kodna
rije predstavljena vektorom x pripada skupu svih moguih vektora duljine n. Neka je r cijeli
nenegativan broj, r 0. Sfera radijusa r sa sreditem x i oznakom S(x, r) je skup vektora koji
imaju Hammingovu distancu do vektora x manju ili jednaku r, tj.
S (x, r ) = {y ( F2 ) n | d (x, y r )} ,

0101
0101

d = 0

1101
0001
0111
0100

d =1

1001
1111
1100
0011 .
0000
0110
d =2

Sferu vizualno moemo predoiti kako je prikazano slikom (Slika 0.3).

Slika 0.3: Sfera radijusa 2 oko kodne rijei 0101

Slika 0.4: Poloaj sfera zamiljenog koda s etiri


kodne rijei

Vratimo se sada drugoj toki svojstva. Zamislimo kd s etiri kodne rijei i Hammingovom
distancom izmeu svih kodnih rijei 2t + 1 ili veom (Slika 0.4). Dekoder dekodira kodne rijei
principom najblieg susjeda, tako da e sve primljene rijei unutar sfere S (xi , t ) biti (ispravno)
dekodirane kao xi. Meutim, da bi neka poslana kodna rije xi bila ispravno primljena, ona u
prijenosu ne smije biti toliko izmijenjena da izae izvan svoje sfere. Kodna rije takoer ne smije
prijei u sferu neke druge kodne rijei. Stoga, da bi kodna rije bila ispravno dekodirana, najvie
t njenih simbola smije biti promijenjeno zbog smetnji pri prijenosu. Upravo je to izreka druge
toke svojstva o otkrivanju i ispravljanju pogreki.

1.1.2. Najvei ostvarivi broj kodnih rijei i perfektni kodovi


Za svaki binarni blok-kd vrijedi da je broj kodnih rijei M uvijek manji ili jednak 2n, gdje je n
duljina koda. Osnovni zadatak teorije kodiranja je pronai onaj kd K duljine n koji bi za
zadanu najmanju Hammingovu distancu d ( K ) imao najvei broj kodnih rijei M. Najvei
ostvarivi M nekog binarnog koda K s najmanjom Hammingovom distancom d oznait emo s
A(n, d ) .
Ukoliko se zahtijeva najmanja Hammingova distanca d=1, onda je rezultat trivijalan: A(n, d) = 2n.
To slijedi iz injenice da se od koda jedino zahtijeva da kodne rijei budu razliite, pa kd
sainjavaju svi mogui vektori sa skalarima 0 i 1 duljine n, a takvih je 2n.
Bez velikih potekoa se dolazi i do rezultata za A(n, n). Budui da je d = n, to znai da se sve
kodne rijei razlikuju u svim pozicijama unutar kodne rijei. Odaberemo li bilo koju poziciju (na
primjer prvu), onda se sve kodne rijei moraju razlikovati barem u toj poziciji. Budui da je kod
7

binarnih abeceda na tu poziciju mogui postaviti samo 2 razliita simbola, slijedi da je najvei
mogui broj razliitih kodnih rijei A(n, n) = 2. Na primjer, to moe biti kd s ponavljanjem:
0000, 1111.
Tablica 0.1: Danas poznate vrijednosti A(n, d) nekih binarnih kodova

n
5
6
7
8
9
10
11
12
13
14
15
16

d=3
4
8
16
20
40
72-79
144-158
256
512
1024
2048
2560-3276

d=5
2
2
2
4
6
12
24
32
64
128
256
256-340

d=7
2
2
2
2
4
4
8
16
32
36-37

Do ostalih rezultata dolazi se sloenim postupcima, a neke vrijednosti nisu niti poznate. Danas
poznate vrijednosti ukratko su prikazane u tablici (Tablica 0.1) [2]. Meutim, postoje odreene
zakonitosti koje pomau prilikom odreivanja najveeg M.
Neka #S(x, t) oznaava broj kodnih rijei u sferi S(x, t) vektora x duljine n. Budui da je broj
n
kodnih rijei koji do vektora x imaju Hammingovu distancu m jednak , slijedi da je
m
n n
n
+ + ... + .
1 2
t

#S (x, t ) = 1 +

Slika 0.5: Hammingovo ogranienje

Slika 0.6: Perfektan kod

Neka je distanca koda d = 2t + 1 . U tom sluaju, oko svake od M kodnih rijei postoji sfera
radijusa t, te zasigurno vrijedi M #S (x, t ) 2n , gdje je 2n ukupan broj moguih binarnih vektora
duljine n.
Ovu tvrdnju mogue je shvatiti ukoliko se pogleda slika (Slika 0.5). Tokama su prikazani svi
mogui vektori duljine n, a krugovima su oznaene sfere oko kodnih rijei koda. Iz ovoga se
jednostavno moe izraunati gornja granica na M, a to je upravo i iskaz sljedeeg svojstva o
Hammingovom ogranienju.

TEOREM

HAMMINGOVO OGRANIENJE: Za binarni kd (n, M , 2t + 1) , ukoliko postoji, mora biti


zadovoljen izraz
2n
.
M
n n n
n
+ + + ...
0 1 2
t

Ovo ogranienje broja M se zove i ogranienje sfernog pakiranja (engl. sphere-packing bound).
U skladu s ovim svojstvom uveden je pojam perfektnog koda.
PERFEKTAN KOD: Binarni kd (n, M , 2t + 1) koji zadovoljava izraz:
DEFINICIJA

M=

2n
n n n
n
+ + + ...
0 1 2
t

naziva se perfektan kd.


Perfektan kd je onaj kd distance 2t + 1 za kojeg vrijedi da su sve mogue kodne rijei u jednoj
od sfera radijusa t (Slika 0.6). Ovo svojstvo je vrlo korisno kada doe do dekodiranja. Koja god
kodna rije doe u dekoder kanala, dekoder e uspjeti nai originalnu kodnu rije kojoj pripada.
Na primjer, binarni kd (2t + 1, 2, 2t + 1) s kodnim rijeima 0000 i 1111 je trivijalan primjer
perfektnog koda. Meutim, postoje i primjeri netrivijalnih kodova poput binarnog Golay
(23,12, 7) ili ternarnog Golay (11, 6,5) koda [2], [3]. Pronalaenje perfektnih kodova je u centru
panje moderne teorije kodiranja.

1.1.3. Ekvivalencija kodova


Vano je uoiti da kd prvenstveno odreuju relativni odnosi izmeu pozicija razliitih kodnih
rijei. Na primjer, razmotrimo sljedea dva koda:
0
0

K1 =
1
1

0
1
0
1

0
1
1
0

0
0
1
1

0
1
0
1

0
0

K2 =
1
1

0
0
1
1

1
0
0
1

0
1
0
1

0
1
0
1

Iako izgledaju potpuno razliiti, izmeu njih postoji odreena funkcijska ovisnost. Kd K2 je
dobiven na nain da su na treoj poziciji koda K1 zamijenjeni simboli 1 s 0 i 0 s 1. Nakon toga su
zamijenjene pozicije 2 i 4 svih kodnih rijei. Slika 0.7 prikazuje Hammingove distance kodova.

Slika 0.7: Ekvivalencija kodova

Uoavamo da nema razlike u Hammingovim distancama izmeu pojedinih rijei kodova K1 i K2,
a time nema niti razlike u sposobnosti ovih kodova da otkriju i isprave eventualnu pogreku.
Openito se moe rei da zamjene pozicija kodnih rijei ne utjeu na relativne odnose pojedinih
kodnih rijei u pogledu Hammingove distance.
Permutacija binarnih znamenki oblika
0

izvrena na istoj poziciji svih kodnih rijei takoer ne mijenja Hammingove distance izmeu
pojedinih kodnih rijei. Stoga, kodovi koji se mogu dobiti jedan iz drugoga primjenom
permutacije nad simbolima iste pozicije kodnih rijei i zamjenom pozicija su u pogledu
sposobnosti otkrivanja i otklanjanja pogreaka ekvivalentni.

(1) postupkom permutacije nad jednom ili vie pozicija koda,


(2) zamjenom dviju ili vie pozicija koda prije ili nakon (1).

DEFINICIJA

EKVIVALENTNI KODOVI: Dva binarna blok-koda su ekvivalentna ukoliko se jedan iz


drugog mogu dobiti

Primjer: Permutacija kodnih rijei ekvivalentnih kodova

Promotrimo binarni kd
1
0
1
0

1
1
0
0

PRIMJER

0
0

K =
1
1

0
1
.
0
1

Ukoliko se na drugu i treu poziciju primijeni permutacija


0

,
0

10

te se zamijene pozicije 1 i 4, dobiva se kd:

0
1

K'=
0
1

0
1
0
1

0
0
1
1

0
0
.
1
1

Dobiveni kd K se u odnosu na poetni kd K razlikuje samo u dvije kodne rijei, ali posjeduje
kodnu rije 0. Moe se pokazati da je bilo koji kd operacijama permutacije i zamjene pozicija
mogue pretvoriti u ekvivalentan kd koji u sebi sadri kodnu rije 0 = 0000.
TEOREM

POSTOJANJE KODNE RIJEI 0: Svaki binarni blok-kd (n, M , d ) je ekvivalentan kodu


(n, M , d ) koji sadri kodnu rije 0 = 0000.

Primjer: Odreivanje najveeg broja kodnih rijei

Nadalje, kodna rije 1 = 11111 takoer nije mogua budui da nije mogue formirati niti jednu
kodnu rije koja bi imala Hammingovu distancu do kodnih rijei 0 i 1 od najmanje 3 pozicije.
Nije mogue imati kodne rijei s jednom ili dvije jedinice, budui da bi distanca tih kodnih rije i
do kodne rijei 0 bila manja od 3. Dakle, kao kandidati za ostale kodne rijei su samo one koje
imaju 3 jedinice. Iako takvih kodnih rijei ima ukupno deset, potrebno je izabrati one koje su
meusobno udaljene najmanje za 3 pozicije. Provjerom svih kombinacija mogue je zakljuiti da
samo dvije rijei zadovoljavaju ovaj kriterij.
Sada je mogue formirati kd koji se sastoji od kodne rijei 0, dvije kodne rijei s 3 jedinice i
jedne kodne rijei sa 4 jedinice. To moe biti sljedei konkretan kod:
0
1

K =
0
1

0
1
0
1

0
1
1
0

0
0
1
1

0
0
.
1
1

Jo nije dan odgovor na pitanje koliki je A(5,3) . Jedino se zna da je 4 A(5,3) 5 . Moe se
pretpostaviti da postoji kd (5, 5, 3). Meutim, u tom sluaju bi, koristei princip ekvivalentnosti
kodova, morala postojati trea kodna rije s 3 jedinice ili pak dvije kodne rijei sa 4 ili 5 jedinica.
Budui da niti jedan od ova dva zahtjeva nije mogue ispuniti, zakljuak je da kd (5,5,3) ne
postoji i da je A(5,3) = 4.
11

PRIMJER

Ovo svojstvo moe uvelike pomoi prilikom odreivanja najveeg broja kodnih rijei nekog koda.
Za primjer odredimo koliki je najvei M binarnog koda (5, M, 3), tj. A(5, 3). Koristei se
Hammingovim ogranienjem, lako je zakljuiti da je M 5. Meutim, koristei se prethodnim
svojstvom, moe se zakljuiti da je u nekom ekvivalentnom kodu s najveim brojem kodnih rije i
zasigurno kodna rije 00000. Budui da je najmanja Hammingova distanca 3, onda moe
postojati samo jedna kodna rije koja ima 4 ili 5 jedinica. To slijedi iz injenice da ako bi ih bilo
dvije, njihova meusobna distanca bi bila manja od 3, jer bi se razlikovale u najvie jednoj ili
dvije pozicije.

1.1.4. Paritetno kodiranje


Najjednostavnija klasa blok-kodova koja se koriste u praksi su kodovi koji koriste paritetno
kodiranje. Ovi kodovi se koriste iskljuivo za otkrivanje pogreki u primljenoj kodnoj rijei.
Ideja paritetnog kodiranja je dodavanje zalihosnog simbola/bita kodiranoj poruci na nain da
zbroj jedinica u dobivenoj kodnoj rijei bude paran. Na primjer, ukoliko je kodirana poruka
10110, koder kanala na kraj rijei dodaje bit 1 tako da ukupan broj bitova 1 bude paran Slika
0.8.

Slika 0.8: Primjer horizontalnog paritetnog kodiranja parnim paritetom

Ukoliko prilikom prijenosa kodne rijei prijenosnim kanalom doe do jednostruke pogreke bita,
broj bitova 1 nee biti paran broj i dekoder kanala e otkriti pogreku prilikom prijenosa.
Zalihosni bit koji se dodaje kodiranoj poruci naziva se paritetni bit (engl. redundancy check). U
praksi se koriste dva naina dodavanja paritetnog bita: parni paritet (engl. even parity) i
neparni paritet (engl. odd parity). Kod parnog pariteta ukupan broj bitova 1 u kodnoj rije i
mora biti paran broj, a kod neparnog pariteta neparan broj. Ukoliko s x1,,xk oznaimo simbole
kodirane poruke, onda se paritetni bit R izraunava zbrajanjem aritmetikom modulo 2 na sljede i
nain:
R = x1 + x2 +

+ xk

( parni paritet ),

R = x1 + x2 +

+ xk + 1

(neparni paritet ).

U praksi se paritetno kodiranje provodi uvoenjem zajednikih paritetnih bitova za vie


uzastopnih kodiranih poruka. S xij oznaimo j-ti simbol i-te kodirane poruke - Slika 0.9. Ukoliko
koder kanala paritetno kodira m uzastopnih kodnih poruka, onda se nakon m-te kodne poruke
formira posebna kodna rije s bitovima C1, , Ck, gdje je svaki bit Ci paritetni bit svih m i-tih
simbola kodiranih poruka. Ukoliko se koristi parni paritet, onda se bit Ci dobiva na sljedei nain:
Ci = x1i + x2i +

+ xmi , i = 1,..., k ,

gdje se zbrajanje provodi u aritmetici modulo 2. Ovakav pristup umetanju paritetnih bitova se
naziva vertikalna provjera zalihosti (VRC engl. vertical redundancy check).

Slika 0.9: Horizontalna i vertikalna provjera zalihosti

12

Ukoliko koder kanala uz vertikalnu provjeru zalihosti vri i paritetno kodiranje svake od m
kodiranih poruka posebno, onda se takav pristup naziva horizontalna ili longitudinalna
provjera zalihosti (LRC engl. longitudinal redundancy check). U tom sluaju vertikalna
provjera zalihosti umee i paritetni bit Ck+1 kao paritetni bit svih horizontalnih paritetnih bitova Slika 0.9. U sluaju parnog pariteta, vrijednost bita Ck+1 se dobiva izrazom:
Ck +1 = R1 + R2 +

+ Rm ,

gdje se zbrajanje provodi u aritmetici modulo 2. Dodavanjem vertikalne provjere zalihosti


poveava se vjerojatnost otkrivanja pogreke za otprilike dva do etiri reda veliine u odnosu na
koritenje paritetnog bita za svaku kodnu rije posebno (horizontalna provjera zalihosti).

1.2. Linearni binarni blok-kodovi


Svaku kodnu rije binarnog blok-koda K duljine n mogue je predstaviti vektorom oblika
x = [x1xn], gdje su xi skalari (simboli) iz abecede F2 = {0, 1}. Skraeno emo ovakve vektore
nadalje zvati binarnim vektorima. Nad skupom F2 je mogue definirati operacije zbrajanja i
mnoenja u aritmetici1 modulo 2 kako je prikazano sljedeom tablicom:
x1

x2

x1+ x2

x1 x2

0
0
1
1

0
1
0
1

0
1
1
0

0
0
0
1

Neutralan element s obzirom na zbrajanje je 0 (0+1=0), a s obzirom na mnoenje je 1 (11=1).


Korisno je primijetiti da je u aritmetici modulo 2 zadovoljena jednakost 1 = 1 , pa je 1 ujedno i
suprotan element s obzirom na zbrajanje. Takoer, element 1 je jedini koji zadovoljava jednakost
1 11 = 1 , pa je tako 1 i suprotan (inverzan) element s obzirom na mnoenje.

Neka je V(n) skup svih moguih binarnih vektora duljine n. Takvih je 2n. Nad skupom V(n) je
mogue definirati operacije zbrajanja vektora i mnoenja vektora skalarom na sljedei nain:
x + y = [ x1 , x2 , x3 ,..., xn ] + [ y1 , y2 , y3 ,..., yn ] = [ x1 + y1 , x2 + y2 , x3 + y3 ,..., xn + yn ] ,
a x = a [ x1 , x2 , x3 ,..., xn ] = [ a x1 , a x2 , a x3 ,..., a xn ] ,

gdje su a, xi, yi skalari iz F2, a x, y vektori iz skupa V(n). Uz ovako definirane operacije, skup V(n)
je vektorski prostor2. Na primjer, zbrajanjem vektora 011010 i 101110 iz V(6) dobivamo kodnu
rije 110100 na nain da zbrajamo binarne znamenke na istoj poziciji u aritmetici modulo 2 na
sljedei nain:
011010
+ 101110
.
110100

Skup F2 s elementima {0, 1} i ovako definiranim operacijama mnoenja i zbrajanja je algebarska struktura
Galoisovo polje.
2

Vektorski prostor je skup vektora nad kojim su definirane operacije zbrajanja vektora i mnoenja vektora skalarom
takve da su zadovoljena svojstva zatvorenosti s obzirom na zbrajanje vektora i mnoenja sa skalarom, asocijativnosti,
komutativnosti, postojanja neutralnog i suprotnog elementa s obzirom na zbrajanje, distributivnosti zbrajanja i
mnoenja te postojanja neutralnog elementa s obzirom na mnoenje skalarom.

13

Zbog zbrajanja u aritmetici modulo 2, operacija zbrajanja uvijek daje isti rezultat kao i operacija
oduzimanja. Na primjer 011010 + 10111 = 011010 10111 = 110100.
Mnoenje vektora skalarom iz abecede F2 je trivijalno. Ukoliko se vektor x mnoi skalarom 1,
dobiva se ponovno vektor x, a ukoliko se mnoi skalarom 0, dobiva se vektor 0:

1 x = x, 0 x = 0 .
Nadalje podrazumijevamo da sve opisane algebarske operacije vrimo u aritmetici modulo 2.
Binarni blok-kd se naziva linearan binarni blok-kd ako se zbrajanjem bilo koje dvije kodne
rijei (vektora) opet dobiva neka kodna rijei iz koda ili ako se mnoenjem bilo koje kodne rijei
skalarom iz abecede opet dobiva kodna rijei iz koda. Primjer linearnog binarnog koda je kd (5,
4, 3) iz prethodnog potpoglavlja. Definiciju linearnog blok-koda mogue je iskazati i formalno na
sljedei nain.

x + y K,
a x K,

DEFINICIJA

LINEARNI BINARNI BLOK-KOD: Neka je blok-kd K potprostor vektorskog prostora V(n):


K V(n). Neka su x i y kodne rijei koda K i neka je a F2. Ako je za sve x , y i a ispunjeno:

onda je K linearan binarni blok-kd.


U nastavku teksta linearne binarne blok-kodove zovemo jednostavno linearni blok-kodovi ili
linearni kodovi.
Zahtjevi iz definicije linearnog blok-koda osnovna su svojstva vektorskog prostora. Bez dokaza
emo ustvrditi da je linearni blok-kd vektorski potprostor od V(n). Posljedica ove injenice je da
svaki linearni blok-kd nuno mora imati kodnu rije 0 prema svojstvu vektorskog prostora o
postojanju neutralnog elementa za zbrajanje.
Linearni blok-kodovi omoguuju vrlo jednostavan proraun distance koda preko teine kodnih
rijei koda.

Hammingova distanca dviju kodnih rijei x i y moe se odrediti pomou jednadbe


d (x, y ) = w(x y ).
Dobro je primijetiti da je i razlika kodnih rijei x - y neka kodna rije koda linearnog blok-koda K.
Stoga se traenjem teina svih kodnih rijei koda K ujedno dobivaju sve Hammingove distance
izmeu svih kodnih rijei. Iz toga slijedi da je najmanja teina svih kodnih rijei razliitih od 0
ujedno i distanca koda.

14

DEFINICIJA

TEINA KODNE RIJEI: Teina kodne rijei x koda K je broj pozicija kodne rijei na kojima
se nalazi simbol 1. Oznaka teine kodne rijei x je w(x).

d ( K ) = w( K ).

TEOREM

DISTANCA LINEARNOG BLOK-KODA: Neka je K linearni blok-kd i neka je w(K)


najmanja teina svih kodnih rijei razliitih od 0. Tada je distanca koda

1.2.1. Generirajua matrica


Ve smo rekli da je linearni blok-kd vektorski potprostor vektorskog prostora V(n). Ta injenica
nam omoguuje da unutar linearnog blok-koda zbrajamo i oduzimamo vektore (kodne rijei) i
time dobijemo neku kodnu rije istog koda, mnoimo vektore skalarima (tj. mnoimo kodne
rijei simbolima abecede), definiramo skalarni produkt dva vektora, definiramo bazu vektorskog
potprostora i brojne druge stvari.
Ve sama injenica da linearni blok-kd ima bazu (skup svih linearno neovisnih rijei koda)
znatno nam olakava posao definiranja nekog koda. Podsjetimo se da se svi vektori nekog
potprostora mogu dobiti kao linearna kombinacija vektora baze. Dakle, ako kd K ima k vektora
u bazi b1 , b 2 , , b k (k-dimenzionalni vektorski potprostor), onda se svaka rije koda moe
zapisati u obliku:

x = a1 b1 + a2 b 2 +

+ a b ,
k

gdje su ai skalari abecede koda. Broj kodnih rijei koje mogu nastati svim linearnim
kombinacijama vektora baze ima tono 2k.
Iz ovog razloga, linearni blok-kd se ne mora definirati ispisom svih 2k kodnih rijei, nego
jednostavno definicijom k vektora baze. Vektori baze ine tzv. generirajuu matricu koda.
DEFINICIJA

GENERIRAJUA MATRICA KODA: Matrica dimenzija k n iji se reci sastoje od vektora


baze koda (n, M , d ) se zove generirajua matrica.

Smisao uvoenja generirajue matrice je skraenje zapisa linearnog blok-koda, te


pojednostavljenje operacija kodiranja i dekodiranja, kako e biti objanjeno u narednim
potpoglavljima.
Primjer: Binarni kd K=(5, 4, 3)

0
1

K =
0

PRIMJER

Binarni kd K = (5, 4,3) ima kodne rijei


0 0 0 0
1 1 0 0.
0 1 1 1
1 0 1 1

Za bazu se mogu uzeti dvije zadnje kodne rijei, budui da su linearno neovisne: z1 = 00111 i
z2 = 11011 . Sve se kodne rijei koda K mogu dobiti kao linearna kombinacija a z1 + b z2 , gdje
su a i b {0, 1}. Tako je generirajua matrica koda K koja ga jedinstveno opisuje
0 0 1 1 1
.
G=

1 1 0 1 1

15

Sada vidimo da se prve dvije kodne rijei koda K mogu dobiti kao linearna kombinacija vektora
iz generirajue matrice G:
[00000] = 0 [00111] + 0 [11011],
[11100] = 1 [00111] + 1 [11011].
Na taj nain je cijeli kd definiran svojom generirajuom matricom.
Budui da je broj kodnih rijei linearnog blok-koda odreen brojem vektora baze (dimenzija koda)
k prema jednadbi M = 2k , uvodi se i posebna oznaka koda.

Blok-kd iz prethodnog primjera je prema ovoj oznaci linearni blok-kd [5,2], a budui da znamo
distancu koda d(K) = 3, moemo ga oznaiti i oznakom [5,2,3]. Budui da je broj kodnih rije i
koda iz prethodnog primjera M=22=4, kd [5,2,3] je ujedno mogue oznaiti i oznakom (5,4,3).

1.2.2. Standardni oblik generirajue matrice


U prethodnom potpoglavlju je reeno da su dva blok-koda ekvivalentna ukoliko se jedan iz
drugog mogu dobiti postupcima zamjene pozicija (stupaca) i permutacije nad odreenim
pozicijama. Svi ekvivalentni kodovi mogu se dobiti jedni iz drugih operacijama permutacije i
zamjene pozicija.
Kod linearnih blok-kodova doslovna primjena ova dva pravila na jedan linearni blok-kd ne mora
nuno dati ekvivalentni kd koji je ujedno i linearan. Neka je na primjer definiran binarni kd
0
0

K =
1
1

0
1
0
1

0
0
1
1

0
1
.
1
0

To je linearan blok-kd. Izvrimo li permutaciju nad treom pozicijom: 0 1 , 1 0 , dobivamo


ekvivalentni kd
0
0

Ke =
1
1

0
1
0
1

1
1
0
0

0
1
.
1
0

Dobiveni ekvivalentni kd Ke je ekvivalentan kodu K, ali nema kodnu rijei (vektor) 0 i stoga
nije linearan.
Postavlja se pitanje koje je operacije doputeno vriti nad linearnim blok-kodom, a da
ekvivalentan kd takoer bude linearan. Budui da su reci generirajue matrice linearnog koda
takoer kodne rijei, onda se nad recima generirajue matrice mogu izvriti operacije zamjene
redaka i dodavanje jednog retka drugom retku, a da nova generirajua matrica daje isti kd.

16

DEFINICIJA

OZNAKA LINEARNOG BLOK-KODA: Ako je kd K vektorski k-dimenzionalni potprostor


vektorskog prostora V(n), onda kd K ima oznaku [n, k]. Ukoliko je poznata distanca koda d,
onda je oznaka koda [n, k, d].

Budui da zamjena stupaca generirajue matrice odgovara zamjeni pozicija kodnih rijei koda,
onda se zamjenom stupaca generirajue matrice dobiva generirajua matrica nekog ekvivalentnog
koda.
Navedenim operacijama nad recima i stupcima generirajua matrice dobiva se generirajua
matrica nekog ekvivalentnog linearnog blok-koda. Operacija permutacije nad recima nije
doputena.

(1) Zamjena redaka;


(2) Dodavanje jednog retka drugom retku;

TEOREM

GENERIRAJUE MATRICE EKVIVALENTNIH LINEARNIH BLOK-KODOVA: Dva


ekvivalentna linearna binarna blok-koda [n, k], K1 i K2, imaju generirajue matrice G1 i G2 koje
se jedna iz druge mogu dobiti sljedeim operacijama:

(3) Zamjena stupaca.


Ova svojstva znatno olakavaju pronalazak odgovarajueg ekvivalentnog linearnog blok-koda
budui da je navedene operacije potrebno provoditi samo nad generirajuom matricom. Postoji
veliki broj moguih generirajuih matrica, iako sve opisuju kodove koji imaju jednaku
sposobnost otkrivanja i ispravljanja pogreke. Nas zanimaju one generirajue matrice koje su po
svojoj strukturi najjednostavnije, a koje jedinstveno definiraju linearni blok-kd u smislu njegove
sposobnosti da otkrije i ispravi pogreku.

G = [I k | A ] ,

gdje je I k jedinina matrica reda k, a A matrica dimenzija k (n k ) .

TEOREM

EGZISTENCIJA STANDARDNOG OBLIKA: Svaka generirajua matrica G linearnog blokkoda [n, k] moe se operacijama zamjene redaka, zamjene stupaca i dodavanja jednog retka
drugom retku svesti na standardni oblik [ I k | A ] .

DEFINICIJA

STANDARDNI OBLIK GENERIRAJUE MATRICE: Generirajua matrica G nekog koda


K ima standardni oblik ako ima strukturu

Primjer: Standardni oblik generirajue matrice koda K=[5, 2, 3]

0
1

K =
0

0 0 0 0
1 1 0 0,
0 1 1 1

0 0 1 1 1
.
G=

1 1 0 1 1

1 0 1 1

Budui da se radi o linearnom blok-kodu, iz prethodnog teorema znamo da zasigurno postoji


barem jedan standardni oblik generirajue matrice. Do jednog od njih moemo doi tako to na
17

PRIMJER

U prethodnom primjeru smo definirali linearni blok-kd [5, 2, 3] preko liste kodnih rijei i
generirajue matrice G:

postojeoj matrici G izvrimo operaciju zamjene drugog i treeg stupca, a potom zamijenimo prvi
i drugi redak. Dobivamo novu generirajuu matricu
1

0 1 1 1

G =

1 0 1 1

Ova generirajua matrica je u standardnom obliku budui da ima strukturu [ I 2 | A ] . Ukoliko


matrici G* zamijenimo trei i etvrti stupac, dobivamo jo jednu matricu u standardnom obliku:
1

0 1 1 1

G ** =

0 1 0 1 1

Dobro je primijetiti da standardni oblik generirajue matrice nije jedinstven. To slijedi iz


injenice da je mogue zamijeniti dva stupca matrice A i jo uvijek imati standardni oblik.
Razliite generirajue matrice u standardnom obliku nee generirati jednake kodove, nego samo
ekvivalentne kodove.

1.2.3. Kodiranje linearnim kodovima


Generirajua matrica je matrica iji reci odgovaraju bazi vektorskog potprostora prostora V(n).
Stoga se bilo koja kodna rije moe dobiti kao linearna kombinacija vektora baze. Ukupan broj
kodnih rijei koda [n, k] je 2k, to ujedno znai da kd moe kodirati 2k razliitih kodiranih
poruka kodera informacije. Formiranje zatitne kodne rijei se moe izvriti na nain da bitovi
kodirane poruke budu koeficijenti za linearnu kombinaciju vektora baze.
Neka je

G=

r1

r
2.


rk

generirajua matrica koda K, gdje su ri vektori baze. Neka je m=[m1 m2 mk] bilo koja od 2k
poruka. Tada poruci m odgovara tono jedna kodna rije x koda K koja je jednaka linearnoj
kombinaciji skalara mi i vektora baze ri:

m r = m G.
k

x=

i =1

Tako se generiranje zatitne kodne rijei x za kodiranu poruku m svodi na umnoak vektor retka
poruke i generirajue matrice. Sloenost kodiranja bilo koje poruke je O (n k ) .
Primjer: Kodiranje pomou generirajue matrice

PRIMJER

Za primjer moemo uzeti kd [5,2,3] koji ima sljedeu generirajuu matricu:


0

0 1 1 1
,
1 1 0 1 1

G=

Koder izvora informacije generira kodiranu poruku 11. U koderu kanala nastaje zatitna kodna
rije:

18

[1 1]

0 1 1 1
= [ 1 1 1 0 0 ].
1 0 1 1

Sloenost kodiranja moe se smanjiti ako se koristi standardni oblik generirajue matrice koda. U
tom sluaju kodiranje poruke m se svodi na mnoenje
m [ I k | A ] = {m, m A}.

Dobivena kodna rije se sastoji od dva dijela. Prvih k pozicija zauzima sama poruka i taj dio
kodne rijei se zove jednostavno poruka. Ostalih (n k ) pozicija je umnoak m A . Ovaj dio
kodne rijei se zove dio za provjeru. On predstavlja zalihost kodne rijei. Sloenost kodiranja
bilo koje poruke postaje O(n k k 2 ) .
Primjer: Kodiranje pomou generirajue matrice u standardnom obliku

0 0 1 1
,
0 1 1 1 1

G=

gdje su matrice I 2 i A :
1

0
,
0 1

1 1
.
1 1 1

I2 =

A=

Neka je poruka 01. Nastaje sljedea kodna rije:


[ 0 1]

0 0 1 1
= [ 0 1 1 1 1 ].
1 1 1 1

Ova kodna rije se sastoji od originalne poruke i 3 zalihosna simbola 1:

011
1 1.

poruka zalihost

Vidimo da je zalihost kodne rijei mogue izraunati i jednostavnije tako da se na originalnu


poruku zdesna doda rezultat umnoka [0 1] A = 111.

1.2.4. Dekodiranje linearnog koda


Promatrajmo ponovno kd (5, 4,3) = [5, 2,3] sa sljedeim kodnim rijeima:
0
1

K =
0
1

0
1
0
1

0
1
1
0

0
0
1
1

0
0
.
1
1

Budui da je distanca koda 3, ovaj kd moe otkriti dvostruku pogreku i ispraviti jednostruku
pogreku koritenjem principa dekodiranja najbliim susjedom.

19

PRIMJER

Pronaimo generirajuu matricu koda koji je ekvivalentan onom iz prethodnog primjera, a ija je
generirajua matrica u standardnom obliku. To moemo izvesti tako da jednostavno zamijenimo
prvi i trei stupac matrice G iz prethodnog primjera. Dobivamo generirajuu matricu:

Dekoder kanala moe postupiti na nain da za primljenu kodnu rije pronae kodnu rije do koje
ima najmanju Hammingovu distancu i nju proglasiti primljenom kodnom rijeju. Naravno,
ukoliko je najmanja distanca do bilo koje kodne rijei vea od jedan, dekoder ustanovljuje
dvostruku ili eventualno viestruku pogreku. Sloenost ovakvog postupka je O(M), gdje je M
broj kodnih rijei. Za velike kodove ovaj postupak moe zahtijevati veliko optereenje procesora
prijemnika, to rezultira skupom i neekonominom izvedbom prijemnog ureaja.
Jedan od postupaka brzog dekodiranja koji se koristi prilikom dekodiranja je sindromsko
dekodiranje o kojem se govori u nastavku ovog poglavlja. Za shvaanje tog naina dekodiranja
potrebno je uvesti pojmove vektora pogreke, koseta, standardnog niza i paritetne matrice.

e = y x = [e1 e2

e ].
n

DEFINICIJA

VEKTOR POGREKE: Vektor pogreke e za poslanu kodnu rije x = [ x1 x2 ... xn ] i primljenu


kodnu rijei y = [ y1 y2 ... yn ] se definira kao razlika vektora:

Promotrimo nadalje sljedeu tablicu:

00000
00001
00010
00100
01000
10000

11100
11101
11110
11000
10100
01100

00111
00110
00101
00011
01111
10111

11011
11010
11001
11111
10011
01011

Ova tablica je formirana na nain da se u prvom retku nalaze kodne rijei koda (5,4,3)=[5,2,3].
Svi ostali reci su formirani na nain da se sasvim lijevo nalaze vektori pogreke za sluaj kada
kd moe ispraviti pogreku. Ostali lanovi redaka su dobiveni na nain da je na kodne rijei iz
prvog retka dodavan vektor pogreke retka (prvi stupac). Na ovaj nain su dobivene sve kodne
rijei koje dekoder moe primiti u sluaju da je nastupila jednostruka pogreka. Vano je
primijetiti da su lanovi prvog stupca takoer kodne rijei koje se mogu primiti uz jednostruku
pogreku ukoliko je poslana kodna rije 00000. Dobivena tablica formalno se naziva standardni
niz. lanovi nekog retka predstavljaju jedan koset (engl. coset) skupa kodnih rijei K. Koset koda
K je kd nastao na nain da je svim kodnim rijeima dodan neki vektor pogreke3 e. Zanimljivo
je da svi kosetovi koji mogu nastati na opisani nain sadre potpuno razliite kodne rijei.

Ova definicija koseta (engl. coset) je posebno prilagoena ovom tekstu. Koset S skupa K se definira kao onaj
skup vektora koji nastaje zbrajanjem svih vektora skupa K s nekim fiksnim vektorom iz istog vektorskog skupa.

20

DEFINICIJA

STANDARDNI NIZ: Standardni niz koda K je tablica koja u prvom retku ima kodne rijei koda
K s tim da je prva kodna rije 0. U svim ostalim recima standardnog niza se nalaze kosetovi koda
K nastali na nain da su kodnim rijeima koda K dodavani svi vektori pogreke e koje kd K
moe otkriti i ispraviti. Prvi stupac standardnog niza sadri vektore pogreke, koji se jo nazivaju
i vodeim elementima koseta.

Uzimajui u obzir pretpostavku da nije nastupila trostruka ili vea pogreka nad simbolima
poslane kodne rijei, dekoder vri dekodiranje na sljedei nain. Kada primi kodnu rije,
pokuava je pronai u standardnom nizu. Ukoliko je nije pronaao u standardnom nizu, otkriva
pogreku, ali je ne moe ispraviti. Ukoliko pronae kodnu rije u i-tom stupcu standardnog niza,
ispravlja pogreku na nain da odreuje i-tu kodnu rije koda K kao primljenu kodnu rije.
Tonost dekodiranja opisanim postupkom slijedi iz injenice da je primljena rije jedina rije
koja je mogla nastati iz dekodirane kodne rijei uz jednostruku pogreku bita. Ovaj postupak je
temelj sindromskog dekodiranja.

1.2.5. Paritetna matrica


Opisani postupak dekodiranja pomou standardnog niza zahtijeva pronalazak primljene kodne
rijei u tablici koja moe imati vrlo velike dimenzije, iz ega zakljuujemo da je takav postupak
izuzetno procesorski zahtijevan, to rezultira neefikasnom i skupom izvedbom dekodera kanala.
Jedan nain ubrzavanja postupka dekodiranja je koritenjem paritetne matrice koda. Kako bismo
objasnili postupak dekodiranja paritetnom matricom, prethodno moramo definirati pojam
dualnog koda.
Kako je ranije pokazano, generirajua matrica G jedinstveno odreuje kd K. Kodne rijei su
linearne kombinacije vektora baze, tj. linearne kombinacije redaka matrice G. Promotrimo
linearni kd s oznakom K ije su sve kodne rijei ortogonalne4 na sve kodne rijei koda K.
Dakle, skalarni umnoak svih vektora kodnih rijei iz K i K jednak je nula. Kd K se naziva
dualni kd koda K.

K = {y V (n) | x K , y x = 0} ,

gdje je x y skalarni produkt vektora:

xy =

x y .
n

i =1

Primjer: dualni kd

Promotrimo linearan binarni kd K sa sljedeim kodnim rijeima i generirajuom matricom:


00000
11100

,
K =
10111
01011

10111
G=
.
01011

Dualni kd koda K je kd K sa sljedeim kodnim rijeima:

Ortogonalni su oni vektori iji je skalarni umnoak 0, npr. [ 0 0 0 1 1 ] [ 1 1 1 0 0 ].

21

DEFINICIJA

DUALNI KOD: Neka su x vektori koda K (x K). Skup svih vektora y vektorskog prostora V(n)
koji su ortogonalni na sve x K ini dualni kd koda K i ima oznaku K :

00000
10100

K =
11010
11001

01110
01101
.
00011
10111

Da se uistinu radi o dualnom kodu moe se provjeriti tako da se skalarno pomnoe svi parovi
kodnih rijei kodova K i kda K .
Dualni kd ima sljedee korisno svojstvo. Ako je primljena kodna rije koda K primljena
ispravno, onda njen umnoak sa svim rijeima dualnog koda K mora biti jednak nuli. Ovo
svojstvo moe posluiti za provjeru ispravnosti primljene kodne rijei. Meutim, broj kodnih
rijei dualnog koda moe biti iznimno velik, pa takvo to postaje nepraktino. Na sreu, dualni
kd je ujedno i linearan blok-kd te ima svoju generirajuu matricu.
TEOREM

LINEARNOST DUALNOG KODA: Neka je K linearni blok-kd [n, k]. Dualni kd K koda
K je linearan blok-kd [n, n k ] .

Primjer: linearnost dualnog koda

H=

0 1 0 0

1 0 1 0 .

1 0 0 1

Ova matrica predstavlja generirajuu matricu dualnog koda i nadalje je oznaavamo s H. Svi
skalarni produkti izmeu svih parova redaka matrica G i H jednaki su 0, pa zakljuujemo da
generirajue matrice koda K i dualnog koda K moraju zadovoljavati jednadbu
G T = 0.
Dakle, dualni kd ne samo da je linearan, nego je i njegova dimenzija nk, gdje je k dimenzija
koda K. Stoga je za provjeru ispravnosti primljene kodne rijei dovoljno skalarno pomnoiti
primljenu kodnu rije sa svim vektorima generirajue matrice dualnog koda kojih ima nk.
Provjera ispravnosti primljene rijei x se svodi na provjeru jednakosti:

x H = [ 0 0

0 ].

Uz poznatu generirajuu matricu H dualnog koda K, provjera ispravnosti primljene rijei svodi
sa na jednostavan umnoak vektora i matrice. Izraunavanje matrice H se u osnovi svodi na
rjeavanje jednadbe

G H = 0,
budui da svi vektori baze koda K moraju biti ortogonalni na vektore baze dualnog koda K.
Nasreu, postoji iznimno jednostavan nain raunanja matrice H kada je matrica G definirana u
standardnom obliku.
22

PRIMJER

U dualnom kodu iz prethodnog primjera mogue je izabrati tri linearno neovisne kodne rije i
koje ine bazu:

G = [I k | A ].

Generirajua matrica dualnog koda K zadovoljava jednadbu G H = 0 i jednaka je

TEOREM

GENERIRAJUA MATRICA DUALNOG KODA: Neka je G generirajua matrica linearnog


binarnog koda K u standardnom obliku:

H = A | I n k .

Primjer: dekodiranje generirajuom matricom dualnog koda paritetnom matricom

0
1

K=
0
1

0
0
1
1

0
1
1
0

0
1
0
1

0
0
1 0 1 1 0
G=
.
1
0 1 1 0 1
1

Uoimo matrice I2 i A u matrici G:


1

0
,
0 1

I2 =

1 1 0
A=
.
1 0 1

Koristei se prethodnim svojstvom zakljuujemo da generirajua matrica dualnog koda mora


imati strukturu H = A | I 3 :

H=

1 1 0 0

0 0 1 0 .
1 0 0 1

Pretpostavimo da koder informacije alje kodiranu poruku 11. Mnoenjem poruke s


generirajuom matricom dobivamo zatitnu kodnu rije [11]G = [11011]. Primijetimo da se
kodna rije sastoji od originalne poruke i zalihosnih bitova. Mnoenjem ove kodne rijei s
transponiranom matricom H dobivamo rezultat:
1

[ 11 0 11 ] 1

0
0

1
0
0
1
0

0
1
0 = [ 0 0 0 ].

0
1

Dobiven je vektor 0 to potvruje da je kodna rije ispravna.


Primijetimo da matrica H svojim jedinicama unutar svakog retka zapravo odreuje pozicije
unutar ispravne kodne rijei na kojima zbroj vrijednosti unutar aritmetike modulo 2 mora biti
jednak 0. Drugim rijeima odreuje koje parnim paritetom titi zalihosni bit. Konkretno, prvi

23

PRIMJER

Definiran je kd K = (5, 4, 3) = [5, 2,3] i odgovarajua generirajua matrica G u standardnom


obliku:

redak matrice H definira za zbroj vrijednosti simbola ispravne kodne rijei na pozicijama 1, 2 i 3
mora biti paran. Drugi stupac to definira za pozicije 1 i 4, a trei stupac za pozicije 2 i 5.
Uzmimo sada istu kodnu rije, ali uvedimo pogreku na drugom bitu (e = [0 1 0 0 0 ],
y = [1 0 0 1 1 ]):
1

[ 1 0 0 11 ] 1

0
0

1 0

0 1
0 0 = [ 1 0 1 ].

1 0
0 1

Dobili smo vektor koji nije 0, to potvruje da kodna rije nije ispravna, tj. otkrivena je pogreka.
Zbroj vrijednosti simbola ije pozicije odreuju prvi redak (pozicije 1, 2 i 3) i trei redak
(pozicije 2 i 5) matrice H nije paran broj.
Vidljivo je da zalihosni bitovi (pozicije 3, 4 i 5) zapravo predstavljaju bitove za provjeru
pariteta za odabrane pozicije unutar originalne kodirane poruke. Zbog ovog svojstva matrica H
se naziva paritetna matrica.

Ukoliko H ima strukturu:

DEFINICIJA

PARITETNA MATRICA: Neka je H generirajua matrica dualnog koda K. Matrica H se


naziva paritetna matrica (engl. parity-check matrix) ili matrica za provjeru pariteta koda K. U
svakom retku matrice H jedinice odreuju pozicije unutar ispravne kodne rijei na kojima zbroj
vrijednosti simbola mora biti paran broj.
H = [ B | I n k ] ,

gdje je B kvadratna matrica, onda je paritetna matrica H u standardnom obliku.

1.2.6. Sindromsko dekodiranje


Sindromsko dekodiranje je metoda koja nam omoguuje da sloenost dekodiranja jedne kodne
rijei svedemo na razinu O(1). Temelj sindromskog dekodiranja je vektor koji se dobije
mnoenjem primljene kodne rijei i transponirane paritetne matrice.

S (y ) = y H .

Dva sindroma S (y ) smo ve izraunali u prethodnom primjeru. Ukoliko primljena kodna rije y
pripada kodu K, sindrom je vektor 0. Primijetimo da ukoliko je kd K = [n, k ] , onda je sindrom
vektor redak dimenzije nk. Sindrom S (y ) ima jedno vrlo vano svojstvo. Promotrimo opet kd
[5, 2,3] . Generirajua i paritetna matrica ovog koda su:

24

DEFINICIJA

SINDROM: Sindrom primljene kodne rijei y koda K s paritetnom matricom H je vektor


dobiven umnokom:

0 1 1 0

, H =
0 1 1 0 1

G=

0
0

1
0
0
1
0

0
1
0 .

0
1

Napiimo ponovno standardni niz ovog koda za jednostruke pogreke simbola:


Sindrom

e
00000

11100

00111

11011

000

00001

11101

00110

11010

001

00010

11110

00101

11001

010

00100

11000

00011

11111

100

01000

10100

01111

10011

101

10000

01100

10111

01011

110

Moemo uoiti neobino svojstvo sindroma da sve kodne rijei jednog koseta (retka standardnog
niza) imaju isti sindrom. To se moe provjeriti mnoenjem za gornji standardni niz. Standardni
niz je proiren stupcem u kojem su zapisani sindromi pojedinih redaka/koseta. Ovo svojstvo
sindroma je klju brzog dekodiranja linearnih blok-kodova.

Korisna posljedica ovog svojstva je da je za odreivanje sindroma jednog retka standardnog niza
dovoljno izraunati sindrom vodeeg lana retka - vektora pogreke e. Tako dolazimo do
zakljuka da postoji preslikavanje jedan-na-jedan izmeu vektora pogreke i sindroma. Mogue
je napisati sljedeu tablicu preslikavanja za jednostruke pogreke:
e

00000

00001

00010

00100

01000

10000

S(y)

000

001

010

100

101

110

Dekodiranje sada postaje vrlo jednostavno i praktino za programsku realizaciju. Postupak se


moe opisati ovako:

izraunaj sindrom S (y ) primljene kodne rijei y,

iz tablice preslikavanja odredi vektor pogreke e,

poslana kodna rije je x = y e .

Opisani postupak ima odreenih nedostataka. to ako je primljena kodna rije y koja ima
dvostruku pogreku? Na primjer, sve kodne rijei koje imaju vektor pogreke e = 00011 ili
e = 10001 imaju sindrome koji ne pripadaju tablici preslikavanja:
[ 0 0 0 11 ] H = [ 0 11 ],

[ 1 0 0 0 1 ] H = [ 111 ].
25

TEOREM

SINDROM KOSETA: Svi kodne rijei (vektori) koji pripadaju istom kosetu koda K imaju isti
sindrom.

Ukoliko sindrom primljene kodne rijei ne postoji u tablici preslikavanja, onda dekoder kanala
zakljuuje da ta kodna rije ima dvostruku pogreku. Meutim, neke dvostruke pogreke mogu
uzrokovati potpuno krivu interpretaciju kod dekodera kanala. Na primjer, neka je poslana kodna
rije x = 10110 i neka se dogodila pogreka na pozicijama 2 i 3. Primljena je kodna rije
y = 11010 , a vektor pogreke je e = 01100 . Dekoder izraunava sindrom
S (y ) = [ 11 0 1 0 ] H = [ 0 0 1 ],
pogleda u tablicu preslikavanja i pogreno zakljuuje da je vektor pogreke 00001. Uzrok
ovakvom ponaanju nije u samom sindromskom dekodiranju, nego u principu dekodiranja
najbliim susjedom. Kd je ispravno otkrio dvostruku pogreku, ali dekoder nikako ne moe
razluiti izmeu jednostruke i dvostruke pogreke. Ovaj problem se u praksi rjeava dodavanjem
jo jednog paritetnog bita - poveanjem distance koda za 1.

1.2.7. Vjerojatnost ispravnog dekodiranja i kapacitet kanala


Problem odreivanja vjerojatnosti ispravnog dekodiranja kodne rijei razmatrat emo na primjeru
binarnog simetrinog kanala prikazanog na slici (Slika 0.10).
Simetrini kanal ima vjerojatnosti pogrenog prijenosa (inverzije) simbola pg < za oba simbola.
Za simetrini kanal takoer vrijedi da su dogaaji pogrenog prijenosa simbol iste kodne rijei u
cijelosti neovisni sluajni dogaaji. To nam omoguuje da jednostavno izraunamo vjerojatnost
pojave pogreke na k specificiranih pozicija simbola kodne rijei.

Slika 0.10: Binarni simetrini kanal s vjerojatnou pogreke simbola (bita) pg

Promatrajmo sluajni dogaaj da je tono k unaprijed odreenih pozicija simbola neke kodne
rijei duljine n pogreno preneseno, a preostalih n k ispravno preneseno. Zbog neovisnosti
dogaaja koji ga ine, vjerojatnost takvog dogaaja raunamo kao umnoak k vjerojatnosti
neispravnog prijenosa simbola i n k vjerojatnosti ispravnog prijenosa simbola, to daje
vjerojatnost pgk (1 pg )

n k

Oigledno je da dogaaj pojave pogreki nad odreenim simbolima kodne rijei odgovara
dogaaju pojave odgovarajueg vektora pogreke e. Stoga se u nastavku koriste iskljuivo
vjerojatnosti pojave vektora pogreke P(e).
Uoimo da dobivena vjerojatnost pgk (1 pg )

n k

predstavlja vjerojatnost pojave bilo kojeg

vektora pogreke s k jedinica. Na primjer, za kd [5, 2, 3] vrijedi sljedee:


P (00001) = P (00010) = P (00100) = P (01000) = P (10000) = pg (1 pg )4 .

Jasno, vjerojatnost pojave k-struke pogreke simbola, bez poznavanja tone pozicije pogreki,
dobiva se zbrajanjem svih vjerojatnosti konkretnih vektora pogreki s k jedinica. Na primjer, za
26

prethodni primjer koda [5, 2, 3] postoji 5 razliitih realizacija vektora pogreke e s jednostrukom
pogrekom, i svaka ima istu vjerojatnost. Stoga je vjerojatnost jednostruke pogreke simbola
P ( e = 1) = 5 pg (1 pg ) .
4

Postavlja se pitanje kolika je vjerojatnost da je primljena kodna rije nakon dekodiranja


sindromskim dekodiranjem ispravna? Jasno, kodna rije e biti ispravno dekodirana iskljuivo
ako je vektor pogreke dio standardnog niza. Stoga je vjerojatnost ispravnog dekodiranja jednaka
zbroju vjerojatnosti pojave vektora pogreke koji su dio standardnog niza.

P( K ) =

N p
n

i
g

i =0

(1 p )

n i

TEOREM

VJEROJATNOST ISPRAVNOG DEKODIRANJA: Neka je Ni broj vektora pogreke s i


jedinica koji pripadaju standardnom nizu blok-koda K duljine n. Onda je vjerojatnost P(K) da e
rije dobivena dekodiranjem pomou standardnog niza biti jednaka poslanoj kodnoj rijei
jednaka:

Demonstrirajmo ovaj zakljuak sljedeim primjerom.


Primjer: vjerojatnost ispravnog dekodiranja za kd [5, 2, 3]:

P( K ) = (1 pg ) + 5 pg (1 pg ) = (1 + 4 pg )(1 pg ) .
5

Koristei se vjerojatnou ispravnog dekodiranja, jednostavno izraunavamo i vjerojatnost


pogreke nakon dekodiranja pomou standardnog niza (engl. word error rate):
Pe ( K ) = 1 P( K ) .
Uoimo da vjerojatnost Pe(K) pokriva dogaaj kada se u standardnom nizu uope ne moe
pronai primljena rije, pa dekoder kanala u tom sluaju prijavljuje nemogunost dekodiranja.
Ukoliko je poznata distanca koda d(K), onda iz svojstva o sposobnosti koda da otkrije i ispravi
pogreku slijedi da kd K moe ispraviti najvie t-struku pogreku, gdje je d(K) 2t + 1. Stoga
zakljuujemo da se u standardnom nizu zasigurno nalaze svi vektori pogreke s 0 i t jedinica.
Za te kodove vrijedi da je broj vektora pogreke s i jedinica u standardnom nizu jednak:
n
.

N i =

Meutim, u standardnom nizu se mogu nalaziti i vektori pogreke s vie od t jedinica. Na alost,
ne postoji jednostavan nain izrauna vrijednosti Ni za i > t. Meutim, ukoliko je kd K perfektan,
onda su sve rijei unutar sfera radijusa t, pa se u standardnom nizu nalaze iskljuivo vektori
pogreke s t i manje jedinica. U tom sluaju je vjerojatnost pogreke perfektnog koda
P( K ) =

ni
t

i=0

pg i (1 pg )

n i

27

PRIMJER

Za odreivanje vjerojatnosti ispravnog dekodiranja za kd [5, 2, 3] je dovoljno ponovno


promotriti njegov standardni niz (vidi 1.2.6). Vidimo da je N0 = 1, N1 = 5, N2 = 0, N3 = 0, N4 = 0 i
N5 = 0, pa je

Proraun vjerojatnosti pogreke nakon dekodiranja moe pomoi da odredimo performanse


nekog kodnog kanala. Meutim, najvie nas zanima moemo li, koristei odgovarajui zatitni
kd, postii eljenu vjerojatnost pogreke nakon dekodiranja. Odgovor na to pitanje nam daje
Shannonov teorem o kodiranju [4]. Prije iskaza samog teorema, potrebno je uvesti pojam kodne
brzine (engl. code rate).

R( K ) =

k
1,
n

gdje je k dimenzija koda, a n duljina koda. Ukoliko generirajua matrica koda K ima standardni
oblik, onda je R(K) udio korisnih (informacijskih) bitova u kodnoj rijei. Budui da je n k,
R(K) 1.

DEFINICIJA

KODNA BRZINA ZATITNOG KODA: Kodna brzina linearnog binarnog blok-koda K=[n, k]
s oznakom R(K) je omjer:

SHANNONOV TEOREM O KODIRANJU ZA BINARNI SIMETRINI KANAL: Neka je


C(pg) kapacitet binarnog simetrinog kanala s vjerojatnou pogreke simbola pg dan izrazom

Za bilo koji realan broj > 0 postoji zatitni kd [n, k] s kodnom brzinom R(K) = k/n koji
ispunjava uvjet R(K) C(pg), a koji e za danu vjerojatnost pogreke simbola pg imati
vjerojatnost pogreke nakon dekodiranja manju od , tj.
Pe (K ) < .
Teorem o kodiranju nam kae da za dani binarni simetrini kanal s vjerojatnou pogreke pg
uvijek moemo konstruirati zatitni kd ija e vjerojatnost pogreke nakon dekodiranja Pe(pg)
biti po volji mala dok god je kodna brzina takvog koda manja od kapaciteta kanala: R(K) < C(pg).
Drugim rijeima, dok god kodna brzina koda ne prelazi kapacitet kanala, komunikaciju je
mogue realizirati pouzdanom po volji. Podruje u kojem je mogue konstruirati kd s
proizvoljno malom pogrekom dekodiranja prikazano je na slici (Slika 0.11).

Slika 0.11: Mogue podruje za konstrukciju zatitnog koda s


proizvoljno malom vjerojatnosti pogreke nakon dekodiranja

28

TEOREM

C ( p g ) = 1 + pg log 2 p g + (1 pg ) log 2 (1 pg ) [bit / simbol].

Za R(K) > C(pg) nije mogue postii po volji malu pogreku Pe(K). Postavlja se pitanje koliku je
najmanju vjerojatnost pogreke nakon dekodiranja mogue postii ukoliko zatitni kd mora
imati kodnu brzinu veu od kapaciteta. U teoriji informacije postoji niz manje i vie uskih granica
za Pe(K) kada je R(K) > C(pg) koje u obzir uzimaju konstrukcijske vrijednosti samog koda (vidi
[4]). Ovdje emo za odreivanje ove granice iskoristiti originalni Shannonov teorem o kanalu s
prisustvom smetnji koji kae da je kodna brzina R ograniena odozgo izrazom:

C
,
1 + Pe log 2 Pe + (1 Pe ) log 2 (1 Pe )

gdje je C kapacitet kanala, a Pe prihvatljiva vjerojatnost pogreke poruke nakon dekodiranja.


Budui da je kodna brzina R odreena kodnom brzinom realiziranog zatitnog koda R(K), a Pe
odgovara vjerojatnosti nakon dekodiranja promatranim kodom Pe(K), slijedi:
R( K )

1 + p g log 2 pg + (1 pg ) log 2 (1 pg )
1 + Pe ( K ) log 2 Pe ( K ) + (1 Pe ( K )) log 2 (1 Pe ( K ))

Pe ( K ) 1

1 1

+C.
R( K ) n

Iz ovoga je vidljivo da za R(K) > C(pg) nije mogue postii proizvoljno mali Pe(K).
Na slici (Slika 0.12) je prikazana skica mogueg podruja vrijednosti vjerojatnosti pogreki
nakon dekodiranja za ciljane vrijednosti kodnih brzina koda [5]. Vidimo da ukoliko kodna brzina
pree vrijednost kapaciteta, nije mogue postii po volji malu pogreku nakon dekodiranja, a
granicu odreuje izraz za obrat Shannonovog teorema.

Slika 0.12: Granice ostvarivih vrijednosti kodne brzine za pogodne vrijednosti


vjerojatnosti nakon kodiranja zatitnih kodova

Iako nam Shannonov teorem o kodiranju kae da postoje kodovi koji osiguravaju po volji malu
pogreku nakon dekodiranja, on nam ne daje algoritam za stvaranje takvog koda. U opem
sluaju generiranje zatitnog koda je preputeno domiljatosti konstruktora. Meutim, postoje
klase linearnih blok-kodova kod kojih je mogue definirati generirajui matricu prema unaprijed
29

TEOREM

OBRAT SHANNONOVOG TEOREMA O KODIRANJU: Blok-kd K duljine n i kodne


brzine R(K) uz kapacitet kanala C zadovoljava sljedeu nejednakost za vjerojatnost pogreke
nakon dekodiranja:

poznatoj distanci koda (npr. BCH i Reed-Solomonovi kodovi), to moe znatno olakati
konstrukciju koda.

1.3. Hammingovi kodovi


Hammingov kd je bilo koji linearni blok-kd ija paritetna matrica H ima r redaka, a u stupcima
ima sve mogue vektore dimenzije r > 1 osim vektora 0. Formalno se Hammingov kd definira
na sljedei nain.
DEFINICIJA

HAMMINGOV KOD: Neka je r pozitivan cijeli broj i neka je H matrica dimenzija r (2r 1)
ije stupce sainjavaju svi vektori dimenzije r razliiti od 0 iz vektorskog prostora V(r). Matrica
H je paritetna matrica Hammingovog koda s oznakom Ham(r).

Pojednostavljeno reeno, transponirana paritetna matrica Hammingovog koda Ham(r) ima u


recima binarne ekvivalente cijelih dekadskih brojeva od 1 do 2r 1 . Primjeri paritetnih matrica
Ham(3) su:

H1 =

1
1

1
1

0
1
1
0
0
1
1

1 1
1 1 1 7

0 2
1 1 0 6

0 1 1 3
1 3

0 4 ili H 2 = 1 0 1 5
1 0 0 4
1 5

0 6
0 1 0 2
0 0 1 1
1 7

Matrica H1 je u obliku koji se najee koristi u praksi i omoguuje jednostavnu programsku


implementaciju, dok je H 2 u standardnom obliku.

linearan blok-kd [2r 1, 2r 1 r ] ,

ima najmanju distancu 3 (otkriva dvostruku i ispravlja jednostruku pogreku),

perfektan kd.

Drugo svojstvo je izuzetno zanimljivo. Ono garantira da Hammingov kd koji ima duljinu kodne
rijei 7 ili veu, zasigurno moe ispraviti jednostruku pogreku, budui da je (3 2) / 2 = 1 .
Odreivanje distance Hammingovog koda s proizvoljnim n = 2r 1 u opem sluaju nije
jednostavan zadatak i ovaj problem nije u fokusu ovog poglavlja. Ovdje navodimo samo neke
primjere Hammingovog koda s distancama veim ili jednakim 3 - Tablica 0.2.

30

TEOREM

SVOJSTVA HAMMINGOVIH KODOVA: Neka je Ham(r) binarni Hammingov kd. Za


r 2 vrijedi da je Ham(r):

Tablica 0.2: Mogui Hammingovi kodovi s pripadajuim distancama

[n, k ,3]

[n, k ,5]

[n, k , 7]

[n, k ,9]

[n, k ,11]

[n, k ,13]

[3,1, 3]

[5,1, 5]

[7,1, 7]

[9,1, 9]

[11,1,11]

[13,1,13]

[5, 2,3]

[8, 2,5]

[11, 2, 7]

[14, 2,9]

[17, 2,11]

[20, 2,13]

[6,3,3]

[10,3,5]

[13,3, 7]

[17,3,9]

[20,3,11]

[24,3,13]

[7, 4,3]

[11, 4,5]

[14, 4, 7]

[19, 4,9]

[22, 4,11]

[26, 4,13]

[9,5,3]

[13,5,5]

[15,5, 7]

[20,5,9]

[23,5,11]

[27,5,13]

[10, 6,3]

[14, 6,5]

[17, 6, 7]

[22, 6,9]

[25, 6,11]

[29, 6,13]

[11, 7,3]

[15, 7,5]

[18, 7, 7]

[24, 7,9]

[26, 7,11]

[32, 7,13]

[12,8, 3]

[16,8, 5]

[19,8, 7]

[25,8, 9]

[28,8,11]

[34,8,13]

[13,9,3]

[17,9,5]

[20,9, 7]

[26,9,9]

[30,9,11]

[35,9,13]

[14,10, 3]

[19,10, 5]

[21,10, 7]

[28,10, 9]

[31,10,11]

[36,10,13]

1.3.1. Kodiranje pomou Hammingovog koda


Promatrajmo sljedeu paritetnu matricu Hammingovog koda Ham(3) - [7,4,3]:
H=

0 1 0 1 0 1

1 1 0 0 1 1 .

0 0 1 1 1 1

Stupci ove matrice predstavljaju binarne ekvivalente brojeva 1,2, , 7. U opem sluaju ovakvu
matricu dobivamo na nain da se i-ti stupac formira od bitova koji predstavljaju binarni
ekvivalent broja i = 1, , 2r-1, gdje je r broj redaka paritetne matrice H.
Ve smo rekli da svaki redak paritetne matrice odreuje pozicije simbola kodne rijei iji zbroj
mora biti paran broj, odnosno jednak 0 u aritmetici modulo 2. Promatrana matrica H definira
sljedee pozicije u kodnoj rijei iji zbroj vrijednosti simbola mora biti paran:
prvi redak

Pozicije (4, 5, 6 i 7),

drugi redak

Pozicije (2, 3), (6 i 7),

trei redak

Pozicije (1), (3), (5) i (7).

Vidimo da je matrica H strukturirana tako da se provjera pariteta vri u grupama od po 1, 2 i 4


uzastopnih bitova, koje su meusobno razmaknute redom 1, 2 i 4 bita, a prva grupa uvijek
poinje na 1., 2. ili 4. poziciji.
Ovakav nain rasporeda pozicija za provjeru pariteta je najei nain formiranja kodne rijei
Hammingovog koda. Dodatno se definira da se bitovi za provjeru pariteta (zalihosni bitovi)
postavljaju na pozicije koje odgovaraju potencijama broja 2, a bitovi kodirane poruke redom
izmeu njih. Struktura kodne rijei prikazana je na slici (Slika 0.13). Sivo su oznaene pozicije
paritetnih bitova koji se odreuju prema paritetnoj matrici.

31

Slika 0.13: Uobiajeni nain formiranja kodne rijei Hammingovog koda

U skladu s ovako odabranom strukturom kodne rijei, moraju biti zadovoljene sljedee jednakosti:

0 = x1 + x3 + x5 + x7 + x9 + x11 + x13 + ...


0 = x2 + x3 + x6 + x7 + x10 + x11 + ...
0 = x4 + x5 + x6 + x7 + x12 + x13 + x14 + x15 + ...,
gdje je xi vrijednosti simbola na poziciji i. Grupe bitova su naglaene razmakom, a vodei bitovi
ujedno predstavljaju bitove za provjeru pariteta. Ukoliko ih prebacimo s lijeve strane jednakosti
dobivamo i eksplicitne izraze za njihovo izraunavanje:
x1 = m1 + m2 + m4 + m5 + m7 + ... = x3 + x5 + x7 + x9 +

x2

= m1 + m3 + m4 + m6 + m7 + ... = x3 + x6 + x7 + x10 + x11 +

x4

= m2 + m3 + m4 + m8 + m9 + m10 + m11 + ... = x5 + x6 + x7 + x12 + x13 + x13 + x15

Postupak formiranja jedne kodne rijei za ulaznu kodiranu poruku 1010 i Hammingov kd [7, 4,
3] ilustriran je na slici (Slika 0.14). Bit za provjeru pariteta x1 dobiven je zbrajanjem bitova na
pozicijama kodne rijei 3, 5 i 7, odnosno pozicijama kodirane poruke 1, 2 i 4: x1=1+0+0=1. Bit za
provjeru pariteta x2 dobiven je zbrajanjem bitova na pozicijama kodne rijei 3, 6 i 7, odnosno
pozicijama kodirane poruke 1, 3 i 4: x2=1+1+0=0. Bit za provjeru pariteta x3 dobiven je
zbrajanjem bitova na pozicijama kodne rijei 5, 6 i 7, odnosno pozicijama kodirane poruke 2, 3 i
4: x3=0+1+0=1. Dobivena je kodna rije 1011010.

Slika 0.14: Formiranje kodne rijei Hammingovog koda [7,4,3]

Opisani postupak moe se initi kompliciran. Stoga se isplati pronai generirajuu matricu koda
[7,4,3] - G. Budui da paritetna matrica ima 3 retka, a duljina kodne rijei iznosi 7, slijedi da je
32

dimenzija koda k=4. To je ujedno i broj redaka generirajue matrice koda G. Broj stupaca
generirajue matrice je jednak duljini kodne rijei - 7.
Kodna rije Hammingovog koda se formira mnoenjem poruke (duljine 4 bita) s matricom G.
Prvi bit kodne rijei se formira mnoenjem poruke s prvim stupcem matrice G, drugi bit
mnoenjem poruke s drugim stupcem itd. Pogledajmo ponovno sliku (Slika 0.14). Jasno je da se
prvi bit formira zbrajanjem 1., 2. i 4. bita kodirane poruke. Stoga e prvi stupac matrice G
zasigurno biti [ 11 0 1 ] .
Slino je i s drugim stupcem. Drugi bit poruke se formira zbrajanjem 1., 3. i 4. bita kodirane
poruke, pa je drugi stupac [ 1 0 11 ] . Trei bit kodne rijei je sam prvi bit poruke, pa je trei
stupac matrice G zapravo [ 1 0 0 0 ] . Nastavljajui ovaj postupak dolazimo do generirajue
matrice koda [7, 4,3] :
1

G=

1
0
1
1

1
0
0
0

0
1
1
1

0
1
0
0

0
0
1
0

0
0
.
0

Kako bi potvrdili ispravnosti matrice G potrebno ju je pomnoiti s transponiranom paritetnom


matricom i provjeriti da je rezultat nul-matrica.
Sada se kodiranje svodi na jednostavan umnoak poruke i generirajue matrice. Kodirajmo
ponovno poruku 1010 :
1

1
[ 101 0 ]
0

1
0
1
1

1
0
0
0

0
1
1
1

0
1
0
0

0
0
1
0

0
0
= [ 1 0 11 0 1 0 ].
0

Dobivamo istu poruku kao i prethodnim postupkom.

1.3.2. Dekodiranje s Hammingovim kodom


Dekodiranje Hammingovim kodom postaje iznimno jednostavno ukoliko se koristi struktura
paritetne matrice opisane u prethodnom potpoglavlju. Na primjer, Hammingov kd [7, 4,3] ima
paritetnu matricu:
H=

0 1 0 1 0 1

1 1 0 0 1 1 .

0 0 1 1 1 1

Ukoliko primljena kodna rije y ima pogreku na i -tom bitu, sindrom S(y) e biti binarni zapis
vrijednosti i. Na primjer, neka primljena kodna rije ima pogreku na 5. bitu - kodna rije
0000100 . Dobiva se sindrom:
[ 0 0 0 0 1 0 0 ] H = [ 1 0 1 ],
a to je upravo binarni zapis broja 510 = 1012 . Na taj nain paritetna matrica omoguuje
neposredno preslikavanje sindroma u indeks pozicije na kojoj je nastupila jednostruka pogreka.
33

Dakle postupak dekodiranja, uz pretpostavku jednostruke pogreke bita, se svodi na sljede i


postupak:

Izraunaj sindrom S(y) primljene kodne rijei y,

Ako je S(y)0, invertiraj bit na poziciji koja odgovara decimalnom ekvivalentu sindroma.

Naravno, mogue je koristiti i bilo koju drugu Hammingovu paritetnu matricu, meutim onda se
mora upotrijebiti opa procedura dekodiranja sindromom linearnih blok-kodova.
Primijetimo da svaka primljena kodna rije ima sindrom jednostruke pogreke, bez obzira
nastupila jednostruka ili dvostruka pogreka. To svojstvo je posljedica perfektnosti koda. Nain
rjeavanja ovog problema je koritenje proirenog Hammingovog koda, to izlazi izvan okvira
ove knjige.

1.4. Cikliki kodovi


Cikliki kodovi su linearni blok-kodovi sa svojstvom da se ciklikim posmicanjem jedne kodne
rijei uvijek dobiva neka kodna rije iz istog ciklikog koda. Cikliko posmicanje kodne rijei
[an-1 an-2 a2 a1 a0] je promjena pozicija simbola u kodnoj rijei na nain da se dobije kodna
rije [an-2 a2 a1 a0 an-1] kada se radi o posmaku ulijevo, odnosno [ a0 an-1 an-2 a2 a1] kada se
radi o posmaku udesno. Ovo svojstvo ga ini izuzetno pogodnim za sklopovsku implementaciju.

Slika 0.15: Ilustracija ciklikog posmaka ulijevo

DEFINICIJA

CIKLIKI KD: Blok-kd K je cikliki kd ako je:

linearan blok-kd i
ako bilo koji cikliki posmak kodne rijei iz K opet daje kodnu rije iz K.
Priroda ciklikog koda je takva da je kodnu rije [ an-1 an-2 a2 a1 a0 ] korisno poistovjetiti s
polinomom stupnja n 1:
a = [an 1 ... a2 a1 a0 ] a ( x ) = an 1 x n 1 + an 2 x n 2 + ... + a2 x 2 + a1 x1 + a0 x 0 ,

gdje su ai{0,1}, a operacije se provode u aritmetici modulo 2. Na primjer, kodnu rije a=[10101]
poistovjeujemo s polinomom
a = [1 0 1 01] a( x) = x 4 + x 2 + 1.

Treba naglasiti da nam polinom a(x) ovdje slui samo kao povoljnije sredstvo zapisa kodne rije i
od vektora simbola. Polinom a(x) ne promatramo kao funkciju iji argument x moe poprimiti
neku konkretnu vrijednost, nego kao sredstvo zapisa kodne rijei.
Promotrimo
proizvoljnu
kodnu
rije
opisanu
polinomom
n 1
n 2
2
1
0
a( x ) = an 1 x + an 2 x + ... + a2 x + a1 x + a0 x te ju pomnoimo s x i preoblikujmo kako slijedi:

34

x a( x ) = an 1 x n + an 2 x n 1 + ... + a2 x 3 + a1 x 2 + a0 x1
=
=

x n ( an 1 x 0 ) + an 2 x n 1 + ... + a1 x 2 + a0 x1

x n ( an 1 x 0 ) an 1 x 0 + an 1 x 0 + an 2 x n 1 + ... + a1 x 2 + a0 x1

= an 1 ( x n 1) + an 2 x n 1 + ... + a1 x 2 + a0 x1 + an 1 x 0 .

Uzmimo sada dobivenu kodnu rije i izraunajmo ostatak dijeljenja polinomom x n 1 u


aritmetici modulo 2:
an 1 ( x n 1) + an 2 x n 1 + ... + a1 x 2 + a0 x1 + an 1 x 0 : x n 1 = an 1

an 1 ( x n 1)

an 2 x n 1 + ... + a1 x 2 + a0 x1 + an 1 x 0

ostatak nakon dijeljenja.

Ono to smo upravo utvrdili je postupak ciklikog posmicanja polinoma a( x ) reda n 1 (tj.
ciklike kodne rijei duljine n) za jedno mjesto ulijevo. U opem sluaju postupak za posmicanje
za m pozicija ulijevo je:
pomnoi polinom a( x ) s x m ,
izraunaj ostatak dijeljenja polinomom x n 1 .
Primjer: Cikliki posmak ulijevo

b( x) = a ( x) x = x3 + x,
x3 + x
x3

: x3 1 = 1
+1

x +1

ostatak nakon dijeljenja.

Ostatak dijeljenja b=011 predstavlja kodnu rije a koja je cikliki posmaknuta ulijevo za jednu
poziciju. Isti postupak rezultira cikliki posmakom za sve rijei duljine 3 .
Budui da posmicanjem bilo koje kodne rijei ciklikog koda moramo opet dobiti kodnu rije
koda, slijedi da polinomi svih kodnih rijei moraju biti u modulo xn 1 aritmetici6. Skup svih
polinoma F [ x ] = a ( x ) : a( x)(mod ( x n 1)) oznaimo s Rn. Poistovjeujui kodne rijei s

Polinom namjerno piemo od veeg prema manjem stupnju kako bi njegova struktura odgovarala znaaju bitova
kodnih rijei.

Polinomi u aritmetici modulo xn1 su oni polinomi koji su dobiveni dijeljenjem polinoma proizvoljnog stupnja
polinomom xn1, odnosno svi oni polinomi koji pri dijeljenju s xn1 za ostatak nakon dijeljenja daju same sebe.
Oznaka polinoma a(x) u aritmetici modulo xn1 je a(x)(mod (xn1)).
6

35

PRIMJER

Promatrajmo kd duljine n = 3 i kodnu rije a = 101 . Polinom koji odgovara ovoj kodnoj rijei
je a( x) = x 2 + 1 . Pomnoimo ovaj polinom5 s x i izraunajmo ostatak dijeljenja s x 3 1 :

polinomima, cikliki kd K je neki podskup skupa Rn, K Rn . Vano je uoiti da su koeficijenti


polinoma binarnih ciklikih kodova u aritmetici modulo 2. Stoga je 1 suprotan element od 1, pa
je i polinom x n 1 = x n + 1 .

Postavlja se pitanje kako generirati konkretan cikliki kd? Odgovor na to pitanje slijedi iz
sljedeeg vanog svojstva.

a ( x ) + b( x) K ,
a ( x ) K i r ( x ) R r ( x) a( x) mod( x
a( x ), b( x ) K

1) K .

TEOREM

UVJETI ZA CIKLIKI KOD: Kd K Rn je cikliki kd ako i samo ako K zadovoljava


sljedea dva uvjeta:

Prvo svojstvo odgovara svojstvu linearnosti. Drugo svojstvo kae da ukoliko bilo koji polinom
koda K pomnoimo s bilo kojim polinomom iz skupa Rn, ponovno dobivamo neki polinom
(kodnu rije) iz skupa K. Kaemo da je cikliki kd zatvoren s obzirom na mnoenje s bilo kojim
polinomom iz Rn. Budui da su svi polinomi a(x) takoer u skupu Rn, ovim svojstvom je dan
jednostavan algoritam za generiranje ciklikog koda s duljinom kodne rijei n :

izaberi bilo koji polinom f ( x ) najveeg stupnja n 1 ,

sve kodne rijei ciklikog koda K dobit emo mnoenjem svih r ( x) Rn s f ( x ) .

f ( x ) je element koda K i kae se da je kd K generiran polinomom f ( x ) , s oznakom

K f ( x ) = {r ( x ) f ( x) | r ( x ) Rn }.

Primjer: Generiranje ciklikog koda

(0 x 2 + 0 x + 0)
(0 x 2 + 0 x + 1)
(0 x 2 + 1x + 0)
(0 x 2 + 1x + 1)
(1x 2 + 0 x + 0)
(1x 2 + 0 x + 1)
(1x 2 + 1x + 0)
(1x 2 + 1x + 1)

( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))

=
=
=
=
=
=
=
=

0x2 + 0 x + 0
1x 2 + 0 x + 1
0 x 2 + 1x + 1
1x 2 + 1x + 0
1x 2 + 1x + 0
0 x 2 + 1x + 1
1x 2 + 0 x + 1
0x2 + 0 x + 0

[000]
[101]
[011]
[110]
[110]
[011]
[101]
[000]

Budui da imamo ponavljanje polinoma, ukupan broj kodnih rijei ciklikog koda je 4 : 000, 101,
011, 110. Distanca ovog koda je 2 (najmanja teina kodnih rijei je 2), to znai da kd moe
detektirati jednostruku pogreku. Generirajuu matricu moemo dobiti uzimajui drugu i treu
kodnu rije pa dobivamo:
36

PRIMJER

Neka je n=3. Odabiremo polinom f ( x ) = x 2 + 1 . Rn ima ukupno 23 = 8 polinoma koji pomnoeni


s f ( x ) u aritmetici modulo ( x 3 1) daju:

0 1
.
0 1 1

G=

Jasno, generiranje ciklikog koda na ovaj nain moe biti izuzetno sloeno zbog velikog broja
rijei. Stoga se uvodi pojam generirajueg polinoma ciklikog koda koji jednoznano odreuje
sam kd i generirajuu matricu koda.

1.4.1. Generirajui polinom i generirajua matrica


GENERIRANJE CIKLIKOG KODA: Neka je K cikliki kd dimenzije vee od 1, podskup
od Rn.
Postoji jedinstven polinom g ( x) najmanjeg stupnja u K.

Kd K je generiran upravo polinomom g ( x) .

g ( x) je faktor polinoma x n 1 , tj. x n 1 = g ( x ) q ( x ) .

TEOREM

Ovo svojstvo potrebno je paljivo tumaiti. Prva i druga toka kau da je cikliki kd K mogue
generirati polinomom koji je jedini polinom svog stupnja i da ima najmanji stupanj od svih
polinoma u kodu. Druga toka kae da upravo taj jedinstveni polinom generira cikliki kd K.
Trea toka kae da je generirajui polinom bilo koji faktor polinoma x n 1 , tj. polinom koji
dijeli x n 1 bez ostatka.
Na primjer, ukoliko se promatra cikliki kd podskupa R3, onda kd K mora biti u aritmetici
modulo ( x 3 1) . x 3 1 mogue je faktorizirati na sljedei nain7:
x 3 1 = 1 ( x + 1) ( x 2 + x + 1).
Stoga su svi mogui cikliki kodovi oni koji se mogu generirati polinomima: g(x)=1,
g ( x) = x + 1, g ( x ) = x 2 + x + 1 i sam g ( x ) = x 3 1 , budui da sam sebe dijeli bez ostatka.
DEFINICIJA

GENERIRAJUI POLINOM CIKLIKOG KODA: Polinom najmanjeg stupnja ciklikog


koda K zove se generirajui polinom ciklikog koda K.

Kada je odabran generirajui polinom ciklikog koda, odreivanje generirajue matrice G koda
postaje trivijalno.

g ( x ) = g r x r + ... + g 2 x 2 + g1 x + g 0 .

Uvijek treba imati u vidu da je 1 = 1 u modulo 2 aritmetici!

37

TEOREM

GENERIRAJUA MATRICA CIKLIKOG KODA: Neka je generirajui polinom ciklikog


koda K Rn :

Onda je dimenzija koda k = n r , a generirajua matrica koda je:

G=

gr

g r 1

gr 2

g1

gr

g r 1

g r 2

gr

g r 1

gr 2

gr

g0

g1

g0

g1

g0


        
0

g r 1

g r2

g1

0 .

0
g 0

Primjer: Generirajui polinom i generirajua matrica

x 5 1 = ( x + 1)( x 4 + x3 + x 2 + x + 1) .
Stoga

mogui

su

sljedei

generirajui

polinomi:

g 0 ( x) = 1,

g1 ( x ) = x + 1,

g 2 ( x) = x + x + x + x + 1 i g3 ( x) = x + 1 . Generirajui polinomi g 0 ( x ) = 1 i g3 ( x) = x 5 + 1 nam


4

nisu interesantni budui da g 0 ( x ) = 1 generira kd koji ima sve kodne rijei iz V(5), a
g3 ( x) = x 5 + 1 generira kd koji ima samo kodnu rije 00000 . Takoer g 2 ( x ) daje kd dimenzije
k = n r = 5 4 = 1 i ima samo jednu kodnu rije 11111 .

Generirajui polinom g1 ( x) = x + 1 odreuje kd dimenzije k = n r = 5 1 = 4 s generirajuom


matricom

G1 =

1
1
0
0

0
1
1
0

0
0
1
1

0
0
.
0

Pokazali smo da je generiranje ciklikog koda trivijalno kada su poznati faktori polinoma x n 1
koda duljine n. Najvei problem je provesti samu faktorizaciju. Matematika literatura obiluje
razliitim algoritmima za faktorizaciju, no ovdje emo jednostavno nabrojati faktorizacije za
nekoliko najee koritenih duljina kodnih rijei. Prilikom generiranja ciklikog koda
jednostavno treba odabrati povoljan generirajui polinom - Tablica 0.3.

Naalost, ne postoji nikakvo poznato svojstvo ciklikog koda na osnovu kojeg bi uz poznat
generirajui polinom i veliinu kodne rijei mogli izraunati distancu koda. Postoje samo
opeprihvaeni pristupi proraunu distance koda za pojedine klase ciklikih kodova. No ovi
pristupi su esto sloeni i zahtjevni. Stoga se koriste tablice ve poznatih rezultata na osnovi
kojih se donosi odluka o izboru koda.

38

PRIMJER

Formirajmo cikliki kd ija e duljina kodne rijei biti n = 5 . Kd mora biti u aritmetici modulo
x51, a generirajui polinom koda je faktor polinoma x51 koji ima sljedeu faktorizaciju:

Tablica 0.3: Faktorizacije nekih polinoma oblika x 1 u aritmetici modulo 2


n

aritmetika

faktorizacija u aritmetici modulo 2

x1 1

x +1

x2 1

( x + 1) 2

x3 1

( x + 1)( x 2 + x + 1)

x5 1

( x + 1)( x 4 + x 3 + x 2 + x + 1)

x7 1

( x + 1)( x 3 + x + 1)( x3 + x 2 + 1)

x9 1

( x + 1)( x 2 + x + 1)( x 6 + x3 + 1)

11

x11 1

( x + 1)( x10 + x 9 + x8 + x 7 + x 6 + x 5 + x 4 + x 3 + x 2 + x + 1)

13

x13 1

( x + 1)( x12 + x11 + x10 + x 9 + x8 + x 7 + x 6 + x 5 + x 4 + x 3 + x 2 + x + 1)

15

x15 1

( x + 1)( x 2 + x + 1)( x 4 + x + 1)( x 4 + x 3 + 1)( x 4 + x 3 + x 2 + x + 1)

17

x17 1

( x + 1)( x 8 + x 5 + x 4 + x 3 + 1)( x 8 + x 7 + x 6 + x 4 + x 2 + x + 1)

19

x19 1

( x + 1)( x18 + x17 + x16 + ... + x 4 + x3 + x 2 + x + 1)

1.4.2. Paritetna matrica


Generirajuu matricu ciklikog koda G nije mogue svesti u standardni oblik, pa nije mogue niti
jednostavno odrediti paritetnu matricu H. Meutim, paritetnu matricu je mogue konstruirati
koristei polinom za provjeru pariteta ciklikog koda.

x n 1 = g ( x)h( x).
h( x) se zove polinom za provjeru pariteta ciklikog koda K.

DEFINICIJA

POLINOM ZA PROVJERU PARITETA: Neka je K cikliki kd duljine n i dimenzije k [n, k ]


s generirajuim polinomom g ( x) . Neka je h( x) polinom koji zadovoljava jednadbu:

Budui da je g(x) polinom stupnja r, onda je h(x) polinom stupnja k=nr. Polinom za provjeru
pariteta ima sljedee vano svojstvo.

Bilo koji polinom c(x) koda K zadovoljava jednakost c( x)h( x ) = 0 .

Ako je polinom za provjeru pariteta


39

DEFINICIJA

PARITETNA MATRICA CIKLIKOG KODA: Neka je K Rn cikliki kd duljine n i


dimenzije k [n, k ] s generirajuim polinomom g ( x) i polinomom za provjeru pariteta h(x).

h( x) = hk x k + ... + h2 x 2 + h1 x + h0 ,

onda je paritetna matrica koda K

H=

h0

h1

h2

hk 1

h0

h1

h2

h0

h1

hk

hk 1

hk

hk 1

hk

0 .


       
0

h2

h0

h1

h2

hk 1

hk

Primjer: cikliki kd [7,4,3]

Konstruirajmo cikliki kd s duljinom kodne rijei n = 7. Generirajui polinom mora biti stupnja
r < 7 te mora faktorizirati polinom x71. Iz tablice faktorizacija (Tablica 0.3) vidimo daje
faktorizacija ovog polinoma:
x 7 1 = ( x + 1)( x 3 + x + 1)( x3 + x 2 + 1) .

Na primjer, za generirajui polinom moemo odabrati drugi faktor, tj. g ( x) = x 3 + x + 1 . Budui


da je stupanj odabranog generirajueg polinoma r=3, dobivamo da je dimenzija koda k = nr = 4.
Zakljuujemo da e generirajua matrica imati 4 retka i 7 stupaca, dok e paritetna matrica imati
3 retka i 7 stupaca. Koristei se svojstvima o strukturi generirajue i paritetne matrice dobivamo:

G=

1
1
0
0

0
1
1
0

1
0
1
1

0
1
0
1

0
0
1
0

0
0
0

H=

1 1 0 1 0 0

1 1 1 0 1 0 .

0 1 1 1 0 1

Mnoenjem matrica dobivamo nul-matricu GHT = 0, to potvruje da smo konstruirali ispravne


matrice. Jedina stvar koja nedostaje je distanca dobivenog koda. Budui da je dimenzija koda 4,
nije teko ispisati sve kodne rijei i pronai onu s najmanjom teinom. Kodne rijei koje daje
matrica G su:
0001101 0011010 0110100 1101000 1010001 0100011 1000110 ,
0010111 0101110 1011100 0111001 1110010 1100101 1001011 ,

000000, 1111111.
Rijei su razdvojene u dva podskupa dobivena posmicanjem kodnih rijei 1101000 i 1011100, te
kodne rijei 0000000 i 1111111. Potvrdili smo da se cikliki posmak bilo koje rijei opet daje
kodnu rije istog koda. Najmanja teina svih kodnih rijei razliitih od 0 je 3, to je ujedno i
teina svih kodnih rijei nastalih posmicanjem rijei 1101000. Stoga je distanca ovog koda 3 pa
je konstruiran kd [7,4,3]. Iz svojstava o distanci koda zakljuujemo da ovaj kd moe otkriti
dvostruku pogreku i ispraviti jednostruku pogreku.

1.4.3. Implementacija kodera i dekodera ciklikog koda


Kodne rijei ostvarene mnoenjem poruke s matricom G imat e strukturu u kojoj su bitovi
poruke ispremijeani sa zalihosnim paritetnim bitovima. Kae se da G daje nesistematian kd.
40

U praksi je iznimno vano jednostavno izdvojiti podatkovne bite, a ujedno zadrati svu
funkcionalnost ciklikog koda.
Najee se koristi algoritam kodiranja koji proizvodi kd u kojem se redom (od najznaajnijih
do najmanje znaajnih pozicija) prvo nalaze bitovi poruke, a onda zatitni bitovi. Dio kodne rije i
u kojem se nalaze zatitni bitovi naziva se ciklika provjera zalihosti (engl. cyclic redundancy
check - CRC) - Slika 0.16. U nastavku emo ovu vrstu ciklikog koda zvati i CRC kd.

Slika 0.16: Struktura kodne rijei sistematinog ciklikog koda

Ideja algoritma je sljedea: Neka je d ( x ) polinom koji opisuje kodiranu poruku. Neka je g ( x)
generirajui polinom stupnja r. Polinom d ( x ) moe se pomnoiti s x r i podijeliti s g(x) u
aritmetici modulo 2, nakon ega se dobiva polinom q( x ) i ostatak r ( x) :
d ( x ) x r = g ( x )q( x ) + r ( x).
r ( x) je polinom stupnja manjeg od r. Budui da je q( x) Rn , slijedi da je g ( x )q( x) zasigurno
neka kodna rije ciklikog koda. Ta kodna rije je u aritmetici modulo 2 jednaka:
c( x) = g ( x )q( x ) = d ( x ) x r + r ( x ),
gdje je
r ( x) = d ( x ) x r mod[ g ( x)].
Dakle, dobivena ciklika kodna rije sastoji se od umnoka d ( x ) x r i polinoma r(x). d(x)
predstavlja ulaznu kodiranu poruku i polinom je stupnja nr1. Mnoenjem s x r pomaknut je
ulijevo za r pozicija tako da u kodnoj rijei c(x) najznaajnijih nr pozicija zauzimaju upravo
bitovi kodirane poruke.
Polinom r(x) je stupnja manjeg od r, te u ukupnoj kodnoj rijei zauzima r najmanje znaajnih
bitova kodne rijei - Slika 0.17. Polinom r(x) predstavlja cikliku redundantnu zatitu kodne
rijei.

Slika 0.17: Struktura polinoma kodne rijei c(x)=d(x)xr + r(x)

41

Dakle, da bismo formirali kodnu rije za ulaznu poruku d(x), sve to treba napraviti je izraunati
ostatak dijeljenja d ( x ) x r s generirajuim polinomom g ( x) i ostatak zdesna dodati samoj
kodiranoj poruci.
U praksi se dijeljenje polinoma pojednostavljuje na nain da se promatraju samo binarni
koeficijenti polinoma. Potrebno je jedino imati u vidu pravilo orijentacije pisanja binarnog
ekvivalenta. Dogovorno uzimamo da prvi bit slijeva ima najveu teinu, a prvi zdesna najmanju
teinu. Stoga su binarni brojevi ekvivalentni polinomima na sljedei nain:
g ( x ) = g r x r + g r 1 x r 1 +

+ g 2 x 2 + g1 x + g 0 [ g r g r 1

g 2 g1 g 0 ].

Primjer:Formiranje kodne rijei ciklikog koda [7,4]

Promatrajmo cikliki kd [7,4], s generirajuim polinomom g ( x ) = x3 + x + 1. Stupanj


generirajueg polinoma je r = 3 , a k = 4 . Ulazna kodna rije je 1010, tj. polinom d ( x ) = x 4 + x 2 .
Izvrimo dijeljenje polinoma d ( x ) x3 = x 6 + x 4 polinomom g ( x) koristei samo binarne
koeficijente polinoma kako je prikazano na slici (Slika 0.18).

Slika 0.18: Pojednostavljenje dijeljenja polinoma x6+x4 polinomom x3+x+1

Primijetimo da u svakom koraku vodei (lijevi) bit predstavlja kvocijent dijeljenja (podebljani
bitovi), te da je stupanj ostatka uvijek za (najmanje) jedan manji od polinoma kojeg dijelimo.
Vodei (podebljani) bit mnoi generirajui polinom i oduzimamo ga od trenutno dijeljenog
polinoma. Nastaje ostatak koji je za jedan stupanj manji. U svakom koraku posuujemo i nulu
(strelica) iz poetnog polinoma. Dijeljenje obavljamo bez preskakanja, dakle i onda kada g ( x) u
polinom "ulazi" nula puta.
Ostatak pri dijeljenu je 011, odnosno polinom x + 1 , a to je upravo zalihosni (CRC) dio kodne
rijei, pa je kodna rije ciklikog koda:
1 0 1 0 0 1 1.

Postupak dijeljenja polinoma opisan u prethodnom primjeru moe se vrlo jednostavno


implementirati pomou logikih sklopova i bistabila. Promatrajmo vodea tri bita dijeljenog
polinoma u svakom koraku (Slika 0.19). Oznaimo ih redom R3, R2 i R1. Oni su posebno
naglaeni u desnom dijelu slike.
42

Moemo primijetiti vrlo jednostavan algoritam dobivanja trojke u sljedeem koraku iz trojke u
prethodnom koraku. Naime, vidimo da R3 u svakom koraku mnoi bitove generirajueg polinoma,
pa se od dijeljenog polinoma oduzima ili 0000 ili sam generirajui polinom g(x). Budui da se
oduzimanjem uvijek gubi vodei lan (R3 R3g3 = 0), trojku u sljedeem koraku uvijek
dobivamo prema sljedeim izrazima:
(1) R3

= R2 ( R3 g 2 )

(2) R2

= R1 ( R3 g1 )

(3) R1

= ulazni bit ( R3 g0 ),

gdje je sljedei bit d 0 = 0 ili 0 nastala mnoenjem d ( x ) s x 3 , a operatorom je naglaeno


zbrajanje u aritmetici modulo 2 ekskluzivno ili.

d3

d2 d1 d0

g (x )

g(x)

g (x )

g(x)

g3 g2 g1 g0

R3 R2 R 1

0 1

1
x

g2 g1 g0
1

d0

g2 g1 g0
0

g2 g1 g0
0

g2 g1 g0
0

Slika 0.19: Algoritam izraunavanja ostatka pri dijeljenju polinoma

Identian postupak se ponavlja u svim koracima sve dok se ne dobije konani ostatak. Zbog toga
je mogue izgraditi sklop u kojem je svakom R1 , R2 i R3 pridruen jedan bistabli. Sklop je
shematski prikazan na slici (Slika 0.20).

Slika 0.20: Shematski prikaz sklopa za izraunavanje CRC zatitnog dijela


koda [7, 4] s generirajuim polinomom g(x)=x3+x+1

Kao to se moe vidjeti, ispred bistabila R1 i R2 je umetnut sklop koji vri operaciju ekskluzivnog
ili izmeu koeficijenta gi i prethodnog bistabila, odnosno ulaza. Ekskluzivni ili () odgovara
zbrajanju u aritmetici modulo 2. Na ulaz bistabila R1 dovodi se rezultat operacije ekskluzivnog ili

43

izmeu ulaznog bita i trenutnog stanja bistabila R3. To odgovara operaciji R1= ulazni bit R3g0,
gdje je g0=1.
Jednako tako, na ulaz bistabila R2 dovodi se rezultat operacije ekskluzivnog ili izmeu trenutnog
stanja bistabila R1 i trenutnog stanja bistabila R3. To odgovara operaciji R2= R1 R3 g1, gdje je
g1=1.
Na ulaz bistabila R3 se dovodi jedino trenutno stanje registra R2. Razlog tome je u injenici da je
g2=0, pa je izraz R3 = R2 R3g2 = R2. Zakljuujemo da se ekskluzivni ili vri samo ispred onih
registara iji je odgovarajui koeficijent generirajueg polinom jednak 1. Stoga ovaj sklop
obavlja operaciju koja je opisana slikom (Slika 0.19). Primijetimo jo da vodei koeficijent
polinoma nema vlastiti sklop za ekskluzivni ili.
Postupak dobivanja ostatka r(x) je da se na poetku u registre R1, R2 i R3 upie 0. Nakon toga se u
svakom koraku (taktu) na ulaz dovode redom bitovi poruke d3, d2, d1 i d0, a nakon toga slijede tri
nule. Potrebno je naglasiti da se u jednom koraku (taktu) odvijaju sve tri opisane operacije
odjednom.
U opem sluaju sklop za generiranje zatitnog dijela ciklikog koda s generirajuim polinomom
g ( x ) = g r x r + + g1 x + g 0 izgleda kako je prikazano na slici (Slika 0.21). I u ovom sluaju
koeficijent g r nema vlastiti sklop za ekskluzivni ili. Zatitni dio se formira u bistabilima
Rr , , R1 na nain da se na poetku u njih upiu nule, a nakon toga se na ulaz dovedu svi bitovi
poruke redom d k 1 , , d0 . Nakon njih se na ulaz dovodi tono r bitova 0, nakon ega se u
Rr , , R1 nalazi zatitni dio koda.

Slika 0.21: Shematski prikaz sklopa za izraunavanje CRC zatitnog dijela

Postavlja se pitanje kako otkriti i eventualno ispraviti pogreku primljene ciklike kodne rijei.
Promatrajmo ponovno kd s generirajuim polinomom g ( x ) = x3 + x + 1. Ranije smo utvrdili da
je distanca koda K=[7,4] d(K)=3, tako da ovaj kd moe ispraviti jednostruku pogreku.
Ukoliko dio primljene kodne rijei koji odgovara samoj kodiranoj poruci (prva etiri bita) u
dekoderu ponovno propustimo kroz sklop za kodiranje, ostatak mora biti jednak zatitnom dijelu
ako je poruka primljena bez pogreke. No, postavlja se pitanje kako izraunati sindrom i na
osnovu njega odrediti poziciju pogreke.
Cilj je sklop za kodiranje iskoristiti i za dekodiranje. Stoga je potrebno pronai nain
izraunavanja sindroma istim sklopom kao na slici (Slika 0.21). U tu svrhu emo definirati
polinom pogreke e( x) , koji ima isti smisao kao i vektor pogreke. Primljena kodna rije y ( x) se
moe zapisati kao poslana kodna rije c( x) kojoj je dodan polinom pogreke e( x) :

y ( x) = c ( x) + e( x ).
Svi polinomi y(x) koji imaju isti e(x) moraju imati isti sindrom pri dekodiranju. Iako bi se
sindrom mogao dobiti mnoenjem paritetnim polinomom h(x), ovdje emo upotrijebiti neto
drugaiji nain raunanja. Promotrimo funkciju
44

S [ y ( x )] = x r y ( x ) mod g ( x),

( 0.1 )

gdje je r stupanj generirajueg polinoma. Evidentno je sljedee:


S [ y ( x )] = x r y ( x) mod g ( x)
= x r [c( x) + e( x)] mod g ( x)
= x r c( x) mod g ( x) + x r e( x) mod g ( x)
= S[c( x )] + S [e( x)].
Pokuajmo izraunati S[c(x)]. Budui da znamo da se svaka kodna rije moe napisati kao
umnoak generirajueg polinoma i polinoma q( x) Rn slijedi:
c ( x) =
c( x) x

g ( x) q( x) | x r

g ( x ) q( x) x .

Budui da su obje strane djeljive s g ( x) bez ostatka, zasigurno vrijedi:


S [c ( x)] = x r c ( x) mod g ( x) = 0.
Tako dolazimo do zakljuka
S [ y ( x )] = S[c( x )] + S [e( x)] = S[e( x )],
tj. da S[y(x)] za sve kodne rijei s istim vektorom pogreke e(x) daje isti rezultat. Tako bez
provjere za cijeli standardni niz moemo napisati tablicu pridruivanja - Tablica 0.4.
Tablica 0.4: Sindromi koda [7, 4,3]

e( x)

S[e(x)]

x +1

x2 + x

x2

x2 + x +1

x3

x2 + 1

x4

x5

x6

x2

Kao to vidimo, razliiti polinomi pogreke e(x) generiraju razliite vrijednosti S[y(x)], pa je
S[y(x)] definiran izrazom ( 0.1 ) zapravo sindrom primljene kodne rijei y ( x) koda [7, 4] .
Treba uoiti da je izraz koji definira nain raunanja sindroma

S [ y ( x )] = x r y ( x ) mod g ( x )
identian izrazu za dobivanje zalihosnog dijela ciklike kodne rijei. Drugim rijeima, ukoliko u
funkciju sindroma S(x) uvrstimo polinom ulazne kodirane poruke d(x), dobit emo zalihosni dio
kodne rijei r(x). Dakle, sindrom se rauna na jednak nain kao i zatitni dio ciklike kodne rijei.
Stoga je logino iskoristiti isti sklop i za kodiranje i za dekodiranje.

45

Kako bi sklop mogao ispraviti pogreku na nain da odredi poziciju pogreke, potrebno je dodati
dodatne sklopove. Promotrimo ponovno primjer ciklikog koda K=[7,4,3]. Ukoliko je dolo do
pogreke na treem bitu kodne rijei, tj. ukoliko je vektor pogreke e(x) = x3, sindrom primljene
kodne rijei y(x) e biti S[y(x)] = S[e(x)]= x2+1. U skladu s tim zakljuujemo da e nakon
proputanja primljene kodne rijei y(x) kroz sklop na slici (Slika 0.20), u registrima R3, R2, R1
ostati bitovi redom 1 0 1. Dakle, ukoliko doe do pogreke na treem bitu kodne rijei, logiki
izraz:
q = R3 R2 R1

mora dati logiku jedinicu. U skladu s tim na sklop kodera (Slika 0.20) dodajemo dodatni sklop
za otkrivanje pogreke na treem bitu (Slika 0.22) i dobivamo dekoder. Jasno, ovakav dekoder je
nepotpun te ga je potrebno nadograditi sklopovima za otkrivanje jednostruke pogreke na drugim
bitovima, kao i sklopovima za otkrivanje viestrukih pogreki.

Slika 0.22: Shematski prikaz sklopa za izraunavanje sindroma

1.4.4. Cikliki kd na primjeru CRC-32


Cikliki kd u obliku u kojem je objanjen u prethodnom odjeljku ima vrlo iroku primjenu u
telekomunikacijama. U mreama utemeljenim na standardu Ethernet (standard IEEE 802.3)
koristi se CRC kd s oznakom IEEE 802.3 CRC-32, koji ima generirajui polinom:

g ( x ) = x32 + x 26 + x 23 + x 22 + x16 + x12 + x11 + x10 + x8 + x 7 + x5 + x 4 + x 2 + x + 1.


Budui da g ( x) ima stupanj 32, duljina zatitnog dijela kodne rijei je 32 , to stane u tono
etiri okteta okvira predvienog standardom IEEE 802.3 - Slika 0.23.

Slika 0.23: Struktura okvira prema standardu IEEE 802.3

Zatitni dio CRC se odnosi na dio okvira koji ne ukljuuje preambulu i SFD (oznaka poetka
okvira, engl. Start Frame Delimiter). Zbog ogranienja na veliinu okvira koju namee sam
standard, kodna rije ima duljinu od 512 bitova do najvie 12144 bita. Meutim, sam generiraju i
polinom faktorizira polinom x n 1 , gdje je n = 232 , pa kodna rije teoretski moe biti daleko
vea od 12144 bita.

46

Svaka pojedina duljina okvira zapravo odgovara posebnom ciklikom kodu, pa se stoga unutar
standarda Ethernet aktivno koristi 11633 razliitih cikli kih kodova s duljinama n [512,12144] .
Ovakvi kodovi se zovu skraeni cikliki kodovi (engl. shortened cyclic codes).
Odreivanje distance koda je mukotrpan zadatak. Numerikim eksperimentima provedenim u
sklopu niza istraivanja (npr. [8]) utvrene su sljedee distance ovih kodova - Tablica 0.5.
Tablica 0.5: Distance ciklikih kodova koritenih u standardu IEEE 802.3

duljina koda K - n

distanca d ( K )

3007 n 12144

301 n 3006

204 n 300

124 n 203

90 n 123

67 n 89

Dakle, CRC kd koji se koristi u lokalnim mreama Ethernet moe detektirati najmanje trostruku
pogreku bita jednog okvira te otkloniti jednostruku pogreku bita. No, CRC kd ima i svojstva
otklanjanja snopova pogreki bita.
Kada se unutar neke kodne rijei duljine n dogode pogreke unutar grupe od b susjednih bitova
rijei, onda se kae da se dogodio snop pogreki duljine b (engl. error burst). Dakle, snop
pogreki je niz bitova od prve do posljednje pogreke. Ukoliko su pogreke nastupile na poetku i
na kraju kodne rijei, onda se definira cikliki snop pogreki koji se dobije cikliki posmicanjem
kodne rijei.
U osnovi bilo koji cikliki kd s generirajuim polinomom stupnja r moe detektirati snop
pogreki duljine r ili manje. To znai da CRC-32 moe detektirati snop pogreki duljine 32 ili
manje. Osim ovoga, cikliki kd CRC-32 moe detektirati i dvostruke snopove pogreki duljine b.
Dvostruki snopovi pogreki duljine b se sastoje od dva snopa pogreki najvee duljine b.
Uoimo jednu vanu injenicu vezanu uz odnos kodera informacije i kodera kanala. Ako
razmatramo podatkovni sloj mree utemeljene na standardu Ethernet, onda uoavamo da
postupak formiranja cjelokupnog okvira odgovara funkciji koju u opem modelu
komunikacijskog sustava obavlja koder informacije. Zapravo, koder informacije kao poruku daje
cjelokupan ethernetski okvir u kojem jo nije izraunata ciklika zatita. Nakon toga, koder
kanala izraunava cikliku zatitu (CRC) i stavlja je na predvieno mjesto. Time cjelokupan
okvir postaje jedna kodna rije.
U opem sluaju koder kanala ne mora zatititi cjelokupnu poruku, nego samo onaj njen dio koji
je iz tehnikih razloga potrebno zatititi. Primjer je paket mrenog protokola IP (engl. Internet
Protocol). U zaglavlju paketa IP-a postoji 16-bitna zatita zaglavlja paketa, iako se kodnom rije i
smatra cjelokupan paket. Stoga u ovom sluaju koder kanala titi samo zaglavlje paketa.

1.5. Reference
[1]

Hamming, R.W., Error Detecting and Error Correcting Codes, Bell Systems Technical
Journal, vol. 26, pp. 147-160, April 1950.

47

[2]

R. Hill, A First Course in Coding Theory, Oxford University Press, ISBN: 0198538030,
SAD, 1990.

[3]

M. J. E. Golay, Notes on Digital Coding, Proceedings of IEEE, vol 37, pp. 657, 1949.

[4]

Gallager, R.G., Information Theory and Reliable Communication, John Wiley & Sons,
Inc., ISBN: W-471-29048-3, SAD, 1968.

[5]

Sinkovi, V., Informacija, simbolika, semantika, kolska knjiga Zagreb, ISBN: 953-030739-X, Zagreb, 1997.

[6]

T.R.N. Rao and E. Fujiwara, Error-Control Coding for Computer Systems, Prentice-Hall
International Editions, ISBN: 0-13-284068-5, New Jersy, 1989.

[7]

ANSI/IEEE Standard for Local Area Networks, Carrier sense multiple access with
collision detection (CSMA/CD) access method and physical layer specifications, 1984.

[8]

Fujiwara, T., Kasami, T., Lin, S., Error Detecting Capabilities of the Shortened Hamming
Codes Adopted for Error Detection in IEEE Standard 802.3, IEEE Transactions on
Communications, vol. 37, No. 9, pp. 986-989, September 1989.

48

You might also like