Alfabety i języki

Transkrypt

Alfabety i języki
Alfabety i języki
1
Funkcje na zbiorach słów
Zadanie 1 Niech X = {a, b, c, d} będzie alfabetem. Określmy funkcję f : X ∗ → X ∗ następująco:
f () = oraz
(
f (w)xx dla w ∈ X ∗ i x ∈ {a, b},
f (xw) =
cf (w) dla w ∈ X ∗ i x ∈ {c, d}.
(Zapis xxf (w) oznacza słowo powstałe przez dodanie liter xx z lewej strony słowa f (w).)
Oblicz f (abcad), f (adbdcd) i f (aacc).
Zadanie 2 Rozważmy alfabet X = {a, b} i funkcję f : X ∗ → X ∗ , określoną w ten sposób, że
f () = oraz dla x ∈ X i w ∈ X ∗
(
f (xw) =
f (w)b, jeśli x = a,
f (w)a, jeśli x = b.
Oblicz f (aabba) i f (baababab).
Zadanie 3 Niech X = {1, 2, 3, 4, 5} i funkcja f : X ∗ → X ∗ jest określona następująco:
(
, jeśli w = ,
xf (v)x, jeśli w = xv, gdzie x ∈ X i v ∈ X ∗ .
f (w) =
Oblicz f (1233), f (111) i f (3443).
Zadanie 4 Wyjaśnij, dlaczego funkcje z zadań 1, 2 i 3, są określone poprawnie.
Przypomnijmy, że długością słowa nad danym alfabetem nazywamy liczbę liter występujących w tym słowie. Formalna definicja jest taka:
(
dl(w) =
0, jeśli w = ,
dl(v) + 1, jeśli w = xv, gdzie x ∈ X i v ∈ X ∗ .
Długość każdego słowa jest liczbą naturalną. Każde słowo niepuste w można przedstawić w
postaci xv, gdzie v jest słowem długości dl(w) − 1, a x jest literą.
Zdefiniujmy następujące funkcje:
head : X ∗ \ {} → X, która każdemu niepustemu słowu przyporządkowuje jego pierwszą literę:
head(xw) = x dla x ∈ X i w ∈ X ∗ .
tail : X ∗ \ {} → X ∗ , która każdemu niepustemu słowu przyporządkowuje słowo powstałe po
obcięciu pierwszej litery:
tail(xw) = w dla x ∈ X i w ∈ X ∗ .
rev: X ∗ → X ∗ , która każdemu słowu przyporządkowuje słowo z odwrotną kolejnością liter:
(
rev(w) =
, jeśli w = ,
rev(v)x, jeśli w = xv, gdzie x ∈ X i v ∈ X ∗ .
1
Zadanie 5 Korzystając z powyższej definicji, oblicz rev(w) dla słów z zadań 1, 2 i 3.
Zadanie 6 Rozważmy funkcję f i alfabet X z zadania 1. Udowodnij, że dla każdego słowa w ∈
X ∗ zachodzi następująca zależność: dl(f (w)) jest liczbą parzystą lub head(f (w)) = c.
Zadanie 7 Niech X i f będą, odpowiednio, alfabetem i funkcją z zadania 2. Wykaż, że dla dowolnego niepustego słowa w nad alfabetem X zachodzi nierówność head(f (w)) 6= head(rev(w)).
Zadanie 8 Rozważmy funkcję f i alfabet X z zadania 3. Udowodnij, że dla każdego słowa w ∈
X ∗ zachodzi równość rev(f (w)) = f (w).
Zadanie 9 Niech X będzie dowolnym alfabetem. Udowodnij, że dla dowolnych słów v, w ∈ X ∗
zachodzi równość rev(vw) = rev(w)rev(v).
Zadanie 10 Zdefiniujmy funkcję con: X ∗ × X ∗ → X ∗ w ten sposób, że dla dowolnych v, w ∈ X ∗
(
con(v, w) =
w, jeśli v = ,
con(v 0 , w), jeśli v = xv 0 , gdzie x ∈ X i v 0 ∈ X ∗ .
Co to za funkcja? Udowodnij, że dla dowolnych u, v, w ∈ X ∗ zachodzi równość
con(con(u, v), w) = con(u, con(v, w)).
Zadanie 11 Zdefiniujmy funkcję num: X × X ∗ → N w ten sposób, że num(x, ) = 0 dla dowolnego x ∈ X oraz
(
num(x, w), jeśli y 6= x,
num(x, yw) =
succ(num(x, w)), jeśli y = x,
dla dowolnych x ∈ X, y ∈ X i w ∈ X ∗ .
Co to za funkcja? Udowodnij, że dla dowolnych x ∈ X i v, w ∈ X ∗ zachodzi równość
num(x, con(v, w)) = plus(num(x, v), num(x, w)).
Zadanie 12 (a) Wykaż, że przy oznaczeniach z zadania 2, dla dowolnego słowa w zachodzi
równość
num(a, f (w)) = num(b, w).
(b) Wykaż, że przy oznaczeniach z zadania 1, dla dowolnego słowa w zachodzą równości:
num(a, f (w)) = 2 · num(a, w)
2
oraz
num(c, f (w)) = 2 · num(c, w) + num(d, w).
Zapisy liczb
Dla każdej liczby narturalnej n > 1, wprowadźmy oznaczenia:
Xn = {0, 1, . . . , n − 1},
Zn = {w ∈ X ∗ \ {}; head(w) 6= 0} ∪ {0}.
Tak więc Xn to alfabet złożony z cyfr zapisu n-kowego od 0 do n − 1, zaś Zn to język nad
tym alfabetem, utworzony z zapisów n-kowych liczb naturalnych.
2
Zadanie 13 Jakiej funkcji z N do N odpowiada funkcja f : Zn → Zn określona następująco:
(
(a) f (w) =
(
(b)
0 dla w = 0,
w0 dla w ∈ Zn \ {0},
f (x) = 0 dla x ∈ Xn
f (wx) = w dla w ∈ Zn \ {0} i x ∈ X
Zadanie 14 Określ rekurencyjnie funkcję, która zapisowi dwójkowemu liczby naturalnej przyporządkowuje sumę cyfr tego zapisu.
Zadanie 15 Zdefiniuj funkcję S: Zn → Zn , która zapisowi n-kowemu liczby naturalnej m przyporządkowuje zapis n-kowy liczby m + 1.
Zadanie 16 Zdefiniuj funkcję, która zapisowi dziesiątkowemu liczby naturalnej m przyporządkowuje zapis dziesiątkowy liczby:
(a) 2m,
(b) [ m
2 ].
Zadanie 17 Określ funkcję, która zapisowi dziesiątkowemu liczby naturalnej przyporządkowuje
resztę z dzielenia:
(a) przez 3,
(b) przez 7.
Zadanie 18 Określ funkcję, która:
(a) zapisowi dwójkowemu liczby naturalnej przyporządkowuje zapis czwórkowy tej liczby,
(b) zapisowi czwórkowemu liczby naturalnej przyporządkowuje zapis dwójkowy tej liczby,
(c) zapisowi dwójkowemu liczby naturalnej przyporządkowuje zapis trójkowy tej liczby,
(d) zapisowi trójkowemu liczby naturalnej przyporządkowuje zapis dwójkowy tej liczby.
3
Języki rekurencyjne
Zadanie 19 Rozważmy alfabet X = {a, b, c}, język J = {aa, ab, ac, bb, bc, cc} i kontekst jednomiejscowy k = a t c. Wyznacz język Fkn dla n = 1, 2, 3 oraz język rekurencyjny L(J, k). Ile jest
słów stopnia n w tym języku?
Zadanie 20 Niech X będzie dowolnym alfabetem, niech c ∈ X. Załóżmy, że język J składa się z
pewnych słów długości 1, czyli J ⊂ X. Rozważmy kontekst jednomiejscowy k = t1 ct1 . Wyznacz
język Fkn dla n = 1, 2, 3 oraz język rekurencyjny L(J, k). Udowodnij, że dla w ∈ L(J, k) zachodzi
równość rev(w) = w. Ile jest słów stopnia n?
Zadanie 21 Rozważmy alfabet X = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, −, (, )}, język J = Z10 (zapisy
dziesiątkowe liczb naturalnych) i dwa konteksty: dwumiejscowy k1 = (t1 + t2 ) i jednomiejscowy
k2 = (−t). Wykaż, że:
(a) w każdym słowie języka L(J, k1 ) liczba lewych nawiasów jest równa liczbie prawych nawiasów
oraz liczbie znaków „+”.
(b) w każdym słowie języka L(J, k2 ) liczba lewych nawiasów jest równa liczbie prawych nawiasów
oraz liczbie znaków „−”.
(c) w każdym słowie języka L(J, k1 , k2 ) liczba lewych nawiasów jest równa liczbie prawych nawiasów oraz łącznej liczbie znaków „+” i „−”.
3
Zadanie 22 Określ stopnie słów w języku rekurencyjnym L(J, k1 , k2 ) z poprzedniego zadania:
(a) ((2 + (−(−(0 + 0)))) + (−(1 + 15))),
(b) (−(−(12 + 20)) + (35 + (−(−18)))),
(c) ((((1 + 2) + 3) + 4) + ((((5 + 4) + (4 + 3)) + ((3 + 2) + (2 + 1))) + 0)).
Zadanie 23 Rozważmy dowolny alfabet X zawierający co najmniej cztery symbole, w tym symbole „”, „)” i „(”. Niech L = L(J, k) będzie językiem rekurencyjnym określonym przez język
bazowy J = X \ {, ), (} i kontekst dwumiejscowy k = (t1 t2 ).
Udowodnij, że stopień słowa w języka L jest nie większy od num(, w), gdzie funkcja num: X×
X ∗ → N jest określona jak w zadaniu 11.
Rozwiązania, wskazówki, odpowiedzi
1 Rozwiązanie. Obliczymy f (abcad).
Dla x = a i w = bcad mamy
f (abcad) = f (xw) = f (w)aa = f (bcad)aa.
Dla x = b i w = cad mamy
f (bcad) = f (xw) = f (w)xx = f (cad)bb.
Dla x = c i w = ad mamy
f (cad) = f (xw) = cf (w) = cf (ad).
Dla x = a i w = d mamy
f (ad) = f (xw) = f (w)xx = f (d)aa.
Dla x = d i w = mamy
f (d) = f (xw) = cf (w) = cf () = c = c.
Ostatecznie
f (abcad) = f (bcad)aa = f (cad)bbaa = cf (ad)bbaa = cf (d)aabbaa = ccaabbaa.
Teraz obliczymy f (adbdcd). Z definicji funkcji f otrzymujemy kolejno:
f (adbdcd) = f (dbdcd)aa, f (dbdcd) = cf (bdcd), f (bdcd) = f (dcd)bb, f (dcd) = cf (cd), f (cd) =
cf (d), f (d) = c.
Zatem f (adbdcd) = f (dbdcd)aa = cf (bdcd)aa = cf (dcd)bbaa = ccf (cd)bbaa = cccf (d)bbaa =
ccccbbaa.
Obliczmy jeszcze f (aacc):
f (aacc) = f (acc)aa = f (cc)aaaa = cf (c)aaaa = ccaaaa.
6, 9, 10 Wskazówka. Indukcja względem długości słowa w.
15 Odpowiedź. Dla x ∈ Xn
(
S(x) =
x + 1, jeśli x ∈ {0, 1, . . . , n − 2},
10, jeśli x = n − 1.
4
Dla v ∈ Zn i x ∈ Xn
(
S(vx) =
vS(x), jeśli x ∈ {0, 1, . . . , n − 2},
S(v)0, jeśli x = n − 1.
16 Odpowiedź. Dla v ∈ X ∗ \ {} i x ∈ X
(
p(vx) =
p(v)p(x), jeśli last(v) ∈ {0, 2, 4, 6, 8},
p(v)(p(x) + 5), jeśli last(v) ∈ {1, 3, 5, 7, 9},
gdzie last(v) oznacza ostatnią literę słowa v.
Piotr Jędrzejewicz, Ćwiczenia ze wstępu do matematyki dla informatyków, I rok informatyki, jesień 2002.
Alfabety i języki, wersja trzecia, 12 II 2003.
5

Podobne dokumenty