Języki, automaty i obliczenia/Ćwiczenia 2: Gramatyka jako model obliczen. Hierarchia Chomsky'ego

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Ćwiczenia 2

Ćwiczenie 1

Niech RS=({a,b,c},{(a,b),(b,c),(b,a),(cc,b)}) będzie systemem przepisującym. Sprawdź, czy w systemie tym można przepisać bezpośrednio słowo x na słowo y, jeśli x=abc, y=aab.

Rozwiązanie

Ćwiczenie 2

Zdefiniujmy zbiory: A={a,b,c} oraz

P={(aabc,ac),(aa,aaca),(bc,cc),(aa,baab),(bc,ab),(aabc,bbaacc)}.

Udowodnij, nie obliczając w sposób bezpośredni, że w systemie przepisującym RS=(A,P) nie da się przepisać pośrednio słowa w=aabcbcaaaabcaabc na słowo v=abc.

Rozwiązanie

Ćwiczenie 3

Niech A={a,b,c}. Rozważmy system przepisujący RS=(A,{(a,b),(b,a)}) i określmy na zbiorze wszystkich k-elementowych słów nad alfabetem A binarną relację ρkAk×Ak w następujący sposób:

u,vAk uρkvu*v.
(1) Pokaż, że ρk jest relacją równoważności
(2) Udowodnij, że ind ρk=2k (to znaczy, że relacja ρk ma 2k klas abstrakcji)
Rozwiązanie punktu 1
Wskazaówka do punktu 2
Rozwiązanie punktu 2

Ćwiczenie 4

Określ języki Lgen(RS,I) generowane przez system przepisujący RS=(A,P) oraz zbiór IA*, jeśli:

(1) A={a,b}, P={(a,aa),(a,b)}, I={a},
(2) A={a}, P={(aa,aaaaa),(aaa,aa)}, I={a,a5,a12},
(3) A={a,b,c}, P={(ab,ba),(c,aa),(aaa,ac)}, I={cc,abc}.
Rozwiązanie do punktu 1
Rozwiązanie do punktu 2
Rozwiązanie do punktu 3

Ćwiczenie 5

Określ języki Lacc(RS,I) rozpoznawane przez system przepisujący RS=(A,P) oraz zbiór IA*, jeśli:

(1) A={a}, P={(aaa,a),(aa,aaa)}, I={a,aa},
(2) A={a,b,c}, P={(a,bb),(a,ccc)}, I={abc,a2b2c2,a3b3c3,...}.
Rozwiązanie punktu 1
Rozwiązanie punktu 2

Ćwiczenie 6

Jaki język generuje gramatyka G=(VN,VT,P,v0), jeśli:

(1) VN={v0,v1,v2}, VT={a,b},
    P={v0v1v0v2,v0ab,v1a,v2b},
(2) VN={v0,v1}, VT={a,b},
    P={v0v1v0,v0bv1,v1v1v1,v1a},
Rozwiązanie punktu 1
Rozwiązanie punktu 2

Ćwiczenie 7

Podaj gramatykę która generuje język:

(1) L1={anbmcm+n:m,n0},
(2) L2={a2n:n0},
(3) L3={w:aw=2bw},
(4) L4={w=a1a2...an:ai{a,b}1jn ba1a2...ajaa1a2...ajba1a2...aj+3},
(5)  L5={an2:n1}.

Podajemy przykładowe gramatyki.

Rozwiązanie punktu 1
Rozwiązanie punktu 2
Rozwiązanie punktu 3
Rozwiązanie punktu 4
Rozwiązanie punktu 5

Ćwiczenie 8

Podaj gramatykę, która generuje język poprawnych wyrażeń arytmetycznych zbudowanych z operatorów dodawania i mnożenia oraz jednego argumentu oznaczonego symbolem a. Przykładem takiego wyrażenia może być np. a+aa.

Rozwiązanie
ZADANIA DOMOWE

Ćwiczenie 9

Niech RS=({a,b,c},{(a,b),(b,c),(b,a),(cc,b)}) będzie systemem przepisującym. Sprawdź, czy w systemie tym można przepisać bezpośrednio słowo x na słowo y, jeśli:

(1) x=aabbcc, y=bacbb,
(2) x=baccaa, y=cbbba.

Ćwiczenie 10

Określ język Lgen(RS,I) generowany przez system przepisujący RS=(A,P) oraz zbiór IA*, jeśli A={a,b}, P={(bb,a)}, I={b,b2,b3,...}.

Ćwiczenie 11

Jaki język generuje gramatyka G=(VN,VT,P,v0), jeśli:

(1) VN={v0,v1,v2,v3}, VT={a,b},
     P={v0v1v3,v1av1b,v1av2b,v2bv2a,
     v2ba,v3av3b,v3ab},
(2) VN={v0}, VT={a,b},
     P={v0v0v0,v0av0b,v0bv0a,v0ab,v0ba}

Ćwiczenie 12

Podaj gramatykę, która generuje język:

(1) L2={anb2n:n0},
(2) L4={akbalbam:k,l,m1},
(3) L5={w:aw=bw},
(4) L8={ww:w{a,b}+}.

Ćwiczenie 13

Określ, do jakich klas (możliwie najwęższych) należą gramatyki, które generują języki z zadań 1.7 oraz 1.12.

Ćwiczenie 14

Załóżmy, że poprawny adres e-mailowy składa się z następujących elementów: niepustego identyfikatora złożonego z samych liter maksymalnie z czterech), znaku "małpy", niepustej nazwy serwera złożonej z samych liter (maksymalnie czterech), kropki oraz dwuliterowej nazwy domeny. Załóżmy, że alfabet składa się tylko z liter a, b i c. Poprawnym adresem e-mailowym jest np. adres babc@aaa.cc. Zbuduj gramatykę, która generuje wszystkie poprawne adresy e-mailowe.