TEORIA KODÓW Lekcja 4 Mierzenie kodów Wprowadzimy pojęcie miary kodu, by w oparciu o nie sformułować precyzyjnie obserwację, że „kody mają mało krótkich słów”. Wszędzie niżej (w bieżącej lekcji) A jest dowolnym (niekoniecznie skończonym) alfabetem. Jeśli jakieś pojęcia lub fakty będą dotyczyć wyłącznie alfabetów skończonych, będzie to wyraźnie napisane. Definicja 4.1: Rozkładem (wielomianowym) Bernoulliego nazywamy morfizm :A*R+ monoidu wolnego A* w monoid R+ liczb rzeczywistych 0 z mnożeniem, spełniający dodatkowy warunek aA(a) = 1 Mówimy, że rozkład jest dodatni, jeśli (aA) (a)0. Bezpośrednio z definicji wynika, że ()=1 (bo jest morfizmem). Rozkład Bernoulliego, zdefiniowany na niepustym alfabecie skończonym (n-elementowym) jako (a)=n1, dla każdego aA, nazywamy rozkładem jednostajnym. Własność 4.2: Dla każdego n0 rozkład jest rozkładem prawdopodobieństwa na An. Dowód: Mamy pokazać, że uAn (u)=1, dla wszystkich n0. Dla n=0 mamy A0={} i ()=1, bo jest morfizmem. Dla n=1 teza wynika wprost z definicji rozkładu . Dalej indukcyjnie: Przyjmijmy, że teza zachodzi dla An, czyli uAn (u)=1. Liczymy: wAn+1 (w) = uAn((u)aA(a)) = uAn (u) [z def. ] = 1 [z zał. ind.]. Definicja 4.3: Miara Bernoulliego Rozszerzmy rozkład Bernoulliego :A*R+ na zbiór 2A* wszystkich języków nad A: :2A*R+{} określimy jako (L) = wL (w). Wartość (L) nazywamy miarą (Bernoulliego) języka L względem rozkładu . Funkcja jest rzeczywiście miarą na zbiorze 2A* - patrz Własność 4.4. Własność 4.4: Funkcja jest miarą określoną na zbiorze wszystkich języków w A*: (a) (LA*) (L)0 ()=0 (b) Dla każdej rodziny {Li | iI}2A* języków nad alfabetem A (U{Li | iI}) iI(Li) (c) Jeśli języki {Li | iI} są parami rozłączne, to (U{Li | iI}) = iI(Li) Przykład 4.5: Niech A={a,b} i X={a, ba, bb}. Niech :A*R+ będzie rozkładem Bernoulliego. Podstawiając (a)=p i (b)=1p, otrzymujemy (X) = p+(1p)p+(1p)2 = p+pp2+12p+p2 = 1 Lekcja 4 1 Lemat 4.6: Niech będzie rozkładem Bernoulliego na A. Dla każdego XA* (X*)n0(Xn)n0((X))n. Dowód: Jeśli X,YA*, to XY = UxX UyY {xy}. Z Własności 4.4(b) wynika, że (XY) xXyY(x)(y) = xX(x) yY(y) = (X)(Y). Stąd już łatwo, znów z pomocą 4.4(b), wynika dowodzona nierówność. Wniosek 4.7: Jeśli (X)1, to (X*). (Dlaczego? - ćwiczenie) W przypadku, gdy X jest kodem, Wniosek 4.7 staje się równoważnością, a nierówności Lematu 4.6 – równościami (Lemat 4.8). Dowód pomijamy, podobnie jak dowód ważnego Tw. 4.9, wykorzystujący Lemat 4.8. Lemat 4.8: Niech XA+ i niech :A*R+ będzie rozkładem Bernoulliego. (1) Jeśli X jest kodem, to (1a) (n1) (Xn) = (((X))n; (1b) (X*) = n0 ((X))n; (1c) (X*) (X)1. (2) Jeśli jest dodatni, (X) oraz (n1) (Xn) = ((X))n, to X jest kodem. Twierdzenie 4.9: Jeśli XA* jest kodem, to dla każdego rozkładu Bernoulliego (X)1 W przypadku, gdy alfabet A jest skończony, a rozkład jest jednostajny, otrzymujemy: Wniosek 4.3: Jeśli XA* jest kodem nad alfabetem n-literowym, to w X n|w| 1 Tw. 4.9 jest ważnym narzędziem negatywnej weryfikacji kodów (czyli stwierdzania, że zbiór X nie jest kodem). W tym celu wygodniejsze jest sformułowanie: Twierdzenie 4.9a: Niech XA*. Jeśli istnieje rozkład Bernoulliego taki, że (X)1 to X nie jest kodem. Wystarczy więc znaleźć rozkład taki, że (X)1. Pamiętajmy jednak, że z istnienia rozkładu dającego (X)1 nie możemy wnioskować, że X jest kodem, co pokazuje poniższy przykład: Przykład 4.10: Niech A={a,b}, zbadajmy X={b, ab, ba}. Dla rozkładu jednostajnego (a)=(b)=1/2 mamy (X) = 1/2+1/4+1/4 = 1 – w tym przypadku nie otrzymujemy odpowiedzi, czy X jest kodem czy nie. Biorąc jednak rozkład (a)=1/3, (b)=2/3 dostajemy (X) = 2/3+2/9+2/9=10/9 1, zatem X nie jest kodem (Tw. 4.9a). Nawet jeśli każdy rozkład Bernoulliego daje (X)1, zbiór X może nie być kodem (czyli odwrócenie Tw. 4.9 nie jest prawdą). Oto przykład: Lekcja 4 2 Przykład 4.11: Niech A={a,b} i X={ab, aba, aab}. Zbiór X nie jest kodem, bo (aba)(ab)=(ab)(aab). Weźmy jednak dowolny rozkład Bernoulliego (a)=p, (b)=1p. Mamy (X) = p(1p)+2p2(1p) = p(1p)(1+2p) = 2p3+p2+p; łatwo sprawdzić, że (X)1 dla wszystkich p0,1. Ostatni przykład dobrze ilustruje ograniczenia Tw. 4.9 jako metody testowania kodów. Zauważmy, że zbiór {ab, aba, aab} z Przykładu 4.11 (test nie działa) powstał ze zbioru {b, ab, ba} z Przykładu 4.10 (test działa) przez podstawienie bab. Zatem jeśli ten drugi nie jest kodem, to i ten pierwszy nie jest (dlaczego? – ćwiczenie – zob. Tw. 1.13). Nieściśle można powiedzieć, że Tw. 4.9 pozwala wywnioskować, że X nie jest kodem tylko wtedy, gdy X zawiera „za dużo za krótkich słów”. Jak wiemy, każdy podzbiór kodu jest kodem. Stąd waga, jaką w teorii kodów przywiązuje się do badania kodów maksymalnych. Kolejne twierdzenie jest bardzo użyteczne w testowaniu maksymalności kodów. Bezpośrednia metoda dowodzenia maksymalności, oparta na definicji, jest zwykle dużo bardziej skomplikowana. Twierdzenie 4.12: Niech XA* będzie kodem. Jeśli istnieje dodatni rozkład Bernoulliego taki, że (X)=1, to X jest kodem maksymalnym. Dowód: Przypuśćmy, że X nie jest kodem maksymalnym. Istnieje więc słowo yX takie, że zbiór Y=X{y} jest kodem. Mamy (Y)=(X)+(y)=1+(y), ale (Y)1 (z Tw. 4.9), więc (y)=0 – sprzeczność, bo przyjęlismy, że jest dodatni. Podkreślić trzeba, że aby skorzystać z powyższego twierdzenia musimy najpierw stwierdzić, że X jest kodem. To założenie Tw. 4.12 jest istotne (zob. Przykład 4.10). Wróćmy teraz do naszego pierwszego przykładu: Przykład 4.5 (c.d.): Zbiór X={a, ba, bb} jest kodem (bo jest prefiksowy). Pokazaliśmy wcześniej, że dla każdego rozkładu Bernoulliego mamy (X)=1. Z Tw. 4.12 wynika więc, że X jest kodem maksymalnym. I jeszcze jeden przykład na zastosowanie Tw. 4.12, tym razem do zbadania kodu nieskończonego, a nawet nieregularnego: Przykład 4.13: Niech A={a,b} i niech X=U{an bAn | n0}. Zbiór X jest prefiksowy, więc jest kodem. Pokażemy, że X jest kodem maksymalnym. Niech będzie dodatnim rozkładem Bernoulliego na A; przyjmijmy (a)=p, (b)=1p. Mamy (an bAn) = (an)(b)(An) = pn(1p)1 [zob. Własność 4.2] = pn(1p) zatem (X) = n0 pn(1p) = (1p) n0 pn = (1p)(1p)1 = 1. Wobec Tw. 4.12 zbiór X jest kodem maksymalnym. Lekcja 4 3 Tw. 4.12 zachodzi dla dowolnych kodów, również nieregularnych. Jego wersja dla kodów regularnych jest zaskakująco piękna... Twierdzenie 4.14: Niech XA* będzie kodem regularnym. Następujące warunki są równoważne: (1) X jest kodem maksymalnym. (2) Istnieje dodatni rozkład Bernoulliego taki, że (X)=1 (3) Dla każdego dodatniego rozkładu Bernoulliego mamy (X)=1 ...i skuteczna. Wystarczy wziąć dowolny dodatni rozkład Bernoulliego (np. jednostajny) i sprawdzić, czy miara badanego kodu jest równa 1. Dla zbiorów regularnych jest to zawsze efektywnie wykonalne. Podając tutaj ostatnie twierdzenie, wyprzedziliśmy trochę tok wykładu. Dojdziemy do niego – a nawet do jeszcze ogólniejszej jego wersji – na lekcji następnej. Za to już teraz możemy, korzystając z Tw. 4.14, rozwiązać poniższe ćwiczenie. Ćwiczenie 4.15: Lekcja 4 Które z poniższych podzbiorów {a,b}* są kodami? Które z nich są kodami maksymalnymi? Uzupełnij kody niemaksymalne do maksymalnych. (1) X={a, bb, aab, bab} (2) X={a, ab, ba} (3) X={a, ab, bb} (4) X={a, ab, abb} (5) X={aa, aab, baa, baab} (6) X={aa, ab, ba} (7) X=ab* (8) X=ab*a (9) X=a*ba* (10) X=ab+ (11) X=ab+a* (12) X=ab+a+ 4