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