hamming-kód - eltecompalg.inf.elte.hu/~zslang/hkod3f.pdf · 2007. 5. 31. · hamming-korlátból...

22
2007. május 31. Hibajavító kódok 3. 1 Definíció. Az 1-hibajavító, perfekt lineáris kódot Hamming-kódnak nevezzük. F 2 fölötti vektorokkal foglalkozunk. Hamming-kód készítése: r egész szám (ellenırzı jegyek száma) n=2 r –1 a kódszavak hossza k=2 r –1–r a közleményszavak hossza A H (r×n)-es mátrix j-edik oszlopában a j 2-es számrendszerbeli alakjának jegyei szerepelnek. * 14. Példa: r=3 n=7 k=4 a [7,4] kód ellenırzı mátrixa: Hamming-kód = 1 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 H

Upload: others

Post on 21-Jan-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 1

Definíció.

Az 1-hibajavító, perfekt lineáris kódot Hamming-kódnak nevezzük.

F2 fölötti vektorokkal foglalkozunk.

Hamming-kód készítése:

r egész szám (ellenırzı jegyek száma)

n=2r–1 a kódszavak hossza

k=2r–1–r a közleményszavak hossza

A H (r×n)-es mátrix j-edik oszlopában a j 2-es számrendszerbeli alakjának jegyei szerepelnek. *

14. Példa:

r=3 n=7 k=4 a [7,4] kód ellenırzı mátrixa:

Hamming-kód

=

1111000

1100110

1010101

H

Page 2: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 2

9. tétel:

Az elıbbi szabállyal megadott kód Hamming-kód.Bizonyítás:

� A fenti * szabállyal megadott H mátrixban van három összefüggıoszlop, de bármely kettı lineárisan független. Így a kód minimális távolsága d=3. 1–hiba javító a kód.

� A Hamming-korlát teljesüléseMivel 1-hibajavító

A kódszavak hossza n=k+r:

Ezt behelyettesítve a Hamming-korlátba:

nnnK 2

10≤

+

rk=2r-1-r

( ) nrrrr rr

K 2212121

12

0

12 1212 ==−+=

−+

−⋅ −−−

rr

K−−= 122

Page 3: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 3

Beláttuk, hogy perfekt a kód:

a kódszavak körüli 1 sugarú gömbökben minden

lehetséges 2r–1 jegyő szó pontosan egyszer fordul elı.

A * szabállyal Hamming kódot adtunk meg.

Page 4: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 4

Példa.

Adjuk meg a 14. példabeli [7, 4] Hamming-kód H ellenırzı mátrixának ismeretében a kód (egyik) generátormátrixát. ______________________________________________________

Megfelelı S permutációs mátrixszal a kódunk H ellenırzımátrixa HS=(In–k, P) alakra hozható.

P = –P (mod 2).

A G=(PT, Ik)⋅ST mátrix a H-nak megfelelı generátormátrix:

az oszlopok (3,4)

transzpozíciójával

( )H G H SP

II P

P

IP P

T

kn k

k

⋅ = ⋅ ⋅

= ⋅

= + =− , 0

H =

1 0 1 0 1 0 1

0 1 1 0 0 1 1

0 0 0 1 1 1 1

=

1110100

1101010

1011001

1H

Page 5: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 5

A H1-nek megfelelı G1 mátrix (PT, Ik) alakú:

Ebbıl a transzpozíciót újra alkalmazva megkapjuk a keresett G mátrixot.

=

1001011

0101010

0011001

0000111

G

=

1000111

0100110

0010101

0001011

1G

=

1110100

1101010

1011001

1H

Page 6: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 6

Ha ezt a generátormátrixot alkalmazzuk a kódolásnál, mi lesz a (0 1 1 1) üzenet kódja?

A (0 1 1 1) vektort jobbról szorozzuk G-vel.

Az eredmény: (0 0 0 1 1 1 1)

=

1001011

0101010

0011001

0000111

G

Page 7: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 7

Hibajavítás Hamming-kóddal:

A [7,4] Hamming-kód esetén bT=(0001111) kódszó.

H⋅b=0=(0 0 0) T.

Tegyük fel, hogy az átvitel során egy hiba történt, mégpedig a 3. helyen.

Az eT=(0010000 ) a hibavektor, a (b+e)T=(0011111) vektor érkezik meg a csatornán.

H⋅(b+e)= (110)T

Ez a vektor a H mátrix 3. oszlopa, alulról olvasva éppen a 3 bináris alakja, rámutat arra, hogy a 3. pozícióban van a hiba.

=

1111000

1100110

1010101

H

Page 8: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 8

Tegyük fel, hogy az átvitel során egy hiba történt, mégpedig a 7. helyen.

e=(0000001) a hibavektor,

H⋅(b+e)=H ⋅(0 0 0 1 1 1)T = (1 1 1)T

Ez a 7 bináris értéke, ami azt mutatja, hogy a 7. jegy hibás.

Ezzel a módszerrel mindig megkapjuk a hiba helyét, feltéve, hogy legfeljebb 1 hiba történt.

H =

1 0 1 0 1 0 1

0 1 1 0 0 1 1

0 0 0 1 1 1 1

Page 9: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 9

Egynél több hiba esetén a kód nem mőködik helyesen.

Idınként nem ismeri fel a hibát, vagy rosszul javítja.

Ha olyan hiba lép fel, mely maga is kódszó, akkor

H⋅(b+e)=0 olyan mintha nem történt volna hiba.

Ha a hiba két 1-est tartalmaz (kéthiba), akkor a kód egyhibánaktekinti.

Page 10: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 10

16. példa.

[7,4] Hamming-kódnál feltételezve, hogy egynél több hiba nem lépett fel az átvitelnél, mi volt a továbbított kódvektor, ha 1. aT= (0 1 1 1 1 1 0) 2. bT= (0 0 1 0 1 1 0) érkezett.

______________________________________________1. H⋅a=(0 1 1)T.

A 6. hely hibás, (0 1 1 1 1 0 0)T volt a küldött szó.

2. H⋅b= (0 0 0)T. A kapott szó hibátlan.

=

1111000

1100110

1010101

H

Page 11: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 11

A Hamming-kód a kódelmélet hajnalán, az 1940-es évek végére született meg.

Több mint 10 évvel késıbb történt a hasonló hatékonyságú 2-hibajavítókódok kifejlesztése.

BCH-kódok:

R. C. Bose, D. K. Chaudhuri és A. Hocquenghem. A véges testek nagy szerepe.

A kételemő test (F2=T) feletti [n,k] kódokkal foglalkozunk. k a kód dimenziója, n a hossza, r =n–k az ellenırzı jegyek száma t-hibajavító kódot keresünk.Legyen n =k+r rögzített, minél kisebb r értékkel minél nagyobb k értéket

igyekszünk biztosítani.Más szavakkal Tn-ben keresünk minél nagyobb K alteret,amelynek elemei (a kódszavak) legalább 2t +1 távolságra vannak egymástól.

BCH-kód

Page 12: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 12

Megfelelı mérető H ellenırzı mátrixot készítünk. H-nak minél kevesebb sora legyen.

Elıször olyan Q (mxn-es) mátrixot készítünk, amelynek bármely 2t oszlopa lineárisan független és lehetıleg kevés sora van.

Másként: Q bármely legfeljebb t oszlopának összege legyen különbözı egymástól és ne legyen nulla vektor.

Ez a Q egy t-hibajavító kódot definiál, így Q a kód kvázi-paritásellenırzı mátrixa.

Ha Q sorai nem függetlenek, bizonyos sorokat –amelyek függnek a többitıl - elhagyhatunk, hogy a maradék sorok függetlenek legyenek.

(Ez nem változtat a mátrix hibajavítással kapcsolatos tulajdonságain.)

Page 13: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 13

2-hibajavító BCH-kód.

t=2. Legyen q ≥ 3 és n=2q–1.

Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q.

(Belátható, hogy r = 2q teljesül.)

Azonos n mellett a Hamming-kódhoz képest a 2-hibajavító BCH kódnál kétszer annyi ellenırzı jegyre van szükség.

Q kvázi-paritásellenırzı mátrix definiálása:

Q legyen (2q x n) mérető.

Elsı q sora legyen ugyanaz, mint a Hamming-kódnál, vagyis az oszlopok éppen Tq nemnulla elemei.

Most tekintsük Tq-t 2q elemő testként. Ennek a testnek, és a Tq vektortérnek az additív szerkezete megegyezik, ezért a testet is jelölhetjük Tq-val. Legyen αa (Tq*, ⋅) egyik generátoreleme.

(Tq*=Tq -{0}). Tq* elemei tehát αi (0 ≤ i ≤ 2q –2). Q felsı felében ezek az elemek állnak. A Q alsó felében levı oszlopok a Q felsı felében levıelemek köbei.

Page 14: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 14

Megmutatható, hogy a Q mátrix bármely legfeljebb 2 oszlopának összege más és más nemnulla vektor, így Q 2-hibajavító BCH-kód kvázi-paritásellenırzı mátrixa.

Q rangja éppen 2q, s így Q a kód paritásellenırzı mátrixa.

Definíció.

t=2 esetén legyen q≥3, n=2q-1, k=2q-2q-1. Tq-t 2q-elemő testnek tekintjük. α a (Tq*, ⋅ ) generátoreleme. Tq*

elemei αi (0 ≤ i ≤2q-2). Legyen Q a fenti mátrix. Belátható, hogy ez a Q mátrix egy 2-hibajavító lineáris kódot

definiál. Ezt a kódot 2-hibajavító BCH-kódnak nevezzük.

ααα

ααα=

......1

......1363

2

j

jQ

Page 15: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 15

17. példa. 2-hibajavító BCH-kód készítése.

Legyen q=4. A 24 =16 elemő testben keressük a nemnullaelemek multiplikatív csoportjának egyik generáló elemét.

Az f=x4+x+1 polinom gyökei megfelelnek. Legyen α az f gyöke.

A T4 vektortér egy bázisa 1, α, α2, α3, ezek lesznek most az egységvektorok. A többi hatvány koordinátáit a minimálpolinomból adódó α4= α+1 ismételt alkalmazásával kaphatjuk meg.

Az alábbi (8x15)-ös paritásellenırzı mátrixhoz jutunk.

111101111011110

101001010010100

110001100011000

100011000110001

...............................................................................

111101011001000

011110101100100

001111010110010

111010110010001

Page 16: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 16

t-hibajavító BCH-kód.

Legyen most n=2q–1, r ≤ tq.

A kód Q kvázi-paritásellenırzı mátrixa t darab q x n méretőblokkból áll.

A felsı blokk oszlopai Tq nemnulla elemei.

Az i-edik blokk oszlopai a felsı blokkbeli vektoroknak (mint a Tq test elemeinek) 2i–1-edik hatványai, i=2, 3, ..., t (harmadik, ötödik, hetedik, stb. hatványok).

Ha Q sorai összefüggık, akkor kiválasztunk közülük egy maximális független rendszert, ezek alkotják kódunk H paritásellenırzı mátrixát.

Page 17: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 17

Definíció.

Legyen q rögzített pozitív egész, amelyre 2q-1>qt, n=2q-1.Tq-t 2q -elemő testnek tekintjük. α a (Tq*, ⋅) generátoreleme.Legyen Q az a (tq x n) mérető mátrix, amelynek a j+1-edik

oszlopában egymás alatt rendre az alábbi t darab Tq-beli vektor áll: αj, α3j, α5j, ..., α(2t-1)j.

Belátható, hogy a Q (tq x n) mérető mátrix soraiból kiválasztva egy maximális összefüggı rendszert, a kapott H paritásellenırzımátrix t-hibajavító lineáris kódot határoz meg. Az ellenırzıjegyek száma r ≤ tq.

Ezt a kódot t-hibajavító BCH-kódnak nevezzük.

ααα

ααα

ααα

ααα

=

−−−LL

OMOMMM

LL

LL

LL

jttt

j

j

j

Q

)12(2412

5105

363

2

1

1

1

1

Page 18: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 18

Polinomkódok.

Legyen T=F2, és Tm[x] a T feletti legfeljebb m–1-edfokúpolinomok vektortere a szokásos mőveletekkel.

Ekkor az

megfeleltetés izomorfizmus Tm és Tm[x] között.

Azonosítsuk a Tk és Tn vektortereket a belılük a fenti izomorfizmussal létesített Tk[x], illetve Tn[x] vektorterekkel.

Definíció.

Legyen g ≠ 0 egy rögzített s-edfokú polinom T felett.

Legyen az A: Tk[x] → Tn[x] leképezés a g polinommal történıszorzás, azaz A minden legfeljebb k–1-edfokú f polinomhoz a gf polinomot rendeli hozzá: Af=gf.

Az így definiált lineáris kódot polinomkódnak, a g polinomot pedig a kód generáló polinomjának nevezzük.

1110110 ...... −

−− α++α+αααα mmm xxa

Page 19: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 19

Ha deg g < s , akkor minden kódszó végén s–deg g darab nulla áll, ami semmire sem használható.

Csak a deg g = s eset érdekes. Ekkor a kódszavak éppen g többszörösei (polinomszorosai).

Page 20: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 20

A Hamming-kód polinomkód.

Paritásellenırzı mátrixnak tekinthetı az r sorból és n=2r–1 oszlopból álló H=(1 α α2 ... αn-1) mátrix.

Legyen az

vektornak megfelelı polinom:

Az u vektor pontosan akkor kódszó, ha Hu=0 , azaz

Az U polinomnak gyöke a α, vagyis u pontosan akkor kódszó, ha az F2 feletti m

αminimálpolinom osztója U-nak. Emiatt a Hamming-

kód olyan polinomkód, amelynek a generáló polinomja g = mα

nn Tu ∈γγγ= − 110 ...

[ ]xTxxU nn

n ∈γ++γ+γ= −−

1110 ...

∑−

=

=αγ1

0

0n

j

jj

Page 21: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 21

A BCH-kódok is polinomkódok

Tekintsük a 2-hibajavító BCH-kódot.

Az elızıekhez hasonlóan adódik, hogy u pontosan akkor kódszó, ha m

αés is osztója az U polinomnak, s így a

generálópolinom α és α3 minimálpolinomjának a legkisebb közös többszöröse:

Hasonlóan kapjuk tetszıleges t esetre vonatkozólag:

Jelöljük αj F2 feletti minimálpolinomját mj-vel. A t-hibajavítóBCH-kód olyan polinomkód, amelynek a generáló polinomja

A kódban az ellenırzıjegyek száma éppen a gt generáló polinom foka. Az s=tq pontosan akkor teljesül, ha α α3 ... α2t-1

mindegyike q-adfokú F2 felett és semelyik kettınek sem ugyanaz a minimálpolinomja.

[ ]3,αα= mmg

[ ]1221 ,...,, −= tt mmmg

3αm

Page 22: Hamming-kód - ELTEcompalg.inf.elte.hu/~zslang/Hkod3f.pdf · 2007. 5. 31. · Hamming-korlátból adódik, hogy r ≥ 2q–1. A 2-hibajavító BCH kódnál r ≤ 2q. (Belátható,

2007. május 31. Hibajavító kódok 3. 22

Irodalomjegyzék

� G. Birkhoff-T. C. Bartee: A modern algebra a számítógéptudományban Mőszaki Könyvkiadó, 1974

� Demetrovics, Denev, Pavlov: A számítástudomány matematikai alapjai Tankönyvkiadó, Budapest, 1985

� Freud Róbert: Lineáris algebra ELTE Eötvös Kiadó, Budapest, 1996

� Gonda János: Bevezetı fejezetek a matematikába III. ELTE TTK, Bp. 1998

� Gyırfi László-Gyıri Sándor-Vajda István: Információ és kódelmélet Typotex Kiadó, 2000

� Jablonszkij, Lupanov: Diszkrét matematika a számítástudományban Mőszaki Könyvkiadó, 1980

� Járai Antal: Bevezetés a matematikába Eötvös Kiadó, Budapest, 2005