Twierdzenia Krafta i McMillana
Transkrypt
Twierdzenia Krafta i McMillana
WSTP 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