• Nie Znaleziono Wyników

Alfabety i języki 1 Funkcje na zbiorach słów

N/A
N/A
Protected

Academic year: 2021

Share "Alfabety i języki 1 Funkcje na zbiorach słów"

Copied!
5
0
0

Pełen tekst

(1)

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 (xw) =

( f (w)xx dla w ∈ X i x ∈ {a, b}, 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:

f (w) =

( , jeśli w = ,

xf (v)x, jeśli w = xv, gdzie x ∈ X i v ∈ X. 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.

(2)

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 do- wolnego 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(v0, w), jeśli v = xv0, gdzie x ∈ X i v0 ∈ 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 dowol- nego x ∈ X oraz

num(x, yw) =

( num(x, w), jeśli y 6= x, 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) oraz num(c, f (w)) = 2 · num(c, w) + num(d, w).

2 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.

(3)

Zadanie 13 Jakiej funkcji z N do N odpowiada funkcja f : Zn→ Zn określona następująco:

(a) f (w) =

( 0 dla w = 0,

w0 dla w ∈ Zn\ {0}, (b)

( 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 przypo- rządkowuje sumę cyfr tego zapisu.

Zadanie 15 Zdefiniuj funkcję S: Zn→ Zn, która zapisowi n-kowemu liczby naturalnej m przy- porządkowuje zapis n-kowy liczby m + 1.

Zadanie 16 Zdefiniuj funkcję, która zapisowi dziesiątkowemu liczby naturalnej m przyporząd- kowuje zapis dziesiątkowy liczby:

(a) 2m, (b) [m2].

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 jedno- miejscowy 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 = t1ct1. 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 na- wiasów oraz łącznej liczbie znaków „+” i „−”.

(4)

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 sym- bole „”, „)” 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.

(5)

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.

Cytaty

Powiązane dokumenty

Słowo puste ε – ciąg długości 0, jest to słowo nad każdym alfabetem... Operacje wykoDywaDe

Pomoc na temat konkretnej procedury uzyskuje się przez ustawienie kursora na pierwszej literze nazwy procedury i wciśnięcie Ctrl-F1.. Opracować program drukujący napis:

(Wielkie litery łacińskie oznaczają symbole nieterminalne, małe litery łacińskie, cyfry oraz znaki specjalne, jak np. nawiasy okrągłe lub kwadratowe, oznaczają

Dla poprawienia czytelności na ogół będziemy zapisywać system dedukcyjny S jako parę (AX, R), gdzie AX jest pewnym zbiorem aksjomatów, a R pewnym zbiorem reguł wnioskowania,

Wykazać, że można w ten sposób wysłać każdą całkowitą ilość kilogramów większą niż 7.. Czy można w tym zadaniu zastąpić dane liczby

721. Dowieść, że dla każdej liczby naturalnej n ­ 200 sześcian można podzielić na n sześcianów. Spróbować zastąpić liczbę 200 mniejszą liczbą.. 726. Jak wygląda

Poziom standardowy (z myślą o ocenie co najwyżej dobrej) Zadania do omówienia na ćwiczeniach 10,12.10.2016 (grupy 2–5).. Zadania należy spróbować rozwiązać

16.. Należy przyjść na ćwiczenia do grupy 1 ORAZ na ćwiczenia do jednej z pozostałych grup, gdzie omówione zostaną zadania poziomu B.. Zadania należy spróbować rozwiązać