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 | Xa|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: WW+S|W–S|S SS*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: WW+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 AC|a Bc|b C CDEC D A | B | ab Ea| 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 | ) EL|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,kN, m=2n} L2 = {an bm ck; n,m,kN, 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) Ix|y|z|a|b|c c) G = ({L, D, E},{a,b,c,”,”,(,)}, P, L) P: L (ED D ,ED D) EL|a|b|c 8