Lista 2

Transkrypt

Lista 2
Informatyka, studia stacjonarne I stopnia, semestr 3
rok akademicki 2016/2017
Teoretyczne Podstawy Informatyki – zadania, zestaw 2
Języki bezkontekstowe, gramatyki bezkontekstowe, automaty ze stosem,
własności języków bezkontekstowych
1. Dana jest gramatyka bezkontekstowa G=({S, T, X}, {a, b}, P, S)
P:
S  aTb | bTa
T XTX | X | 
Xa|b
Podać:
a) zmienne gramatyki G
b) symbole terminalne gramatyki G
c) symbol początkowy
d) trzy słowa należące do języka
e) trzy słowa nienależące do języka
Czy prawdą jest, że:

f) T  aba
j)
X  aba


k) T  XX
g) T  aba


h) S  T
l)
T  XXX


m) XXX  aba
i) S  
Opisać w języku naturalnym język L(G)
2. Zdefiniować gramatykę bezkontekstową generującą wyrażenia postaci:
a) L(G) = {an bm ck ;
n, m, k  N}
n m n
b) L(G) = {a b c ;
n, m  N}
c) L(G) = {an bn+4;
n  N}
n 3n
d) L(G) = {a b ;
n  N}
n m k l m n
e) L(G) = {a b c d e f ;
n, m, k, l  N}
f) L(G) = {S i ; S = aa (bbb)n cm dd, i, n, m  N}
g) L(G) = {SP ; S = (a|b)+, P = (c|d)+, |S| = |P|}
h) ciąg symboli x, po którym jest ciąg symboli y, po którym jest ciąg symboli z. Ilość
symboli x i z jest parzysta, a ilość symboli y nieparzysta (x2n y2m-1 z2k; n, m, k  N)
i) język nad alfabetem T={x, y, z}, na który składają się wszystkie słowa będące
palindromami (czyli słowami, które czytane od początku i od końca są takie same)
j) język nad alfabetem T={x, y, z} zawierający co najmniej cztery symbole x
k) ciąg, w którym na pozycjach nieparzystych jest symbol a lub b, a na pozycjach
parzystych symbol b lub c
l) język nad alfabetem T={a, b, c} zawierający słowa, w których na pozycji pierwszej,
środkowej i ostatniej występuje symbol b
m) język nad alfabetem T={x, y, z} zawierający słowa, w których na drugiej pozycji
znajduje się ten sam symbol co na pozycjach ostatniej, przedostatniej i trzeciej od
końca
n) ciąg symboli x po którym jest ciąg symboli y. Symboli x jest dwa do trzech razy
więcej niż symboli y
1
Informatyka, studia stacjonarne I stopnia, semestr 3
rok akademicki 2016/2017
o) ciąg symboli x po którym jest ciąg symboli y. Ilość symboli x nie może być taka sama
jak ilość symboli y
p) L(G)={S2P ; SR jest podsłowem słowa P, P=T*, T={0,1}}
q) L(G)={0n 2 0m 1k ;
n + m  1, k  1}
n
m k
r) L(G)={0 2 0 1 ;
n + m = k – 1, k  2}
n
m k
l
s) L(G)={0 a 0 1 b 1 ;
n + m = k + l  1}
t) L(G)={an bm ck ;
n = m lub m = k}
u) L(G)={an bm ck ;
n  m lub m  k}
n m 3(n+m)
v) L(G)={a b c
; n, m  N }
w) L(G)={0n 1m 2k ;
n = 2m lub m = 2k}
x) język nad alfabetem T={a, b} nie zawierający słów an bn
y) język nad alfabetem T={a, b, c} składający się ze wszystkich słów nie będących
palindromami
z) ciąg symboli a i b, w którym łańcuch tekstowy utworzony z trzech pierwszych
symboli jest taki sam, jak łańcuch tekstowy utworzony z trzech środkowych symboli.
3. Zdefiniować gramatyki bezkontekstowe realizujące języki podane w zadaniu 2 z zestawu
zadań dotyczącym języków regularnych
4. Jakie języki realizują poniższe gramatyki bezkontekstowe. Podać opis słowny i trzy
przykładowe poprawne słowa.
a) G=({S}, {(, )}, P, S)
P:
S  SS | (S) | 
b) G=({A, B, C}, {a, b}, P, C)
P:
C  AB | CAB
A  aAbb | abb
B  aBbbb | abbb
c) G=({S, A, B}, {x, y}, P, S)
P:
S  AA | B
A  xA | Ax | y
B  xBxx | y
d) G=({S, Y}, {a, b}, P, S)
P:
S aSb | aY | Yb
Y  aY | bY | 
e) G=({S}, {a, b}, P, S)
P:
S  aSbS
S  bSaS
S
5. Dana jest gramatyka:
G = ({W, S, C}, {a, b, c, d, +, –, *, /,( , )}, P, W)
P:
WW+S|W–S|S
SS*C|S/C|C
C  (W) | a | b | c | d
2
Informatyka, studia stacjonarne I stopnia, semestr 3
rok akademicki 2016/2017
Które z czterech podanych słów (a+b*c)*(–d+a)*c, ((a*b+c)*d–a)/(a+b*c),
a–b*((c+d)(a–b)), (d*d+b*b)–((c+d)*(a+b*b) jest słowem poprawnym języka L(G)? Dla
poprawnego słowa narysować drzewo wyprowadzenia. Dla błędnych słów wyjaśnić
dlaczego nie mogą być wygenerowane przez gramatykę.
6. Dana jest gramatyka:
G=({W, S}, {a, b, c, +, –, *, /, ^, ( , ), }, P, W)
P:
WW+W|W–W|W*W|W/W|W^W|S
S  (W) | a | b | c
Czy słowo (a+b)–b*c^a jest słowem poprawnym języka L(G)? Jeżeli tak, narysować jego
drzewo rozbioru. Czy jest to gramatyka jednoznaczna, czy wieloznaczna? Czy istnieje
tylko jedno takie drzewo? Jeżeli nie to narysować wszystkie możliwe drzewa rozbioru.
7. Dla podanych dwóch gramatyk podać która z nich jest jednoznaczna, a która
wieloznaczna. Dla gramatyki wieloznacznej podać przykładowe słowo i narysować dla
niego dwa różne drzewa wyprowadzenia.
G=({S}, {a, b}, P, S)
P:
S  aS | aSbS | 
G=({S, A, B}, {a, b}, P, S)
P:
S  AbB
A  aA | 
B  aB | bB | 
8. Opisać języki generowane przez podane dwie gramatyki G1 i G2. Czym różnią się te
języki?
a) G1=({S, X}, {a, b, c}, P, S)
P:
G2=({S, Y, Z}, {a, b, c}, P, S)
S  XaXaX
X  aX | bX | cX | 
P:
b) G1=({S, B}, {a, b}, P, S)
P:
S  YaYaZ
Y  bY | cY | 
Z  aZ | bZ | cZ | 
G2=({S, A}, {a, b}, P, S)
S  aBS| aB
B  b | bB
P:
S  aA
A  b | bA | bS
9. Zdefiniować GBK generujące następujące JBK nad alfabetem T={a, b}
a) Język składający się ze słów, w których symboli a jest tyle samo co symboli b
Podać trzy różne gramatyki dla trzech podanych poniżej ograniczeń nałożonych na
postać produkcji. Dopuszczalne jest także stosowanie produkcji pustych A
i.
ii.
iii.
w każdej z produkcji występuje tylko jeden symbol terminalny
w każdej z produkcji występują dokładnie dwa symbole terminalne, nie
sąsiadujące bezpośrednio ze sobą
w każdej z produkcji występują dokładnie dwa, sąsiadujące ze sobą, symbole
terminalne
b) Język składający się ze słów, w których symboli a jest dwa razy więcej niż symboli b;
Podać cztery różne gramatyki dla czterech podanych poniżej ograniczeń nałożonych
na postać produkcji. Dopuszczalne jest także stosowanie produkcji pustych A
i.
ii.
w każdej z produkcji występują cztery zmienne
w każdej z produkcji występują trzy zmienne
3
Informatyka, studia stacjonarne I stopnia, semestr 3
rok akademicki 2016/2017
w każdej z produkcji występuje jedna lub dwie zmienne
w każdej z produkcji występuje jedna zmienna
iii.
iv.
10. Zdefiniować gramatykę:
a) generującą liczby całkowite. Liczba całkowita składa się z niepustego ciągu cyfr i
może zawierać znak. Podać także postać gramatyki w której liczby nie mogą posiadać
zbędnych zer na początku.
b) generującą liczby dziesiętne i całkowite o postaci określonej poniższymi przykładami
175,33
521
–,01
0,156
–1004
00,0
85478,141581
+0001230,500
,314
c) generującą wektory trójwymiarowe, gdzie każda składowa wektora jest liczbą
całkowitą lub dziesiętną. Przykłady:
[384,5; 11; 0,75]
[1; 2; 7]
[1,262; 6,88515; -199]
[+0,0025; +0.33; -12,7]
d) generującą liczby dziesiętne o postaci wykładniczej określone poniższymi
przykładami
7531,33e10
1e3
,162e0
–0073e5
6,2800e+7
0,7601e–3
214e4
–1004,0e–02
–0,0e106
00320,5001e55
e) generującą liczby zespolone o postaci określonej poniższymi przykładami
12+5i
+0,017-i
1+7005*i
3,14+2,56j
22,007
11,450i
0,0-0012i
9,55
-6
i
11. Podać gramatyki bezkontekstowe realizujące języki opisane wyrażeniami regularnymi
a) 0 (0 | 1 | 2)+ 3* 0
b) b+ (a | b*c) ba
c) (a+ | b+)(bc | ac)* c+
d) (b* | c (bb | a))*
e) (10+ | 1(01)+) | (0 | 1)* (00)+
12. Czy podane AS i gramatyki są równoważne? Jeżeli nie to podać GBK równoważną
podanemu automatowi skończonemu
a)
S  0A0A0
A  A10 | 
1
start
q0
0
0
q1
0
q2
q3
1
b)
S  0A0A0
A  A1 | 
1
start
q0
0
0
q1
0
q2
q3
1
c)
q1
1
start
q0
S A|B
A  10 | 0C
B  000
C  1 | 00
S  AB | C
A 0|1
B  D0
C  10
D  D1 | 
0
0
0
q3
1
q2
d)
start
q0
0
1
q1
1
q3
q2
1
0
1
0
q4
4
Informatyka, studia stacjonarne I stopnia, semestr 3
rok akademicki 2016/2017
13. Przekształcić podane gramatyki do postaci normalnej Chomsky’ego
a) G=({S, B}, {0,1}, P, S)
P:
S  BSB | B | 0
B  000 | 11 | 
b) G=({S, B, C}, {a, b, c}, P, S)
P:
S  aSb | aBCa
B  C | ac | ca
C  abB | abab
c) G=({S, A, B, C, D, E}, {a, b, c}, P, S)
P:
S  aAa | bBb
AC|a
Bc|b
C  CDEC
D  A | B | ab
Ea|
14. Zdefiniować gramatykę generującą instrukcje podstawienia o postaci określonej
poniższymi przykładami
A=B+C[I]+15
E[3]= –K–C[11]
X[30,J]=1–B6+Y[K,4] –0+G001[A]
A1=+1–Z+T[B12]
T[J23,34]=R2347[10,11]
A10[I11,I12]=B[I,J]+C[J,K]
15. Zdefiniować gramatykę generującą instrukcje warunkowe o postaci określonej
poniższymi przykładami
if (a<5,05) then suma:=5 if (cena>=b5) then a:=d
if (bc27d= -15) then nx2d4:=34,52
if (0,015<>z2nxt) then delta:= –21,41415
if (wynik>-2,567) then gram:= 100,10
Jak należałoby zmienić definicję gramatyki, aby w warunku niemożliwe było porównanie
dwóch liczb
16. Zdefiniować gramatykę generującą teksty zawierające niezagnieżdżone znaczniki
pogrubienia i pochylenia tekstu ( [B], [/B], [I], [/I] ). Przykładowe słowo:
To [B] jest [/B] przykładowe [I] zdanie [/I]. To [B] jest [I] drugie [/B] przykładowe [/I]
zdanie. [I] To [/I] jest [B][I] trzecie przykładowe [/B] zdanie.
Jak należałoby zmienić definicję gramatyki, aby tekst zawsze kończył się tekstem
normalnym (tzn. aby były zakończone wszystkie otwarte znaczniki)
17. Zdefiniować gramatykę generującą wielomiany algebraiczne w zapisie Hornera. Dla
współczynników wielomianu może być stosowany zapis w notacji wykładniczej
zmiennoprzecinkowej. Przykładowe słowa:
(–3,69*x+0,1)*x+2
(((2*x–22,75)*x+5,112e3)*x+3,1e-6)*x–1723
x–1
18. Podać gramatykę definiującą ciąg zawierający trójkąty i czworokąty rozmieszczone w
trójwymiarowej przestrzeni i opisujące siatkę obiektu 3D. Każdy trójkąt lub czworokąt
znajdujący się na liście to zbiór trzech lub czterech punktów. Każdy punkt natomiast jest
opisany przez umieszczone w nawiasach kwadratowych i oddzielone przecinkami trzy
współrzędne kartezjańskie, z których każda jest liczbą całkowitą lub dziesiętną. Kolejne
wielokąty umieszczone na liście oddzielone są przecinkami, przecinkami oddzielone są
także punkty tworzące wielokąt. Zbiór opisujący jeden trójkąt lub czworokąt może
zawierać opcjonalnie czwarty element (dla trójkąta) lub piąty (dla czworokąta) jakim jest
5
Informatyka, studia stacjonarne I stopnia, semestr 3
rok akademicki 2016/2017
zdefiniowany dla tego wielokąta kolor. Wtedy ostatni, wymieniony w zbiorze, element
zaczyna się definicją „c=” po której w nawiasach kwadratowych są podane trzy liczby
naturalne z zakresu od 0 do 255 określające składowe R,G,B koloru.
Poniżej podane jest przykładowe słowo tej gramatyki:
( {[12.5,7.3,124],[1,2,3],[0.01,0.015,-0.0027]}, {[100,22,1],[0,0.0,-1.0],[1.7,1.9,0.17] ,
[-20,8,8.7243]}, {[7,15,28.5],[-22.25,5,-10],[7.1,9.1,10] ,[1.1,-1.2,1.4 ],c=[0,127,255]},
{[1,1,1],[2.87,2,2],[-2,3,-4],c=[253,11,100]} )
19. Podać gramatykę definiującą składnię prostego języka sterującego ruchem kursora
graficznego zostawiającego ślad po swoim przemieszczeniu (tak jak żółw w języku
Logo). Żółw może przemieszczać się do przodu lub cofać się o zadaną ilość jednostek
podanych jako liczba naturalna. Służą do tego komendy „np” i „ws” (przykłady: np 100,
ws 223, np 1). Żółw może obracać się w lewo lub w prawo o zadany kąt w postaci
dodatniej liczby dziesiętnej. Służą do tego komendy „pw” i „lw” (np. pw 90, lw 45,
pw 33.3333, lw 0.203). Żółw podczas ruchu może zostawiać ślad lub nie (komendy „opu”
i „pod”). Pewne czynności możemy powtarzać ujmując je w nawiasy kwadratowe i przed
tymi nawiasami dodając komendę „powt” wraz z argumentem będącym liczba naturalną
określającą ilość powtórzeń (przykład: powt 12 [...]). Komendy i ich argumenty
rozdzielamy spacją. Kolejne komendy rozdzielamy co najmniej jednym znakiem białym.
Do znaków białych zaliczamy spację, tabulator lub znak przejścia do nowej linii.
20. Podać gramatykę definiującą nagłówek pętli for o składni takiej jak w języku C, ale z
następującymi ograniczeniami. Gramatyka powinna definiować tylko pętlę for wraz z
wyrażeniami podawanymi w nawiasach (czyli bez instrukcji występującej po zamknięciu
nawiasu). Pierwsze wyrażenie w nawiasie składa się z oddzielonych przecinkami
kolejnych instrukcji podstawienia do zmiennych wartości całkowitych. Drugie wyrażenie
jest warunkiem logicznym. Trzecie wyrażenie tak jak pierwsze składa się z oddzielonych
przecinkami kolejnych instrukcji podstawienia lub instrukcji inkrementacji albo
dekrementacji (+ +, – –).
21. Podać gramatykę definiującą instrukcję switch występującą w języku C. Zmienną
instrukcji switch oznaczyć jako „zm”, wartości wymieniane po instrukcjach case jako
„wart”, a instrukcje wykonywane na skutek rozpoznania wartości „wart” jako „instr”.
22. Zdefiniować gramatykę generującą poprawne formuły sumujące liczby w arkuszu
kalkulacyjnym. Przykładowe formuły:
=K34 =A1+B5 =DG1234–$A$11+PQ1–M64
=$V1–W$3 =SUMA(A6:D15)
=SUMA(BA48:BC81;$B$1:$B$8;K12:K$112)
=SUMA($B5:C$6)+SUMA(D2;E4;GH123)–SUMA($A220:$A250;BZ222:BZ232)
23. Zdefiniować gramatykę generującą łańcuchy tekstowe przedstawiające poprawne
wyrażenia regularne (WR) nad alfabetem ={0, 1, 2, ..., 9}
24. Podana jest następująca gramatyka G=({instr, instr war, instr war rozsz, instr podst,
zm, cyfra}, {a, b, ... , z, 0, 1, 2, ... , 9, :, =, <}, P, instr)
P:
instr  instr war | instr war rozsz | instr podst
instr war  if war then instr
instr war rozsz  if war then instr else instr
instr podst  zm := liczba
6
Informatyka, studia stacjonarne I stopnia, semestr 3
rok akademicki 2016/2017
war  zm < liczba
zm  a | b | ... | z
liczba  0 | 1 | ... | 9
Czy podana gramatyka jest jednoznaczna? Jeżeli nie to podać gramatykę jednoznaczną dla
języka L(G)
25. Narysować automaty ze stosem (AZS) dla poniższych JBK:
a) L(G)={0n1n; n  N}
b) L(G)={anbmck; n,m,k  N, n = m lub n = k}
c) L(G)={wwR};  = {0,1}
26. Stosując algorytm CYK sprawdzić przynależność słów do podanych GBK
a) G = ({L,D,E},{a,b,c,”,”,(,)},P,L)
P:
L  (ED
D  ,ED | )
EL|A
A  Aa | Ab | Ac | a | b | c
Czy słowa „(abb,(bc,cac))” i „(c,b,a,((c,bb)aaa))” są generowane przez podaną
gramatykę? Skonstruować tabele wywodu metodą CYK dla każdego ze słów.
b) G = ({S,A,B},{a,b},P,S)
P:
S  aB | bA
A  a | aS | bAA
B  b | bS | aBB
Czy słowa „abaabbaba” i „abbababaab” są generowane przez podaną gramatykę?
Skonstruować tabele wywodu metodą CYK dla każdego ze słów.
27. Zamienić automat ze stosem
a) akceptujący przez opróżnienie stosu na automat akceptujący przez osiągnięcie stanu
akceptującego. Zamianę wykonać dla automatu definiującego język
L(A)={wwR};  = {0,1}
b) akceptujący przez osiągnięcie stanu akceptującego na akceptujący przez opróżnienie
stosu. Zamianę wykonać dla automatu definiującego język
L(A)={0n1n; n  N}
28. Zamienić podaną gramatykę bezkontekstową na automat ze stosem
G=({S, A, B}, {x, y, z}, P, S)
P:
S  AB | CAB
A  xyA | xy
B  zzB | zz
29. Dla podanych dwóch języków bezkontekstowych utworzyć GBK realizujące sumę tych
języków, ich iloczyn i różnicę, domknięcie tych języków oraz ich dopełnienie.
L1 = {an bm ck; n,m,kN, m=2n}
L2 = {an bm ck; n,m,kN, k=3m}
7
Informatyka, studia stacjonarne I stopnia, semestr 3
rok akademicki 2016/2017
30. Korzystając z lematu o pompowaniu wykazać, że następujące języki są lub nie są
bezkontekstowe
a)
b)
c)
d)
L={0n1m2m; n,m  1}
L={0n1n2n; n  1}
L={0n1m2k3p; n>m>k>p 1}
L={0n1m2k3p; n>m 1, k>p 1}
31. Które z poniższych języków są językami bezkontekstowymi, a które tylko regularnymi?
a) L(G)={an bn; n  N}
b) L(G)={an bn; n  N, n  104}
c) ciąg symboli a, b tworzący palindrom nie krótszy niż 256 symboli
d) ciąg symboli a, b tworzący palindrom nie dłuższy niż 256 symboli
e) ciąg symboli a, b tworzący palindrom o dowolnej długości
Diagramy składni, parsery
32. Podać diagramy składni oraz kody parserów napisane w języku C dla podanych GBK
a) G = ({A, B, C}, {x, (, ), +, –}, P, A)
P: A  x | (B)
B  AAC
C   | +AC | –AC
b) G = ({E, T, F, I}, {x, y, z, (, ), +, –, *, /}, P, E)
P: E  T | E+T | E–T
T  F | T*F | T/F
F  I | (E)
Ix|y|z|a|b|c
c) G = ({L, D, E},{a,b,c,”,”,(,)}, P, L)
P: L  (ED
D  ,ED
D)
EL|a|b|c
8