KODE ZA ODKRIVANJE IN ODPRAVLJANJENAPAK
Stefko Miklavic
Univerza na Primorskem
MARS, Avgust 2008
1 / 24
Crtna koda - kontrolni bit
8 014966 336563
1·8+3·0+1·1+3·4+1·9+3·6+1·6+3·3+1·3+3·6+1·5+3·6 =107
107 mod 10 = 7
10− 7 = 3
6 / 24
Crtna koda - kontrolni bit
8 014966 336563
1·8+3·0+1·1+3·4+1·9+3·6+1·6+3·3+1·3+3·6+1·5+3·6 =107
107 mod 10 = 7
10− 7 = 3
6 / 24
Crtna koda - kontrolni bit
8 014966 336563
1·8+3·0+1·1+3·4+1·9+3·6+1·6+3·3+1·3+3·6+1·5+3·6 =107
107 mod 10 = 7
10− 7 = 3
6 / 24
Crtna koda - kontrolni bit
8 014966 336563
1·8+3·0+1·1+3·4+1·9+3·6+1·6+3·3+1·3+3·6+1·5+3·6 =107
107 mod 10 = 7
10− 7 = 3
6 / 24
Crtna koda - kontrolni bit
Vedno odkrije eno samo napako!
Dveh ali vec napak NE odkrije vedno!
Ene same napake NE ZNA popraviti!
Odvecnost (redundancy): 1 bit na 12 bitov!
7 / 24
Crtna koda - kontrolni bit
Vedno odkrije eno samo napako!
Dveh ali vec napak NE odkrije vedno!
Ene same napake NE ZNA popraviti!
Odvecnost (redundancy): 1 bit na 12 bitov!
7 / 24
Crtna koda - kontrolni bit
Vedno odkrije eno samo napako!
Dveh ali vec napak NE odkrije vedno!
Ene same napake NE ZNA popraviti!
Odvecnost (redundancy): 1 bit na 12 bitov!
7 / 24
Crtna koda - kontrolni bit
Vedno odkrije eno samo napako!
Dveh ali vec napak NE odkrije vedno!
Ene same napake NE ZNA popraviti!
Odvecnost (redundancy): 1 bit na 12 bitov!
7 / 24
Ponavljajoca koda (repetition code)
Recimo, da zelimo poslati sporocilo 1011.
Vsak bit ponovimo trikrat: 111 000 111 111.
Prejemnik vsako trojico bitov “dekodira” v bit, ki se v tejtrojici ponovi najveckrat.
8 / 24
Ponavljajoca koda (repetition code)
Recimo, da zelimo poslati sporocilo 1011.
Vsak bit ponovimo trikrat: 111 000 111 111.
Prejemnik vsako trojico bitov “dekodira” v bit, ki se v tejtrojici ponovi najveckrat.
8 / 24
Ponavljajoca koda (repetition code)
Recimo, da zelimo poslati sporocilo 1011.
Vsak bit ponovimo trikrat: 111 000 111 111.
Prejemnik vsako trojico bitov “dekodira” v bit, ki se v tejtrojici ponovi najveckrat.
8 / 24
Ponavljajoca koda (repetition code)
Vedno odkrije eno ali dve napaki!
Treh ali vec napak NE odkrije vedno!
Zna popraviti eno napako!
Ne zna popraviti dveh ali vec napak!
Odvecnost (redundancy): 2 bita na 1 bit!
9 / 24
Ponavljajoca koda (repetition code)
Vedno odkrije eno ali dve napaki!
Treh ali vec napak NE odkrije vedno!
Zna popraviti eno napako!
Ne zna popraviti dveh ali vec napak!
Odvecnost (redundancy): 2 bita na 1 bit!
9 / 24
Ponavljajoca koda (repetition code)
Vedno odkrije eno ali dve napaki!
Treh ali vec napak NE odkrije vedno!
Zna popraviti eno napako!
Ne zna popraviti dveh ali vec napak!
Odvecnost (redundancy): 2 bita na 1 bit!
9 / 24
Ponavljajoca koda (repetition code)
Vedno odkrije eno ali dve napaki!
Treh ali vec napak NE odkrije vedno!
Zna popraviti eno napako!
Ne zna popraviti dveh ali vec napak!
Odvecnost (redundancy): 2 bita na 1 bit!
9 / 24
Ponavljajoca koda (repetition code)
Vedno odkrije eno ali dve napaki!
Treh ali vec napak NE odkrije vedno!
Zna popraviti eno napako!
Ne zna popraviti dveh ali vec napak!
Odvecnost (redundancy): 2 bita na 1 bit!
9 / 24
Se en primer - Hammingova (7,4)-koda
Vedno odkrije eno ali dve napaki!
Treh ali vec napak NE odkrije vedno!
Zna popraviti eno napako!
Ne zna popraviti dveh ali vec napak!
Odvecnost (redundancy): 3 bite na 4 bite !
11 / 24
Se en primer - Hammingova (7,4)-koda
Vedno odkrije eno ali dve napaki!
Treh ali vec napak NE odkrije vedno!
Zna popraviti eno napako!
Ne zna popraviti dveh ali vec napak!
Odvecnost (redundancy): 3 bite na 4 bite !
11 / 24
Se en primer - Hammingova (7,4)-koda
Vedno odkrije eno ali dve napaki!
Treh ali vec napak NE odkrije vedno!
Zna popraviti eno napako!
Ne zna popraviti dveh ali vec napak!
Odvecnost (redundancy): 3 bite na 4 bite !
11 / 24
Se en primer - Hammingova (7,4)-koda
Vedno odkrije eno ali dve napaki!
Treh ali vec napak NE odkrije vedno!
Zna popraviti eno napako!
Ne zna popraviti dveh ali vec napak!
Odvecnost (redundancy): 3 bite na 4 bite !
11 / 24
Se en primer - Hammingova (7,4)-koda
Vedno odkrije eno ali dve napaki!
Treh ali vec napak NE odkrije vedno!
Zna popraviti eno napako!
Ne zna popraviti dveh ali vec napak!
Odvecnost (redundancy): 3 bite na 4 bite !
11 / 24
Hammingova (7,4) koda - malce drugace
Naj bo abcd sporocilo, ki ga hocemo poslati. Definirajmosedmerico (x1, x2, x3, x4, x5, x6, x7) nicel in enic takole:
x3 = a, x5 = b, x6 = c , x7 = d
x1 izberemo tako, da je x1 + x3 + x5 + x7 sodo stevilo.
x2 izberemo tako, da je x2 + x3 + x6 + x7 sodo stevilo.
x4 izberemo tako, da je x4 + x5 + x6 + x7 sodo stevilo.
Prejemniku posljemo sedmerico (x1, x2, x3, x4, x5, x6, x7).
12 / 24
Hammingova (7,4)-koda - malce drugace
Prejemnik prejme sedmerico (y1, y2, y3, y4, y5, y6, y7) nicel in enic.Predpostavimo, da je pri prenosu prislo do najvec ene napake.
α = y4 + y5 + y6 + y7 mod 2.
β = y2 + y3 + y6 + y7 mod 2.
γ = y1 + y3 + y5 + y7 mod 2.
a = αβγ(2)
a = 0 −→ ni napake!!!
a 6= 0 −→ bit ya je napacen!!!
13 / 24
Hammingova (7,4)-koda - malce drugace
Prejemnik prejme sedmerico (y1, y2, y3, y4, y5, y6, y7) nicel in enic.Predpostavimo, da je pri prenosu prislo do najvec ene napake.
α = y4 + y5 + y6 + y7 mod 2.
β = y2 + y3 + y6 + y7 mod 2.
γ = y1 + y3 + y5 + y7 mod 2.
a = αβγ(2)
a = 0 −→ ni napake!!!
a 6= 0 −→ bit ya je napacen!!!
13 / 24
Hammingova (7,4)-koda - malce drugace
Prejemnik prejme sedmerico (y1, y2, y3, y4, y5, y6, y7) nicel in enic.Predpostavimo, da je pri prenosu prislo do najvec ene napake.
α = y4 + y5 + y6 + y7 mod 2.
β = y2 + y3 + y6 + y7 mod 2.
γ = y1 + y3 + y5 + y7 mod 2.
a = αβγ(2)
a = 0 −→ ni napake!!!
a 6= 0 −→ bit ya je napacen!!!
13 / 24
Hammingova (7,4)-koda - malce drugace
Prejemnik prejme sedmerico (y1, y2, y3, y4, y5, y6, y7) nicel in enic.Predpostavimo, da je pri prenosu prislo do najvec ene napake.
α = y4 + y5 + y6 + y7 mod 2.
β = y2 + y3 + y6 + y7 mod 2.
γ = y1 + y3 + y5 + y7 mod 2.
a = αβγ(2)
a = 0 −→ ni napake!!!
a 6= 0 −→ bit ya je napacen!!!
13 / 24
Binarne kode - osnovne definicije
Naj bo n ∈ N in naj bo An mnozica vseh zaporedij sestavljenih iz 0in 1, ki imajo dolzino n.
Definicija
Koda C dolzine n je podmnozica v An.
Stevilo elementov kode C se imenuje velikost kode C .
Elementi mnozice An se imenujejo besede.
Elementi kode C se imenujejo kodne besede.
14 / 24
Binarne kode - osnovne definicije
Naj bo n ∈ N in naj bo An mnozica vseh zaporedij sestavljenih iz 0in 1, ki imajo dolzino n.
Definicija
Koda C dolzine n je podmnozica v An.
Stevilo elementov kode C se imenuje velikost kode C .
Elementi mnozice An se imenujejo besede.
Elementi kode C se imenujejo kodne besede.
14 / 24
Binarne kode - osnovne definicije
Naj bo n ∈ N in naj bo An mnozica vseh zaporedij sestavljenih iz 0in 1, ki imajo dolzino n.
Definicija
Koda C dolzine n je podmnozica v An.
Stevilo elementov kode C se imenuje velikost kode C .
Elementi mnozice An se imenujejo besede.
Elementi kode C se imenujejo kodne besede.
14 / 24
Binarne kode - osnovne definicije
Naj bo n ∈ N in naj bo An mnozica vseh zaporedij sestavljenih iz 0in 1, ki imajo dolzino n.
Definicija
Koda C dolzine n je podmnozica v An.
Stevilo elementov kode C se imenuje velikost kode C .
Elementi mnozice An se imenujejo besede.
Elementi kode C se imenujejo kodne besede.
14 / 24
Hammingova razdalja
Definicija
Za poljubni dve zaporedji x in y iz An definirajmo
dH(x, y) = stevilo mest, na katerih se x in y razlikujeta.
Stevilu dH(x, y) pravimo Hammingova razdalja zaporedij x in y.
Definicija
Minimalna razdalja kode C je najmanjse izmed stevil dH(x, y),kjer sta x in y razlicni kodni besedi kode C .
15 / 24
Dekodiranje
Recimo, da smo prejemniku poslali neko kodno besedo,prejemnik pa je prejel besedo y. V katero kodno besedo boprejemnik “dekodiral” besedo y?
Ce obstaja natanko ena kodna beseda x, za katero je
dH(x, y) < dH(z, y)
za vsako drugo kodno besedo z, potem bo prejemnik besedo ydekodiral v besedo x.
Ce take besede ni, potem bo prejemnik javil, da je prislo donapake.
16 / 24
Dekodiranje
Recimo, da smo prejemniku poslali neko kodno besedo,prejemnik pa je prejel besedo y. V katero kodno besedo boprejemnik “dekodiral” besedo y?
Ce obstaja natanko ena kodna beseda x, za katero je
dH(x, y) < dH(z, y)
za vsako drugo kodno besedo z, potem bo prejemnik besedo ydekodiral v besedo x.
Ce take besede ni, potem bo prejemnik javil, da je prislo donapake.
16 / 24
Dekodiranje
Recimo, da smo prejemniku poslali neko kodno besedo,prejemnik pa je prejel besedo y. V katero kodno besedo boprejemnik “dekodiral” besedo y?
Ce obstaja natanko ena kodna beseda x, za katero je
dH(x, y) < dH(z, y)
za vsako drugo kodno besedo z, potem bo prejemnik besedo ydekodiral v besedo x.
Ce take besede ni, potem bo prejemnik javil, da je prislo donapake.
16 / 24
Krogle
Definicija
Naj bo x ∈ An in naj bo r ∈ R+. Krogla s srediscem v x inradijem r je mnozica
Sr (x) = {y ∈ An | dH(x, y) ≤ r}.
17 / 24
Kode, ki popravijo e napak (e-error-correcting-codes)
Naj bo C koda dolzine n in naj bo e poljubno naravno stevilo.Potem koda C vedno poravi e napak natanko tedaj, ko je
Se(x) ∩ Se(y) = ∅
za poljubni razlicni kodni besedi x in y.
18 / 24
Popolne kode (perfect codes)
Definicija
Naj bo C koda, ki popravi e napak. Potem je C popolna, ce velja⋃x∈C
Se(x) = An.
Primer: Hammingova (7, 4)-koda
19 / 24
Linearne kode - primeri
Ponavljajoca se koda je linearna koda.
Hammingova (7, 4)-koda je linearna koda.
21 / 24
Linearne kode - primeri
Ponavljajoca se koda je linearna koda.
Hammingova (7, 4)-koda je linearna koda.
21 / 24
Hammingova teza
Definicija
Naj bo C linearna koda. Hammingova teza besede x jestevilo enic v zaporedju x. Oznaka: wH(X).
Minimalna teza kode C je najmanjsa teza nenicelne kodnebedsede kode C .
22 / 24
Hammingova teza
Definicija
Naj bo C linearna koda. Hammingova teza besede x jestevilo enic v zaporedju x. Oznaka: wH(X).
Minimalna teza kode C je najmanjsa teza nenicelne kodnebedsede kode C .
22 / 24
Hammingova teza
Izrek
Naj bo C linearna koda. Potem je minimalna teza kode C enakaminimalni razdalji kode C .
23 / 24