Twierdzenia Krafta i McMillana

Transkrypt

Twierdzenia Krafta i McMillana
WST†P DO TEORII INFORMACJI I
KODOWANIA
Grzegorz Szkibiel
Wiosna 2013/14
Spis tre±ci
1 Kodowanie i dekodowanie
1.1
1.2
1.3
1.4
1.5
Kodowanie a szyfrowanie . . . . . . .
Podstawowe poj¦cia . . . . . . . . . .
Dekodowanie jednoznaczne . . . . . .
Kody blokowe i natychmiastowe . . .
Przykªady znanych kodów blokowych
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
5
7
7
8
2 Twierdzenia Krafta i McMillana
10
3 Kody Humana
13
2.1
2.2
3.1
3.2
3.3
Konstruowanie kodów natychmiastowych . . . . . . . . . . . . 10
Twierdzenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
™ródªo informacji . . . . . . . . . . . . . . . . . . . . . . . . . 13
Denicja kodu Humana . . . . . . . . . . . . . . . . . . . . . 14
Konstrukcja kodu Humana . . . . . . . . . . . . . . . . . . . 15
4 Kompresowanie kodów i entropia
4.1
4.2
4.3
4.4
4.5
4.6
4.7
Przykªad kompresowania danych . . . . . . . . . . .
Idea entropii . . . . . . . . . . . . . . . . . . . . . .
Denicja entropii . . . . . . . . . . . . . . . . . . .
Maximum i minimum entropii . . . . . . . . . . . .
Rozszerzenie ¹ródªa . . . . . . . . . . . . . . . . . .
Entropia a przeci¦tna dªugo±¢ sªowa kodowego . . .
Twierdzenie Shannona o kodowaniu bezszumowym .
5 Pewna komunikacja poprzez niepewne ª¡cza
5.1
5.2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
19
20
21
22
24
25
26
28
Symetryczne ª¡cze binarne . . . . . . . . . . . . . . . . . . . . 28
Pr¦dko±¢ przepªywu informacji . . . . . . . . . . . . . . . . . . 30
2
5.3
5.4
5.5
Bariera pojemno±ci . . . . . . . . . . . . . . . . . . . . . . . . 31
Odlegªo±¢ Hamminga . . . . . . . . . . . . . . . . . . . . . . . 32
Wykrywanie i poprawianie bª¦dów . . . . . . . . . . . . . . . . 34
6 Kody liniowe
6.1
6.2
6.3
6.4
6.5
6.6
6.7
Denicja . . . . . . . . . . . . . .
Macierz generuj¡ca . . . . . . . .
Równania opisuj¡ce kody . . . . .
Macierz sprawdzaj¡ca parzysto±¢
Waga Hamminga . . . . . . . . .
Syndrom . . . . . . . . . . . . . .
Wykrywanie i poprawianie bª¦dów
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Optymalne kody poprawiaj¡ce pojedyncze bª¦dy
Przykªady kodów Hamminga . . . . . . . . . . .
Dekodowanie kodów Hamminga . . . . . . . . .
Uwagi ko«cowe . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7 Kody Hamminga
7.1
7.2
7.3
7.4
8 Kody ReedaMüllera
8.1
8.2
8.3
8.4
8.5
Funkcje Boole'a . . . . . . . . . . .
Wielomiany Boole'a . . . . . . . . .
Kody ReedaMüllera . . . . . . . .
Geometria aniczna nad ciaªem Z2
Dekodowanie kodu Reeda-Müllera .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
36
36
37
40
41
42
44
45
47
47
49
50
51
52
52
55
57
61
64
Rozdziaª 2
Twierdzenia Krafta i McMillana
2.1
Konstruowanie kodów natychmiastowych
Zajmiemy si¦ teraz konstrukcjami dwójkowych kodów natychmiastowych. W
tym celu ustalmy alfabet A = {a1 , a2 , . . . , an }. Chcieliby±my, »eby kod miaª
jak najkrótsze sªowa kodowe. B¦dziemy szukali te» zale»no±ci mi¦dzy dªugo±ciami sªów kodowych. Dla litery ai , dªugo±¢ jej kodu oznaczmy przez di .
Mo»emy zaªo»y¢, »e d1 ≤ d2 ≤ · · · ≤ dn . Nasza konstrukcja przebiega
nast¦puj¡co:
1) Za K(a1 ) wybieramy jakiekolwiek sªowo dwójkowe dªugo±ci d1 . Jest to
mo»liwe je±li d1 ≥ 1. Mamy wówczas mo»liwo±¢ wyboru spo±ród 2d1
sªów. Dodatkowo zachodzi nierówno±¢ 2−d1 ≤ 1.
2) W±ród wszystkich sªów, które nie zaczynaj¡ si¦ od K(a1 ), wybieramy
sªowo K(a2 ) dªugo±ci d2 . Zauwa»my, »e wybór jest mo»liwy poniewa»
mamy 2d2 wszystkich sªów dªugo±ci d2 i 2d2 −d1 sªów dªugo±ci d2 , których
pocz¡tkiem jest K(a1 ). Je±li wi¦c 2d2 > 2d2 −d1 , to mamy przynajmniej
jeden wybór K(a2 ). Nierówno±¢ ta zachodzi, poniewa» d1 > 0. Dodatkowo mamy jeszcze 2−d1 + 2−d2 ≤ 1.
3) Podobnie jak w 2) spo±ród wszystkich sªów, które si¦ nie zaczynaj¡ od
K(a1 ) ani od K(a2 ) wybieramy sªowo K(a3 ) dªugo±ci d3 . Aby wybór
byª mo»liwy musi by¢ speªniona nierówno±¢ 2d3 > 2d3 −d1 + 2d3 −d2 , która
jest równowa»na nierówno±ci
2−d1 + 2−d2 + 2−d3 ≤ 1.
10
4) Post¦pujemy jak w 3) wybieraj¡c kolejno K(a4 ), K(a5 ), . . . , K(an ).
Aby wybór sªowa K(ai ) byª mo»liwy musi zachodzi¢ nierówno±¢
2−d1 + 2−d2 + · · · + 2−di ≤ 1.
Zatem aby mo»na byªo wybra¢ sªowa K(a1 ), K(a2 ), . . . , K(an ), ich dªugo±ci musz¡ speªnia¢ warunek
2−d1 + 2−d2 + · · · + 2−dn ≤ 1.
Otrzyman¡ nierówno±¢ nazywamy nierówno±ci¡ Krafta dla kodu dwójkowego.
W nast¦pnym podrozdziale przedstawimy twierdzenia uogólniaj¡ce powy»sz¡
konstrukcj¦.
2.2
Twierdzenia
2.1 Twierdzenie. (Krafta)
Zaªó»my, »e alfabet ¹ródªowy ma
alfabet kodowy
k
d1 , d2 , . . . , dn
istnieje je±li zachodzi nierówno±¢
n
symboli, a
symboli. Kod natychmiastowy o sªowach kodowych dªugo±ci
k −d1 + k −d2 + · · · + k −dn ≤ 1.
Twierdzenie odwrotne do powy»szego jest prawdziwe. Poka»emy nawet
wi¦cej, a mianowicie
2.2 Twierdzenie. (McMillana) Nierówno±¢ Krafta jest speªniona dla ka»dego
kodu jednoznacznie dekodowalnego.
Zatem ka»dy kod jednoznacznie dekodowalny mo»na zast¡pi¢ kodem natychmiastowym, który ma sªowa kodowe takiej samej dªugo±ci co kod wyj±ciowy.
Dla dowodu oznaczmy przez A = {a1 , a2 , . . . , an } alfabet ¹ródªowy,
przez B alfabet kodowy, który ma k elementów, przez K kodowanie, a przez
d1 , d2 , . . . , dn dªugo±ci odpowiednich sªów kodowych. Dla dowolnego j , liczba
wszystkich j -literowych sªów zapisanych za pomoc¡ alfabetu B wynosi k j .
Zatem liczba wszystkich wiadomo±ci aj1 aj2 . . . ajr , których kod ma dªugo±¢ j ,
nie mo»e by¢ wi¦ksza od k j . Dokªadnie, zachodzi tu równo±¢
Dowód.
dj1 + dj2 + · · · + djr = j.
11
(2.1)
Zatem ilo±¢ wszystkich mo»liwych sum postaci (2.1) jest mniejsza lub równa k j .
Rozwa»my teraz
n
X
c=
k −di .
i=1
r
c
= ∞ wtedy i tylko wtedy, gdy c > 1. Poka»emy, »e ci¡g
r→∞ r
jest ograniczony, co uzasadni fakt, »e c ≤ 1. W tym celu obliczmy cr .
!r
n
X
cr =
k −di
Mamy lim
cr
r r
i=1
=
X
k −(di1 +di2 +···+dir )
i1 ,i2 ,...,ir
≤
dr
X
X
k −(di1 +di2 +···+dir )
j=1 di1 +di2 +···+dir =j
=
dr
X
X
k −j
j=1 di1 +di2 +···+dir =j
≤
dr
X
k j k −j = dr.
j=1
Tutaj d = max(d1 , d2 , . . . , dn ). Zatem
cr
r
≤ d i c ≤ 1.
Rozwa»my przykªad nast¦puj¡cego kodu:
A
11
B
12
C
13
D
21
F
22
G
23
H
31
I
32
‘rednia dªugo±¢ sªowa kodowego to 2. Jednak, jedno ze sªów dwuznakowych (33) nie jest wykorzystane. Czy mo»na wi¦c nasz kod zoptymalizowa¢,
tj. tak go poprawi¢, by ±rednia dªugo±¢ sªowa kodowego byªa mniejsza?
Zauwa»my, »e je±li kod jednej z liter b¦dzie miaª dªugo±¢ 1, to nie b¦dzie
speªniona nierówno±¢ Krafta, czyli kod nie b¦dzie ju» jednoznacznie dekodowalny. Kod byªby optymalny, gdyby w nierówno±ci Krafta byªaby równo±¢,
ale w przypadku gdy mamy sum¦ o±miu skªadników o równych licznikach, a
w mianownikach których s¡ pot¦gi trójki, otrzymanie takiej równo±ci nie jest
mo»liwe.
12