Kody-4

advertisement
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
aA(a) = 1
Mówimy, że rozkład jest dodatni, jeśli (aA) (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)=n1, dla każdego aA,
nazywamy rozkładem jednostajnym.
Własność 4.2: Dla każdego n0 rozkład  jest rozkładem prawdopodobieństwa na An.
Dowód: Mamy pokazać, że uAn (u)=1, dla wszystkich n0. 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 uAn (u)=1. Liczymy:
wAn+1 (w) = uAn((u)aA(a)) = uAn (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) = wL (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) (LA*) (L)0
()=0
(b) Dla każdej rodziny {Li | iI}2A* języków nad alfabetem A
(U{Li | iI})  iI(Li)
(c) Jeśli języki {Li | iI} są parami rozłączne, to
(U{Li | iI}) = iI(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)=1p, otrzymujemy
(X) = p+(1p)p+(1p)2 = p+pp2+12p+p2 = 1
Lekcja 4
1
Lemat 4.6: Niech  będzie rozkładem Bernoulliego na A. Dla każdego XA*
(X*)n0(Xn)n0((X))n.
Dowód: Jeśli X,YA*, to XY = UxX UyY {xy}. Z Własności 4.4(b) wynika, że
(XY)  xXyY(x)(y) = xX(x) yY(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 XA+ i niech :A*R+ będzie rozkładem Bernoulliego.
(1) Jeśli X jest kodem, to (1a) (n1) (Xn) = (((X))n;
(1b) (X*) = n0 ((X))n;
(1c) (X*)  (X)1.
(2) Jeśli  jest dodatni, (X) oraz (n1) (Xn) = ((X))n, to X jest kodem.
Twierdzenie 4.9: Jeśli XA* 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 XA* 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 XA*. 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)=1p.
Mamy (X) = p(1p)+2p2(1p) = p(1p)(1+2p) = 2p3+p2+p; łatwo sprawdzić, że
(X)1 dla wszystkich p0,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 bab. 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 XA* 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 yX
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 | n0}. 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)=1p. Mamy
(an bAn) = (an)(b)(An) = pn(1p)1 [zob. Własność 4.2] = pn(1p)
zatem (X) = n0 pn(1p) = (1p) n0 pn = (1p)(1p)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 XA* 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
Download