Kiegészítõ diák

Download Report

Transcript Kiegészítõ diák

1

Az információ mérése

m

pozitív egészre legyen

a

1 , …,

a m

különböző üzenetek halmaza.

Ha az

a i

üzenetet

k i

-szer fordul elő az adásban, akkor

a i gyakorisága k i

,

relatív gyakorisága

:

p i

k n i

,

p

1

,

p

2

,...,

p m m

-es az

üzenetek eloszlása.

2

A definíciókból nyilvánvaló, hogy

i m

  1

p i

1 .

az

a i

üzenet

egyedi információtartalma

:

I i

  log

r p i

, ahol

r

egy egynél nagyobb valós szám az

információ egysége.

r

= 2 esetén beszélünk bitekről.

Az üzenetek

átlagos információtartama

3

Általánosítva: egy

m

tagú eloszlás pozitív valós számokból álló

p

0 ,

p

1 , …,

p n

sorozat, amelyre

i m

  1

p i

 1 , ahol az

eloszlás entrópiája

H r

(

p

1

,...,

p m

)

 

i m

  1

p i

log

r p i

.

4

Tehát az átlagos információtartalom legfeljebb

log r m

bit.

Betűnkénti kódolás 5

Legyenek

A

,

B

nem üres halmazok a

kódolandó ábécé

, illetve a

kódoló ábécé

betűinek halmaza.

A megfelelő ábécéből képzett összes szó halmaza

A

+ , illetve

B

+ .

legalább 1 hosszú Ha megengedjük az úgynevezett „üres” szót is, akkor

A

* , illetve

B

* .

A betűnkénti kódolás tulajdonképpen egy  :

A

B

* függvény, amelyet kiterjesztünk egy  :

A *

B

* függvénnyé: injektív!

x

=

abc

A *

prefix szuffix infix Az üres szó és

x triviális prefix, infix, szuffix.

Kódfa

  111 ,   000 ,   101 ,

A

 {

a

,

b

,

c

},

B

 { 0 , 1 }.

a c b

6

7 Morse – ábécé

Felbontható (egyértelműen dekódolható, veszteségmentes) kódok

ha

φ

injektív, akkor ilyen

Prefix kód:

prefix mentes!

Vesszős kód:

a

vessző

olyan nemüres elem a kódszavak közül, amely minden kódszónak szuffixe, és egyetlen kódszónak sem prefixe, vagy infixe.

Egyenletes (fix hosszúságú) kód:

kódszavak hossza megegyezik.

Észrevétel:

egy betűnkénti kód pontosan akkor prefix, ha

8

a kódfának csak a levelei kódszavak.

Tétel (McMillan-egyenlőtlenség) 9

Legyen

A

= {

a

1 , …,

a n

} , |

B

| =

r

 2 és  :

A

B

+ injektív leképezés. Ha a  által meghatározott betűnkénti kódolás felbontható, és

l i = |

 (

a i

)|, akkor

i n

  1

r

l i

1 ,

és fordítva, ha

l

1

, …, l n

olyan pozitív egészek, hogy

i n

  1

r

l i

 1 , akkor létezik az

A

halmaz elemeinek a

B

elemeivel való olyan prefix kódolása, hogy az

a i

betű kódjának a hossza

l i .

Optimális kód 10

Az előbbi jelöléseket használva az

átlagos szóhosszúság

:

l

i n

  1

p i l i

.

Az

optimális kódról

beszélünk, ha egy felbontható betűnkénti kód átlagos szóhosszúsága minimális.

Létezik optimális kód ?

Ha egy tetszőleges felbontható kód átlagos szóhosszúsága

l

, akkor

p i l i

>

l

esetén a kód nem lehet optimális  elég csak az

l i

l/p i

eseteket vizsgálni  ilyen kódok véges sokan vannak.

Tétel (optimális kód konstrukciója)

Az előző tétel jelöléseivel, legyen n > 1.

Tekintsünk egy optimális prefix kódot és kódfáját, továbbá legyen a kódszavak hosszának maximuma

L

.

11

Ekkor

Továbbá még a csonka csúcsokból is

12

(5) egy optimális prefix kód kódfájában  nincs csonka csúcs, ha

r

n

mod(

r

 1 ), azaz

r

 2  ( (

n

 2 ) mod(

r

 1 )), ha egy csonka csúcs van, akkor annak

m

kifokára

m

n

mod(

r

 1 ), azaz

m

 2  ( (

n

 2 ) mod(

r

 1 )); trivi

13

14

akkor

Biz.

két betű kódját felcserélve

l

csökken éllel együtt átrakjuk a csonka csúcsra, akkor a kódhossz

L

-ről

t

+ 1-re változik, tehát az átlag csökken.

15

(3) Tfh, hogy van olyan csonka csúcs, amelyből csak 1 él indul.

0

0 0 1 2 16

(4) Tfh, van két csonka csúcs (2)  mindkettő az

L

– 1–edik szinten van az egyik csonka csúcshoz tartozó leveleket éllel együtt átrakjuk a másikra …

(5) Tfh,

n

levél van a kódfában töröljük az egyik csúcshoz tartalmazó összes levelet ha van csonka csúcs, azzal kezdjük mert +1 keletkezik is ha

t

levelet töröltünk, akkor

t

– 1-gyel csökken a levelek száma

17

…végül

s

lépés után csak a gyökér marad.

Ekkor azaz

Huffman-kód (példa): |A| = 9, r = 4.

eloszlás

4   9 (mod 3)  lesz csonka csúcs!

a: 0.20

a: 0.20

k: 0.45

l: 1.00

b: 0.19

b: 0.19

a: 0.20

c: 0.16

d: 0.11

e: 0.10

f: 0.09

g: 0.06

h: 0.05

i: 0.04

c: 0.16

b: 0.19

j: 0.15

c: 0.16

l

d: 0.11

k a

e: 0.10

d e

f: 0.09

Mennyit kell összefogni?

m

 2 + (7 mod (3)) 

m

= 2 + 1.

g f h j b i c

18

(7) Helyettesítsük az

a k

betű kódját

m

kódszóval, úgy hogy a a levelek száma

19

prefix tulajdonság megmaradjon. Ekkor a kódolandó ábácé nőtt

m

– 1 betűvel.

A kapott kódot jelöljük

φ

–vel.

Indirekte tfh, az állítás nem igaz, és legyen

φ *

a

Az általánosság megsértése nélkül feltehetjük, hogy Konstrukció + (5) 

φ

és

φ *

kódfájában egyszerre van csonka csúcs, és ha van, akkor a kifoka ugyanannyi mindkét kódolásnál:

m

, ha nincs, akkor

m

=

r

.

φ *

optimális + (1), (2)  az

m

db legkisebb valószínűséghez tartozó kódszó

20

a legmagasabb szinten van a kódfában, és ugyanezen szinten vannak azok a kódszavak, amelyek a csonka csúcshoz tartoznak.

Azonos szinten lévő kódszavak cseréje nem változtatja meg az átlag kódhosszt  feltehetjük, hogy mindkét kódfában

21

az

m

db legkisebb valószínűségű kódszóhoz tartozó levél ugyanahhoz a csúcshoz tartozik.

Hibakorlátozó kódolás Példák

Paritásbit Ismétléses kód A hibakorlátozó kódok elméleti vizsgálata során fel szokás tenni, hogy nincsenek elveszett bitek, tehát ugyanannyi bit érkezik, mint amennyit elküldtünk.

Fontos feltétel továbbá, hogy egyenletes kódról van szó, tehát minden kódszó egyforma hosszú

.

22

Def.

Egy kódot

t-hibajelzőnek

nevezünk, ha minden olyan esetben jelez, ha a vett kódszó legfeljebb

t

helyen változik meg.

Def.

A kód

pontosan t-hibajelző

, ha hibajelző, azaz van olyan

t t

-hibajelző, de nem + 1 hiba, amelyet a kód nem jelez.

t

+ 1

Kódok távolsága és súlya 23

Legyen

u

,

v

a kódábécé két szava. Ekkor

d

(

u

,

v

) a két szó

Hamming-távolsága

, az azonos pozícióban lévő különböző jegyek száma.

Általánosítva a

C

kódhalmazra,

d

(

C

) a

kód távolsága

, legalább 2 elem esetén az összes kódszó-pár távolságának minimuma.

A Hamming-távolság rendelkezik a következő tulajdonságokkal:

Ha

A

kódábécé Abel-csoport, akkor legyen az

u

kódszó

Hamming-súlya w

(

u

), a nullától különböző jegyek száma

u

-ban.

Az előbbiekhez hasonlóan

w

(

C

) jelenti a

kód súlyát

, azaz a nem nulla kódszavak súlyának minimumát.

Észrevételek

d

(

u

,

v

) =

w

(

u

v

) ,

w

(

u

)

= d

(

u

, 0).

Csoport kódról

beszélünk, ha

C

A n

, azaz ha

C

is Abel-csoport. Ekkor

d

(

C

) =

w

(

C

).

24

Észrevételek

A fentebb bevezetett fogalmakkal: egy kód akkor és csak akkor

t

-hibajelző, ha

t

<

d

, és csak akkor pontosan

t

-hibajelző, ha

t

=

d

1

.

paritásbites kód

: a kódszavak legalább 1 bitben különböznek  ha az eltérés pont 1 bit két közleményszóban  a paritásbit különbözik  Hamming-távolság 2, ha az eltérés pont 2 bit két közleményszóban  a paritásbit ugyanaz ha Hamming-távolság 2 

25

pontosan 1-hibajelző.

Minimális távolságú dekódolás hibát észleltünk

: nem létező kódszót kaptunk

feladat

: a hibás kódszóhoz keressük meg a „jót”

döntési függvény:

pontosan egy kódszót rendel a hibás szóhoz

26 döntési hiba:

nem a jó kódszót rendeli hozzá

cél

: hibalehetőség a lehető legkisebb legyen Önkényesen feltételezzük, hogy a kapott kódszóban több a jó bit, mint a hibás, még akkor is, ha ez sajnos a valóságban nem mindig teljesül, tehát azt várjuk a döntési függvénytől, hogy a kapott, esetleg hibás szóhoz azt a kódszót rendelje, amelynek a tőle vett távolsága minimális.

Minimális távolságú dekódolás

Mi van, ha több ilyen kódszó is van?

27

Adunk egy algoritmust, amely „következetesen” választ egy kódszót, vagy nem döntünk, csak jelezzük a hibát.

Def.

Egy kódot

t-hibajavítónak

nevezünk, ha minden olyan esetben helyesen javít, amikor a vett kódszó legfeljebb

t

helyen változik meg.

Def.

A kód

pontosan t-hibajavító

, ha hibajavító, azaz van olyan helytelenül javít.

t t

-hibajavító, de nem

t

+ 1 + 1 hiba, amelyet a kód nem javít, vagy Ha minimális hosszúságú dekódolással dolgozunk, akkor a

d

távolságú kód minden

t

d

2 esetén

t

-hibajavító, és ekkor pontosan

28

t

 

d

2 1   hibajavító.

Ismétléses kód

Kódszó:

a

1

a

2 

a n

Duplázás:

a

1

a

2 

a n

a

1

a

2 

a n a

1

a

2 

a n

.

1-hibajelző 2-hibajelző és 1-hibajavító Triplázás:

a

1

a

2 

a n

a

1

a

2 

a n a

1

a

2 

a n a

1

a

2 

a n

.

29

Kétdimenziós paritásellenőrzés

m

darab

n

-bites üzenet paritásbitek páratlanra

30

paritásbitek párosra 1-hibajavító kódolás.

Def.

Legyen

A

injektív, Im(

φ

) = és

C S

nem üres véges halmaz, 

S n

. Ekkor

C

egy

n

> 0 egész,

blokk-kód

(

n

,

M

,

d

) S ahol |

C

| =

M

és

d

=

d

(

C

).

φ

:

A

S

+ jelöléssel,

Def.

Ha

S

Abel-csoport, és művelettel, akkor

C csoportkód

.

C

S n

a komponensenkénti

S

-beli

Def.

k

Ha

S n

egyben egy test feletti vektortér, és -dimenziós altere (k  0 egész), akkor a kód

lineáris

C

ennek egy . Jel.: [

n

,

k

,

d

]

q

, ahol

q

a test elemszáma.

Def.

s n

Ha [

n

, – 1

s

0

s

1 …

s n k

– 2 ,

d

]

q

kódban bármely

s

0

s

1 …

s n

is eleme a kódnak, akkor – 2

s n

– 1

C ciklikus kód.

kódszó esetén

31

Hamming-korlát

q

elemű ábácé és

n

hosszú kódszavak esetén, ha

C t

-hibajavító, akkor  két kódszóra a tőlük legfeljebb

t

távolságra lévő szavak halmazai diszjunktak

32

Mivel egy kódszótól pontosan

j

távolságra pontosan  

j n

  

q

 1 

j

szó van, kapjuk, hogy

C j t

  0  

j n

  

q

 1 

j

q n

.

Egyenlőség esetén

tökéletes kód.

Singleton-korlát

Ha

q

elemű ábácé és

n

hosszú szavaiból álló

C

kód távolsága

d

, akkor  kódszóból

d

– 1 betűt ( ugyanarról a

d

– 1 helyről) elhagyva a kódszavak még mindig különböznek, de csak

n

d

+ 1 hosszúak 

C

q n

d

 1

33

mindkét oldallogaritmusát véve

d

n

 1 log

q C

.

Lineáris kód esetén a Singleton-korlát alakja:

k

n

d

+ 1.

34

Egyenlőség esetén

maximális távolságú szeparábilis kód

, ekkor

C

q k

, ahol

k

=

n

d

+ 1.

Miért szeparábilis?

 rögzített

d

– 1 =

n

k

helyen álló betűket elhagyva

q k

különböző szó marad ezekre képezzük le az üzeneteket, a megmaradt

d

– 1 =

n

k

helyekre ellenőrző betűket írunk, így kódoló és ellenőrző betűk elválaszthatók lesznek.

Lineáris kód

A gyakorlatban általában ilyeneket használnak.

A test feletti

n

-esek, vagyis az 

a

0

,

a

1

,

a n

 1  alakú kódszavak tulajdonképpen ugyanezen test feletti

f

(

x

)

a

0 

a

1

x

 

a n

 1

x n

 1 alakú polinomoknak tekinthetők.

35

Def.

A kód

generátormátrixa

az altér egy bázisa lesz, úgy hogy darab sorvektorként írjuk a báziselemeket.

k

Tehát kapunk egy

G k

n

-es mátrixot.

Az előbbi

k

-dimenziós altér

ortogonális altere

rendelkezik azzal a tulajdonsággal, hogy a benne lévő vektorok szorzata egy altérbeli vektorral mindig 0-t ad.

Hasonlóan

G

-hez, megkonstruálunk egy

H

(

n

k

) 

n

-es

ellenőrző mátrixot

, amelyben az ortogonális altér bázisvektorai vannak. Ekkor

H

G T

 0 , ahol

G T

a

G

mátrix transzponáltja.

36

Hogyan azonosítjuk a kódszavakat?

Tegyük fel, hogy a kapott szavunk

v

K n

.

Szorzunk a

H

ellenőrző mátrixszal, kódszó esetén azt kell kapjuk, hogy

s

H

v

0 .

szindróma (hibajellemző) Megfelelően megkonstruált kód esetén, valamennyi hiba erejéig a kapott szorzat vektor el is tudja árulni, hogy hol keressük a hibát.

37

Cyclic Redundancy Check (CRC) F

2 -ből indulunk ki, tehát a kételemű testből, így az üzenetszó, illetve a kódszó is bitekből fog állni.

38

Legyen a kódolni kívánt üzenet

k

hosszú, ekkor

n

 2

k

,

m

n

k

.

redundáns bitek száma Veszünk egy

m

-edfokú polinomot, amely az úgynevezett

g kódpolinom

.

A

k

hosszúságú üzenetszót kiegészítjük jobbról

m

0-val

n

hosszúságúra.

Az így kapott szót (polinomot) osztjuk a kódpolinommal maradékosan, a maradékot beírjuk az előbbi 0-k helyére az üzenetszó után.

Kapjuk a kódszót, amely rendelkezik azzal a jó tulajdonsággal, hogy osztható a kódpolinommal 

hibaellenőrzéskor

a kapott szót, azaz a neki megfelelő polinomot osztani kell a kódpolinommal, és ha a maradék polinom 0, akkor kódszót kaptunk.

Kihasználtuk, hogy a kételemű testben 1 = – 1:

39

Tehát, ha az üzenetpolinom

p

(

x

):

p

(

x

) 

x m

=

q

(

x

) 

g

(

x

) +

r

(

x

) a kódpolinom:

q

(

x

) 

g

(

x

) =

p

(

x

) 

x m

r

(

x

) =

p

(

x

) 

x m

+

r

(

x

) .

40 Példa:

legyen

n

2

3 

8 ,

k

3 ,

m

5 ,

továbbá az üzenet 101, és a kódpolinom

x

5 

x

2 

1 .

p

(

x

)

p

(

x

) 

x m

101

10100000

x

7 

x

5 

x

7 

x

5  

x

5 

x

2 

1

  

x

2 

1

 

x

4 

1

r

(

x

)

x

4 

1

10001

végül a kódszó:

q

(

x

) 

g

(

x

) redundáns bitek

10110001

Végezzük el a hibaellenőrzést is. A kódszónak megfelelő polinom

10110001

x

7 

x

5 

x

4 

1

41

Ezt a polinomot osztjuk most a kódpolinommal maradékosan: 

x

7 

x

5 

x

4 

1

 

x

5 

x

2 

1

 

x

2 

1

 

0 .

Példák a mindennapi életben gyakran használt CRC-kódpolinomra.

Hamming-kód

A kódot, amely pontosan 1-hibajavító, példán keresztül mutatjuk be.

F 2

felett dolgozunk, így vektoraink komponensei bitek. Legyen

r

 2 ,

n

 2

r

 1 ,

k

n

r

.

Készítünk egy

r

n

-es mátrixot az oszlopokba alulról felfelé vezető nullákkal ellátva felírjuk a számokat egytől

n

-ig, bináris formában. Tehát

r

= 3 esetén:

42

Ez lesz a

H

ellenőrző mátrix, de a kódokat is ezzel generáljuk, hiszen azok a

v

vektorok kerülnek be a kódba, amelyekre

H

v =

0.

Vegyük észre, hogy a kettő hatványokban (2

m

) pontosan 1 darab 1-es van, mégpedig az

m

-edik helyen.

Az

r

r

-es egységmátrix tartalmazza a redundáns biteket, a többi soronként

k

darab bit lesz a „közlemény”.

Könnyen ellenőrizhető, hogy a

v

  0 , 0 , 0 , 1 , 1 , 1 , 1  szó kódszó, mivel

H v T

  0 , 0 , 0 

T

.

43

Mi a helyzet az

u

  0 , 0 , 0 , 1 , 1 , 1 , 0  szóval?

u

nem kódszó, és a hibavektor

e

 

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

 azaz

u

v

e

 

0 , 0 , 0 , 1 , 1 , 1 , 1 0 , 0 , 0 , 0 , 0 , 0 , 1 0 , 0 , 0 , 1 , 1 , 1 , 0 .

 Végezzük el a számolást:

H u T

  

T

.

Az 111 bitsorozat tízes számrendszerben felírva 7.

7  0  hiba van. Azt is megkaptuk, hogy a hiba a 7. helyen van a kapott szóban, tehát tudunk javítani.

44

A kódszavakat hogyan határozhatjuk meg?

Ha a

k

hosszúságú üzenet

b

1 …

b k

, akkor az

n

bit hosszú kódszóba először tegyük be kiszámítandó redundáns biteket a pontosan

r

=

n

k

darab 2-hatvány helyre.

Ez az előző példában az 1., 2., 4. helyet jelenti. A maradék helyekre pedig beszúrjuk az üzenet

k

darab bitjét.

45

Ekkor a kapott

c

vektor transzponáltját H-val szorozva:

Hc T

 0 .

A Hamming-kód esetén a maximális üzenethosszak

k

 2

r

r

 1 , azaz 4 , 11 , 26 , 57 , 120 , 247 , 502 , 1013 , 2036 , 4083 