260 likes | 496 Views
Uvod u teoriju računarstva http://www.zemris.fer.hr/ predmeti / utr /. Zadaci za vje žbu Priprema za zavr š ni ispit Fakultet elektrotehnike i računarstva Sveučilište u Zagrebu. Zadatak br. 3 0. Konstruirati gramatiku koja generira nizove iz jezika L.
E N D
Uvod u teoriju računarstvahttp://www.zemris.fer.hr/predmeti/utr/ Zadaci za vježbu Priprema za završni ispit Fakultet elektrotehnike i računarstva Sveučilište u Zagrebu
Zadatak br. 30 • Konstruirati gramatiku koja generira nizove iz jezika L. L={w(a+b+c)* | nanb, nanc, nbnc}
Zadatak br. 30 • produciramo jednak broj A B i C SABCS Aa Bb Cc
Zadatak br. 30 • uklonimo jedan znak SABCS TABT Aa Bb SABT Cc SACU UACU SBCV VBCV
Zadatak br. 30 • uklonimo drugi znak SABCS TABT XAX Aa TAX X Bb SABT TBY YBY Cc SACU UACU Y SBCV UAX ZCZ UCZ Z VBCV VBY VCZ
Zadatak br. 30 • dodajemo permutacije znakova SABCS TABT XAX ABBA Aa TAX X ACCA Bb SABT TBY YBY BCCB Cc SACU UACU Y BAAB SBCV UAX ZCZ CAAC UCZ Z CBBC VBCV VBY VCZ
Zadatak br. 31 • Konstruirati gramatiku koja generira nizove oblika aibjckdiej pri čemu su i,j,k1. • Gramatika neograničenih produkcija: • G = (V, T, P, S) • Oblik produkcija: • ab a, bnizovi završnih i nezavršnih znakova • a e
Zadatak br. 31 Oblik nizova: i, j, k1 aibjckdiej #(a) = #(d) #(b) = #(e) #(c) Ne generira prazni niz.
Zadatak br. 31 Konstrukcija gramatike: aibjckdiej V = { A, B, C, D, E, S } T = { a, b, c, d, e } Sa b c d e S početni nezavršni znak Sa b c d e Sa A b B c C d e A a a A D b B c C d e A a A D B b B E C c C A e B e C e D b b D E c c E D c c D E d d E D d d d E e e e
Zadatak br. 31 Primjer generiranja niza aabbccddee: S aAbBcCde aAbBcCde aaADbBcCde aaADbBcCde aaADbBcCde aaDbBcCde aaDbBcCde aaDbbBEcCde aaDbbBEcCde aaDbbBEcCde aaDbbEcCde aaDbbEcCde aaDbbEccCde aaDbbEccCde aaDbbEccCde aaDbbEccde aaDbbEccde aaDbbcEcde aaDbbcEcde aaDbbcEcde aaDbbccEde aaDbbccEde aaDbbccEde aaDbbccdEe aaDbbccdEe aaDbbccdEe aaDbbccdee aaDbbccdee aaDbbccdee aabDbccdee aabDbccdee aabDbccdee aabbDccdee aabbDccdee aabbDccdee aabbcDcdee aabbcDcdee aabbcDcdee aabbccDdee aabbccDdee aabbccDdee aabbccddee aabbccddee Sa A b B c C d e A a A D B b B E A e B e C c C D b b D E c c E C e D c c D E d d E D d d d E e e e
Zadatak br. 32 • Pretvoriti zadanu gramatiku s neograničenim produkcijama u kontekstno ovisnu gramatiku. Sa A b B c C d e A a A D B b B E A e B e C c C D b b D E c c E C e D c c D E d d E D d d d E e e e Postupak pretvorbe: Svi nezavršni znakovi moraju biti grupirani s nekim završnim znakom.
Zadatak br. 32 Produkcije kontekstno ovisne gramatike: • ab , |b| |a|, ae • a1Aa2a1ba2 , be [aA] a [aAD] [bB] b [bBE] Sa A b B c C d e A a A D B b B E S [aA] [bB] [cC] d e A e B e [aA] a [bB] b [Ec] [cE] [cC] c[cC] [Db] [bD] [bD] b b [Db] [cE] c c [Ec] C c C D b b D [bD] c b [Dc] E c c E [cE] d c [Ed] C e D c c D [Dc] [cD] E d d E [Ed] [dE] [cC] c D d d d [cD] c c [Dc] E e e e [dE] d d [Ed] [cD] d c d d [dE] e d e e [aAD] b [aA] [Db] [bBE] c [bB] [Ec] S[aA][bB][cC] d e S [aA] [bB] [cC] d e a [aAD] b [bBE]c [cC] d e a [aAD] b [bBE]c [cC] d e a [aA] [Db] [bBE] c [cC] d e a [aA] [Db][bBE] c [cC] d e a [aA] [Db] [bB] [Ec][cC] d e a [aA] [Db] [bB] [Ec] [cC] d e a a [Db] b [Ec] c d e a a b b c c d d e e
Zadatak br. 32 Rješenje: Kraće rješenje: postupak se provede samo za prazne nezavršne znakove S [aA] [bB] [cC] d e [bB] b [bB] E [aA] a [aAD] [bB] b [bBE] [cC] c[cC] [aA] a [aA] D [aA] a [bB] b [cC] c [aAD] b [aA] [Db] [bBE] c [bB] [Ec] [Db] [bD] [Ec] [cE] D b b D E c c E [bD] b b [Db] D c c D E d d E [cE] c c [Ec] D d d d E e e e [bD] c b [Dc] [cE] d c [Ed] [Dc] [cD] [Ed] [dE] [dE] d d [Ed] [cD] c c [Dc] [dE] e d e e [cD] d c d d
Zadatak br. 33 • Konstruirati gramatiku koja generira nizove oblika 0n1n2n pri čemu je n0. L={0n1n2n | n0}
n = 0 (trivijalni slučaj) gramatika neograničenih produkcija n = 1 Zadatak br. 33 S0A12 S A0AB A B111C C11C C222 S S 0 A 1 2 0 1 2
n = 4 Zadatak br. 33 1) S0A12 2) S 3) A0AB 4) A 5) B111C 6) C11C 7) C222 S 0 0 0 0 1 1 C 1 1 C C 2 0 A 1 2 0 0 0 0 1 1 1 C 1 C C 2 0 0 A B 1 2 0 0 0 0 1 1 1 1 C C C 2 0 0 0 A B B 1 2 0 0 0 0 1 1 1 1 C C 2 2 0 0 0 0 A B B B 1 2 0 0 0 0 1 1 1 1 C 2 2 2 0 0 0 0 B B B 1 2 0 0 0 0 1 1 1 1 2 2 2 2 0 0 0 0 B B 1 1 C 2 0 0 0 0 B 1 1 C 1 C 2 0 0 0 0 1 1 C 1 C 1 C 2
Zadatak br. 34 Konstruirati konteksno ovisnu gramatiku koja generira nizove iz jezika L. L={0n1n2n | n1}
Zadatak br. 34 SAX A0AB A0B BX12 B11B B2122 S 0 0 0 0 B 1B B2 A X 0 0 0 0 1B B B2 0 A B X 0 0 0 0 1 B B 1 2 2 0 0 A B B X 0 0 0 0 1 B 1B 2 2 0 0 0 A B B B X 0 0 0 0 1 1B B2 2 0 0 0 0B B B BX 0 0 0 0 1 1 B 1 2 2 2 0 0 0 0 B B B 1 2 0 0 0 0 1 1 1B 2 2 2 0 0 0 0 B B 1B 2 0 0 0 0 1 1 11 2 2 2 2
Zadatak br. 35 Konstruirati gramatiku koja generira nizove iz jezika koji prihvaća TS M. TS M=( {q0,q1,q2,q3,q4,q5,qP}, {0,1}, {0,1,B}, , q0, B, qP ) 0 1 B q0 q1, B, R q2, B, R qP, B, R q1 q1, 0, R q1, 1, R q3, B, L q2 q2, 0, R q2, 1, R q4, B, L q3 q5, B, L - - q4 - q5, B, L - q5 q5, 0, L q5, 1, L q0, B, R
0 1 B q0 q1, B, R q2, B, R qP, B, R Početne produkcije: A1q0A2 A2[0,0]A2 A2[1,1]A2 A2A3 A3[,B]A3 A3 q1 q1, 0, R q1, 1, R q3, B, L q2 q2, 0, R q2, 1, R q4, B, L q3 q5, B, L - - q4 - q5, B, L - q5 q5, 0, L q5, 1, L q0, B, R za prijelaz (q0,0)=(q1,B,R): za prijelaz (q0,B)=(qP,B,R): q0[0,0][0,B]q1 q0[0,B][0,B]qP q0[1,B][1,B]qP q0[,B][,B]qP za prijelaz (q0,1)=(q2,B,R): q0[1,1][1,B]q2
0 1 B za prijelaz (q1,0)=(q1,0,R): q0 q1, B, R q2, B, R qP, B, R q0[0,0][0,B]q1 q1 q1, 0, R q1, 1, R q3, B, L q2 q2, 0, R q2, 1, R q4, B, L za prijelaz (q1,1)=(q1,1,R): q3 q5, B, L - - q0[1,1][1,B]q2 q4 - q5, B, L - q5 q5, 0, L q5, 1, L q0, B, R za prijelaz (q1,B)=(q3,B,L): [0,0]q1[0,B]q3[0,0][0,B] [0,0]q1[1,B]q3[0,0][1,B] [0,0]q1[,B]q3[0,0][,B] [1,1]q1[0,B]q3[1,1][0,B] [1,1]q1[1,B]q3[1,1][1,B] [1,1]q1[,B]q3[1,1][,B] [0,B]q1[0,B]q3[0,B][0,B] [0,B]q1[1,B]q3[0,B][1,B] [0,B]q1[,B]q3[0,B][,B] [1,B]q1[0,B]q3[1,B][0,B] [1,B]q1[1,B]q3[1,B][1,B] [1,B]q1[,B]q3[1,B][,B]
0 1 B za prijelaz (q2,0)=(q2,0,R): q0 q1, B, R q2, B, R qP, B, R q2[0,0][0,0]q2 q1 q1, 0, R q1, 1, R q3, B, L q2 q2, 0, R q2, 1, R q4, B, L za prijelaz (q2,1)=(q2,1,R): q3 q5, B, L - - q2[1,1][1,1]q2 q4 - q5, B, L - q5 q5, 0, L q5, 1, L q0, B, R za prijelaz (q2,B)=(q4,B,L): [0,0]q2[0,B]q4[0,0][0,B] [0,0]q2[1,B]q4[0,0][1,B] [0,0]q2[,B]q4[0,0][,B] [1,1]q2[0,B]q4[1,1][0,B] [1,1]q2[1,B]q4[1,1][1,B] [1,1]q2[,B]q4[1,1][,B] [0,B]q2[0,B]q4[0,B][0,B] [0,B]q2[1,B]q4[0,B][1,B] [0,B]q2[,B]q4[0,B][,B] [1,B]q2[0,B]q4[1,B][0,B] [1,B]q2[1,B]q4[1,B][1,B] [1,B]q2[,B]q4[1,B][,B]
0 1 B za prijelaz (q3,0)=(q5,B,L): q0 q1, B, R q2, B, R qP, B, R [0,0]q3[0,0]q5[0,0][0,B] [1,1]q3[0,0]q5[1,1][0,B] [0,B]q3[0,0]q5[0,B][0,B] [1,B]q3[0,0]q5[1,B][0,B] q1 q1, 0, R q1, 1, R q3, B, L q2 q2, 0, R q2, 1, R q4, B, L q3 q5, B, L - - q4 - q5, B, L - q5 q5, 0, L q5, 1, L q0, B, R za prijelaz (q4,1)=(q5,B,L): za prijelaz (q5,0)=(q5,0,L): [0,0]q4[1,1]q5[0,0][1,B] [1,1]q4[1,1]q5[1,1][1,B] [0,B]q4[1,1]q5[0,B][1,B] [1,B]q4[1,1]q5[1,B][1,B] [0,0]q5[0,0]q5[0,0][0,0] [1,1]q5[0,0]q5[1,1][0,0] [0,B]q5[0,0]q5[0,B][0,0] [1,B]q5[0,0]q5[1,B][0,0]
za prijelaz (q5,1)=(q5,1,L): 0 1 B q0 q1, B, R q2, B, R qP, B, R [0,0]q5[1,1]q5[0,0][1,1] [1,1]q5[1,1]q5[1,1][1,1] [0,B]q5[1,1]q5[0,B][1,1] [1,B]q5[1,1]q5[1,B][1,1] q1 q1, 0, R q1, 1, R q3, B, L q2 q2, 0, R q2, 1, R q4, B, L q3 q5, B, L - - q4 - q5, B, L - za prijelaz (q5,B)=(q0,B,R): q5 q5, 0, L q5, 1, L q0, B, R q5[0,B][0,B]q0 q5[1,B][1,B]q0 završni prijelazi za prihvaćanje niza: [0,B]qPqP0qP [1,B]qPqP1qP [,B]qPqP qP[0,B]qP0qP qP[1,B]qP1qP qP[,B]qP qP