You are on page 1of 8

Hemingov kod

Hemingov kod (7, 4) je prikazan jo 1948g. u enonovom pionirskom radu. U tom radu
se opisuje ne samo pomenuti kod, ve itava klasa kodova ovog tipa i uvodi niz pojmova
koji se i danas koriste (Hemingovo rastojanje, ekvivalentnost kodova, sistematski
kodovi).
Heming je prikazao familiju kodova za otkrivanje (detekciju) i ispravljanje (korekciju)
jedne greke kod kojih sindrom, dobijen kao rezultat provjera na parnost izvrenih na
prijemu, u binarnoj notaciji pokazuje poziciju pogrenog bita, ako je dolo do jedne
greke.
U medicini sindrom predstavlja skup simptoma karakteristinih za neko oboljenje, dok je
ovdje to rezultat provjera na parnost izvrenih na prijemu koje pokazuju da li je dolo do
jedne greke i gdje je greka.
Heming najprije odreuje broj razliitih vrijednosti sindroma i zakljuuje da broj provjera
(n k) treba da zadovoljava nejednakost:

2 n k n + 1
jer postoji n pozicija u kodnoj rijei gdje bi se mogla desiti greka, kao i sluaj kada do
greke nije dolo.
Kontrolni biti mogli bi se na predaji dodati iza informacionih, na kraju kodne rijei. Poto
je Heming poao od ideje da binarno proitana vrijednost sindroma treba da pokazuje
poziciju pogrenog bita, kontrolni biti se ne stavljaju na poslednje mjesto, ve na mjesta
prema sledeem rasporedu:
c1 - prvi kontrolni bit treba postaviti na poziciju koja je definisana sa 20 = 1
c2 - drugi kontrolni bit treba postaviti na poziciju 21 = 2
c3 - trei kontrolni bit treba postaviti na poziciju 22 = 4, itd.
Ovi kontrolni biti vre provjere na parnost informacionih bita. Tako da c1 vri provjeru
parnosti onih informacionih bita ije pozicije kada se podijele sa 2 imaju ostatak 1. To e
biti sve neparne pozicije (3, 5, 7, ...).
Drugi kontrolni bit c2 vri provjere na parnost onih informacionih bita koji se nalaze na
pozicijama koje pri dijeljenju sa 22 = 4 imaju ostatak 2 i 3. Te pozicije su (3, 6, 7, 10, 11,
14, 15...).
Trei kontrolni bit c3 vri provjeru na parnost onih informacionih bita koji se nalaze na
pozicijama koje pri dijeljenju sa 23 = 8 imaju ostatak 4, 5, 6, 7. Te pozicije su (5, 6, 7, 12,
13, 14, 15...).

Primjer:
Hemingovim kodom (7, 4) kodovati sekvencu 1101.
Poto je n = 7, k = 4, (n k) = 3 imamo tri kontrolna bita i broj potrebnih provjera na
parnost mora zadovoljiti nejednakost:
2 n k n + 1

23 7 + 1 (tano)

Na osnovu prethodnog izlaganja najprije se odreuju pozicije informacionih i kontrolnih


bita.
pozicija

1 2 3 4 5 6 7
c1 c2 i1 c3 i2 i3 i4
tj.

pozicija

1 2 3 4 5 6 7
c1 c2 1 c3 1 0 1

Vrijednosti kontrolnih bita su:


c1 = i1 i2 i4 = 1 1 1 = 1 (ovaj bit provjerava parnost informacionih bita sa 3, 5, 7 pozicije)
c2 = i1 i3 i4 = 1 0 1 = 0 (ovaj bit provjerava parnost informacionih bita sa 3, 6, 7 pozicije)

c3 = i2 i3 i4 = 1 0 1 = 0 (ovaj bit provjerava parnost informacionih bita sa 5, 6, 7 pozicije)


Kodirana rije je sada:
pozicija

1 2 3 4 5 6 7
1 0 1 0 1 0 1
X1 X2 X3 X4 X5 X6 X7

Neka se pri prenosu dogodila greka na estoj poziciji, tj. neka je vektor greke:
e = [0 0 0 0 0 1 0]17 (1n)

Tj. ako se desi pri prenosu jedna greka, vektor greke, dimenzija 1 n , na svim
pozicijama ima 0 sem na poziciji na kojoj se dogodila greka.

Sekvenca na prijemu e biti:


Yi = X i ei tj.
Y = [1 0 1 0 1 0 1] + [0 0 0 0 0 1 0]
Y = [1 0 1 0 1 1 1]17
y1 y2 y3 y4 y5 y6 y7

Na prijemu se sada formiraju elementi sindroma (ima ih n k, u ovom sluaju 3)


S1 = Y1 Y3 Y5 Y7 = 1 1 1 1 = 0
S 2 = Y2 Y3 Y6 Y7 = 0 1 1 1 = 1
S 3 = Y4 Y5 Y6 Y7 = 0 1 1 1 = 1
Sindrom je sada S = {S3, S2, S1} = 110 to u binarnoj notaciji predstavlja broj 6,
zakljuuje se da se greka dogodila na estoj poziciji i ispravlja se.
Kao to se kod razmatranog primjera moe uoiti, ovaj kod moe da ispravlja
jednostruke greke.

Kodovi za detekciju i ispravljanje greke u matrinom obliku


Svaki vektor duine n bita oblikovan kombinacijom od k linearno nezavisnih osnovnih
vektora g1, g2, ..., gk je binarni (n, k) blok kod. U tom sluaju se kodna rije C moe na i
na sljedei nain:
C = iG

gdje je i informacioni vektor od k informacionih bita i = [ii ]1k a G generiua matrica


dimenzija k n
C 1 n = i1 k G k n

Ako se kontrolni biti (a njih ima (n - k)) stavljaju na poslednje mjesto generiua matrica
ima oblik:
G = [I k

P ]k n

gdje je Ik jedinina matrica dimenzije k k , a P je paritetna matrica dimenzija k (n k)


ije kolone pokazuju pozicije gdje se uzimaju provjere na parnost.

Primjer:
Kod sa jedonstrukim paritetom (tj. gdje smo imali samo jedan kontrolni bit postavljen na
kraju sekvence) c1 = i1 i2 ... ik
1 0 0 ... 0 1
0 1 0 ... 0 1

.
.

.
.
.
.

0 0 0 ... 1 1 kn

C = [i1 ... ik ]1k

Ovdje je paritetna matrica P dimenzije k 1


1
1

P = .

.
1
k 1

Primjer:
Repetitivni kod sa ponavljanjem tri bita, k = 1, n = 3

C = [i1

i1

i1 ]13 = i1 G G = [1 1 1]13 , a paritetna matrica P = [1 1]12

Primjer:
Pravougaoni kod (9, 4)
n = 9, k = 4, (n - k) = 5 pet kontrolnih bita, pet provjera na parnost
C 1 9 = i1 4 G 4 9

[i1

i2

i3

i1 i2 c1
i3 i4 c2
c3 c4 c5

i4

c1

c2

c3

c4

c5 ] = [i1

i2

i3

i4 ] [I 44

c1 - provjerava parnost i1 i i2
c2 - provjerava parnost i3 i i4
c3 - provjerava parnost i1 i i3
c4 - provjerava parnost i2 i i4
c5 - provjerava parnost i1, i2, i3 i i4

P45 ]

pa je paritetna matrica:

1
1
P=
0

0
0
1

1
0
1

0 1
1 1
0 1

1 1 45

a generiua:
1
0
G=
0

0
1
0

0
0
1

0
0
0

1
1
0

0
0
1

1
0
1

0 1
1 1
0 1

1 1 49

Primjer:
Hemingov kod (7, 4)
C 1 7 = i1 4 G 4 7

[c1

c2

i1

c3

i2

i3

i4 ]17 = [i1 i2

i3

i4 ]14 G47

Ako kontrolne bite c1, c2, c3 stavljamo na kraju onda se generiua matrica konstruie kao
i u prethodnim sluajevima.
Meutim, ako kontrolne bite postavljamo prema binarnom rasporedu onda kolone
paritetne matrice moramo postaviti na pozicije kontrolnih bita, tj:
1
1
G=
0

1
c1

1 1 0 0 0 0
0 0 1 1 0 0
1 0 1 0 1 0

1 0 1 0 0 1 47
c2 i1 c3 i2 i3 i4

c1 = i1 i2 i4
c2 = i1 i3 i4
c3 = i2 i3 i4

Na prijemu se provjera pariteta sprovodi na sljedei nain:

S = C HT
gdje je H kontrolna matrica datog koda koja se dobija kao (u sluaju da su kontrolni biti
postavljeni na posljednjem mjestu u kodnoj rijei):

H = PT

Im

( n k ) n

gdje je PT transponovana paritetna matrica, a Im jedinina matrica dimenzija


(n k) (n k) .
U sluaju da je C H T = 0 kodna rije je prenesena bez greke.
U sluaju greke je S 0 i tada moemo pisati:

S = Y H T = ( X + e) H T = 1
X2
H3T + e H T
=0

S = eHT
Slijedi da sindrom ne zavisi od predate kodne rijei ve samo od greke.
Da bi se odredio vektor greke potrebno je rijeiti ovu jednainu. Ovo se rjeava tako to
se provjerava koji se bit promjenio.

Primjer:
Sekvencu 1101 kodovati Hemingovim kodom (7, 4) i provjeriti kodnu rije na prijemu.
1
1
G=
0

1
c1

n=7
1 1 0 0 0 0

0 0 1 1 0 0
k=4
1 0 1 0 1 0

1 0 1 0 0 1 47 (n - k) = 3 kontrolna bita
c2 i1 c3 i2 i3 i4
1
1
P=
0

1
1
C = i G = [1 1 0 1]
0

1
0
1
1

0
1
1

1 43(tj .k ( nk ))

1 1 0 0 0 0
0 0 1 1 0 0
= [1 0 1 0 1 0 1]17
1 0 1 0 1 0

1 0 1 0 0 1 47

Provjera na prijemu:
S = C HT
Transponovana paritetna matrica je:
1 1 0 1
P = 1 0 1 1
0 1 1 1 34
i1 i2 i3 i4
T

Poto se kod Hemingovog koda kontrolni biti postavljaju prema binarnom rasporedu,
kontrolna matrica je:
1
H = 0
0
c1

S = C H T = [1

0 1

0
1
0
c2

1
1
0
i1

0
0
1
c3

1
0
1
i2

0
1
1
i3

0 1]17

S = [0 0 0]13 - nema greke pri prenosu.

1
1
1 37 (( nk )n )
i4

1
0

0
1

0
1

0
1
1
0
0
1
1

0
0
0

1 = [0
1

1
1 73

0 ]13

U sluaju da je dolo do greke na 5. poziciji:

Y = C + e = [1 0 1 0 1 0 1] + [0 0 0 0 1 0 0] = [1 0 1 0 0 0 1]
imaemo da je Y H T = S

[1

1]1 7

1
0

0
1

0
1

0
1
1
0
0
1
1

0
0
0

= [1
1
1

1
1 7 3

1]1 3

S = [1 0 1]13 - vrijednost sindroma ukazuje da je do greke dolo na 5. poziciji


(1012 = 510)

You might also like