340 likes | 486 Views
Uvod u teoriju računarstva http://www.zemris.fer.hr/ predmeti / utr /. Zadaci za vje žbu Priprema za međuispit Fakultet elektrotehnike i računarstva Sveučilište u Zagrebu. Zadatak br. 25. Konstruirati potisni automat koji prihvaća nizove koje generira zadana gramatika. S xABy A zwA
E N D
Uvod u teoriju računarstvahttp://www.zemris.fer.hr/predmeti/utr/ Zadaci za vježbu Priprema za međuispit Fakultet elektrotehnike i računarstva Sveučilište u Zagrebu
Zadatak br. 25 • Konstruirati potisni automat koji prihvaća nizove koje generira zadana gramatika SxABy AzwA A BwC Bv B CvB CxA C Ab Pripremni korak: Pretvorba gramatike u Greibachin oblik Prvo se izbace produkcije. SxABy AzwA A BwC Bv B CvB CxA C SxABy AzwA A BwC Bw Bv B CvB CxA BwC Bw SxAByCxA SxAy AzwA A BwC Bw Bv CvB Cv SxAByCvB SxByCv SxAyCxA SxyCx AzwA Azw BwC Bw Bv BwCNE BwCDA CDA
Zadatak br. 25 Zamjena završnih znakova koji nisu na prvom mjestu s desne strane produkcija SxABy SxBy SxAy Sxy AzwA Azw BwC Bw Bv CvB Cv CxA Cx SxABD SxBD SxAD SxD AzwA Azw BwC Bw Bv CvB Cv CxA Cx Dy SxABD Dy SxBD Ew SxAD SxD AzEA AzE BwC Bw Bv CvB Cv CxA Cx y y y y w w
Zadatak br. 25 Izgradnja potisnog automata G=(V,T,P,S) M=({q},,,,q,S,) pri tome vrijedi =T, =V te za Ab(q,b,A)=(q,) SxABD SxBD SxAD SxD AzEA AzE BwC Bw Bv CvB Cv CxA Cx Dy Ew (q,x,S)= {(q,ABD),(q,BD),(q,AD),(q,D)} (q,z,A)={(q,EA),(q,E)} (q,w,B)={(q,C),(q,)} (q,v,B)=(q,) (q,v,C)={(q,B),(q,)} (q,x,C)={(q,A),(q,)} (q,y,D)=(q,) (q,w,E)=(q,)
qi qj * M Zadatak br. 26 • Konstruirati konteksno neovisnu gramatiku koja generira nizove koje prihvaća zadani potisni automat M. M=( {q0,q1}, {a,b,c}, {A,K}, , q0, K, ) (q0,b,K)=(q0,AK) (q0,a,A)=(q1,A) (q1,,K)=(q1,) (q0,b,A)=(q0,AA) (q1,c,A)=(q1,) Da bi se gramatika mogla konstruirati, potisni automat mora prihvaćati praznim stogom G=(V,T,P,S) pri tome je T=, a V={S}{[qiAqj] | qi,qjQ, A} Uvodimo početne produkcije iz početnog nezavršnog znaka S [ q0 K qi ], qiQ S[ q0 K q0 ] S[qi, A, qj] S[ q0 K q1 ]
Zadatak br. 26 Daljnji nezavršni znakovi i produkcije gramatike grade se na temelju prijelaza potisnog automata i sljedećeg pravila: Za prijelaz (qj,a,X)=(qk,ABC...Z) uvode se sljedeći nezavršni znakovi i produkcije: [qjXqe]a[qkAqf][qfBqg][qgCqh]...[qiZqe] qe,qf,qg,qh,qiQ Ako je |Q|=n i |ABC...Z|=m onda iz jednog prijelaza nastaje nm produkcija posebni slučaj ako je m=0: (qj,a,X)=(qk,) [qjXqk]a, aT{} Za prijelaz (q0,b,K)=(q0,AK) uvodimo: [q0Kq0]b[q0Aq0][q0Kq0] [q0Kq0]b[q0Aq1][q1Kq0] [q0Kq1]b[q0Aq0][q0Kq1] [q0Kq1]b[q0Aq1][q1Kq1] Za prijelaz (q0,a,A)=(q1,A)uvodimo: [q0Aq0]a[q1Aq0] [q0Aq1]a[q1Aq1]
Zadatak br. 26 Za prijelaz (q0,b,A)=(q0,AA)uvodimo: [q0Aq0]b[q0Aq0][q0Aq0] [q0Aq0]b[q0Aq1][q1Aq0] [q0Aq1]b[q0Aq0][q0Aq1] [q0Aq1]b[q0Aq1][q1Aq1] Za prijelaz (q1,c,A)=(q1,)uvodimo: [q1Aq1]c Za prijelaz (q1,,K)=(q1,)uvodimo: [q1Kq1] Dobivena gramatika: S[q0Kq0] S[q0Kq1] [q0Kq0]b[q0Aq0][q0Kq0] [q0Kq0]b[q0Aq1][q1Kq0] [q0Kq1]b[q0Aq0][q0Kq1] [q0Kq1]b[q0Aq1][q1Kq1] [q0Aq0]a[q1Aq0] [q0Aq1]a[q1Aq1] [q0Aq0]b[q0Aq0][q0Aq0] [q0Aq0]b[q0Aq1][q1Aq0] [q0Aq1]b[q0Aq0][q0Aq1] [q0Aq1]b[q0Aq1][q1Aq1] [q1Aq1]c [q1Kq1]
Zadatak br. 26 Dobivena gramatika može imati mrtvih i nedohvatljivih nezavršnih znakova.Nakon izbacivanja mrtvih i nedohvatljivihnezavršnih znakova, gramatika sadrži produkcije: S[q0Kq1] [q0Kq1]b[q0Aq1][q1Kq1] [q0Aq1]b[q0Aq1][q1Aq1] [q0Aq1]a[q1Aq1] [q1Aq1]c [q1Kq1] Dobivena gramatika je čitljivija ako se izvrši preimenovanje nezavršnih znakova: [q0Kq1]A [q0Aq1]B [q1Aq1]C [q1Kq1]D S A A bBD B bBC B aC C c D
Zadatak br. 27 • Konstruirati Turingov stroj u osnovnom obliku koji oduzima dva binarna broja zapisana na traci. Najznačajnija znamenka je lijevo, a brojevi su odvojeni znakom –. Drugi broj se oduzima od prvog pri čemu prvi broj sigurno nije manji od drugog. Glava se nalazi na početku ulaznog niza, a s obje strane ulaznog niza nalaze se praznine. TS M=(Q,,,,q0,B,F) Početno stanje: 1 0 0 1 1 1 0 1 0 B 0 - B
Zadatak br. 27 IDEJA • dovoljan je jedan trag (to je osnovni oblik TS) • q0 iq1 - prelazak na krajnje desni znak, brisanje • q2 i q3-učitana krajnje desna 0, odnosno 1; kretanje lijevo; • q4i q5 - preskočili znak minus s učitanom 0, odnosno 1 • oduzimanje od odgovarajućeg bita prvog broja • zapisuje se J i N • q6- ako treba posuditi od prethodnog bita, komplementiraju se bitovi sve do prve pojave 1 • vraćanje natrag pomoću q0 • q7, q8 i q9 - za zavšetak 1 0 0 1 1 1 0 1 0 B 0 - B
B Zadatak br. 27 • q0iq1 - prelazak na krajnje desni znak, brisanje 1 0 0 1 1 1 0 1 0 B 0 - B 0 1 - N J B q0 q0, 0, R q0, 1, R q0, -, R q0, N, R q0, J, R q1, B, L q1 q2, B, L q3, B, L q2 q3 q4 q5 q6 q7 q8
Zadatak br. 27 • q2 i q3-učitana krajnje desna 0, odnosno 1 • kretanje lijevo do minusa B 1 0 0 1 1 1 0 1 0 B 0 - B 0 1 - N J B q0 q0, 0, R q0, 1, R q0, -, R q0, N, R q0, J, R q1, B, L q1 q2, B, L q3, B, L q2 q2, 0, L q2, 1, L q4, -, L q3 q3, 0, L q3, 1, L q5, -, L q4 q5 q6 q7 q8
Zadatak br. 27 • q4i q5 - preskočili znak minus s učitanom 0, odnosno 1 • pozicioniranje na odgovarajući bit umanjenika • oduzimanje,zapisuje se rezultat J i N • q6 – javlja se posudba 1 0 0 1 1 1 0 1 B B 0 - B 0 1 - N J B q0 q0, 0, R q0, 1, R q0, -, R q0, N, R q0, J, R q1, B, L q1 q2, B, L q3, B, L q2 q2, 0, L q2, 1, L q4, -, L q3 q3, 0, L q3, 1, L q5, -, L q4 q0, N, R q0, J, R q4, N, L q4, J, L q5 q6, J, L q0, N, R q5, N, L q5, J, L q6 q7 q8
Zadatak br. 27 • q4i q5 - preskočili znak minus s učitanom 0, odnosno 1 • pozicioniranje na odgovarajući bit umanjenika • oduzimanje,zapisuje se rezultat J i N • q6 – javlja se posudba J J N B B B 1 0 0 1 1 1 0 1 B B N - B 0 1 - N J B q0 q0, 0, R q0, 1, R q0, -, R q0, N, R q0, J, R q1, B, L q1 q2, B, L q3, B, L q2 q2, 0, L q2, 1, L q4, -, L q3 q3, 0, L q3, 1, L q5, -, L q4 q0, N, R q0, J, R q4, N, L q4, J, L q5 q6, J, L q0, N, R q5, N, L q5, J, L q6 q7 q8
Zadatak br. 27 • q6- treba posuditi od prethodnog bita • komplementiraju se bitovi sve do prve pojave 1 • vraćanje natrag pomoću q0 i q1 0 1 1 0 J J N B B B B B N - B 0 1 - N J B q0 q0, 0, R q0, 1, R q0, -, R q0, N, R q0, J, R q1, B, L q1 q2, B, L q3, B, L q7, B, L q2 q2, 0, L q2, 1, L q4, -, L q3 q3, 0, L q3, 1, L q5, -, L q4 q0, N, R q0, J, R q4, N, L q4, J, L q5 q6, J, L q0, N, R q5, N, L q5, J, L q6 q6, 1, L q0, 0, R q7 q8
Zadatak br. 27 • q7- obrisali umanjitelj • brisemo “–” • pretvaramo rezultat u 0 i 1 0 1 1 J 1 J 0 N B B B B B B 0 N - B 0 1 - N J B q0 q0, 0, R q0, 1, R q0, -, R q0, N, R q0, J, R q1, B, L q1 q2, B, L q3, B, L q7, B, L q2 q2, 0, L q2, 1, L q4, -, L q3 q3, 0, L q3, 1, L q5, -, L q4 q0, N, R q0, J, R q4, N, L q4, J, L q5 q6, J, L q0, N, R q5, N, L q5, J, L q6 q6, 1, L q0, 0, R q7 q7, 0, L q7, 1, L q7, 0, L q7, 1, L q8, B, R q8
Zadatak br. 27 • q8- došli do lijeve praznine • brišemo vodeće nule • q9 - zavšetak u prihvatljivom stanju B 0 1 1 J 1 J 0 N B B B B B 0 N B B 0 1 - N J B q0 q0, 0, R q0, 1, R q0, -, R q0, N, R q0, J, R q1, B, L q1 q2, B, L q3, B, L q7, B, L q2 q2, 0, L q2, 1, L q4, -, L q3 q3, 0, L q3, 1, L q5, -, L q4 q0, N, R q0, J, R q4, N, L q4, J, L q5 q6, J, L q0, N, R q5, N, L q5, J, L q6 q6, 1, L q0, 0, R q7 q7, 0, L q7, 1, L q7, 0, L q7, 1, L q8, B, R q8 q8, B, R q9, 1, L q9, 0, L
Zadatak br. 28 • Konstruirati Turingov stroj koji redom generira sve potencije broja 2. Vrijednost jednog broja na traci zapisana je odgovarajućim brojem jedinica. Brojevi su međusobno odvojeni graničnikom $. Na ulaznoj traci Turingovog stroja na početku je zapisan niz $1. S obje strane ulaznog niza nalaze se praznine. TS M=(Q,,,,q0,B,F) Na početku: $ 1 B B B B B B Na kraju: $ 1 1 $ 1 1 1 1 $ ... $ 1
Zadatak br. 28 $ 1 1 $ 1 1 1 1 $ ... $ 1 IDEJA: Za svaku jedinicu iz prethodno stvorenog niza generirati po dvije nove jedinice. TS M=(Q,,,,q0,B,F) Turingov stroj s jednom trakom s dva traga: Glavni – ulazno-izlazni trag B B $ 1 B B B B B B B B B B B B Pomoćni – označni trag
Zadatak br. 28 IDEJA: Za svaku jedinicu iz prethodno stvorenog niza generirati po dvije nove jedinice na kraju trake. $ 1 1 $ B 1 B 1 1 1 B $ --- B $ 1 B B B B B B B B B B * B B B B B B B * * * B * * * B B B
Zadatak br. 28 [1, B] [B, B] [$, B] [1, *] q0 q1,[1,*],R q0,[$, B], R - - Konstrukcija TS: q1 q1,[1, B],R q2,[$, B], R q2,[$, B], R - q2 q2,[1, B],R q3,[1, B], R - - q3 q4,[1, B], L - - - q4,[1, B], L q4 q4,[$, B], L q0,[1, *], R - $ 1 $ B 1 B 1 B $ B 1 B 1 B 1 B 1 B B $ 1 B 1 B 1 B 1 B B B B B B * * * * * B B B B B B B B B B B B B B B B B B B B q0 q0 q1 q2 q3 q4 q4 q4 q0 q1 q1 q2 q3 q0 q4 q4 q4 q4 q0 q1 q2 q2 q2 q3 q4 q4 q4 q4 q4 q0 q1 q1 q1 q1 q2 q3 q0 q4 q4 q4 q4 q4 q4 q1 q1 q1 q2 q2 q2 q3 q0 . . .
Zadatak br. 28 Turingov stroj: [1, B] [B, B] [$, B] [1, *] q0 q1,[1,*],R q0,[$, B], R - - - q1 q1,[1, B],R q2,[$, B], R q2,[$, B], R - - q2 q2,[1, B],R q3,[1, B], R - q3 q4,[1, B], L - - q4,[1, B], L - q4 q4,[$, B], L q0,[1, *], R
Zadatak br. 29 Konstruirati Turingov stroj koji prihvaća nizove iz jezika L. Nakon što Turingov stroj završi s radom, stanje na traci mora biti isto kao početno. S obje strane ulaznog niza nalaze se praznine. L={w(a+b+c)* | na=nb=nc}
P a a b c c b a c b P Prihvatljivi niz a b c A B C P q0 qa qb qc qbc qac qab qV qOC qPC
qab q0 qa P a A a B b c c b a c b P Prihvatljivi niz a b c A B C P q0 qa, A, R qb, B, R qc, C, R qa qa, a, R qab, B, R qac, C, R qb qc qbc qac qab qab, a, R qab, b, R qV, C, L qV qOC qPC
q0 qV qab P A a B c C c b a c b P Prihvatljivi niz a b c A B C P q0 qa, A, R qb, B, R qc, C, R qa qa, a, R qab, B, R qac, C, R qb qc qbc qac qab qab, a, R qab, b, R qV, C, L qV qV, a, L qV, b, L qV, c, L qV, A, L qV, B, L qV, C, L q0, P, R qOC qPC
q0 qa qac P A a A B C C c b a c b P Prihvatljivi niz a b c A B C P q0 qa, A, R qb, B, R qc, C, R q0, A, R q0, B, R q0, C, R qa qa, a, R qab, B, R qac, C, R qa, A, R qa, B, R qa, C, R qb qab, A, R qb, b, R qbc, C, R qb, A, R qb, B, R qb, C, R qc qac, A, R qbc, B, R qc, c, R qc, A, R qc, B, R qc, C, R qbc qV, A, L qbc, b, R qbc, c, R qbc, A, R qbc, B, R qbc, C, R qac qac, a, R qV, B, L qac, c, R qac, A, R qac, B, R qac, C, R qab qab, a, R qab, b, R qV, C, L qab, A, R qab, B, R qab, C, R qV qV, a, L qV, b, L qV, c, L qV, A, L qV, B, L qV, C, L q0, P, R qOC qPC
qac qV P A A B C C B b a c b P Prihvatljivi niz a b c A B C P q0 qa, A, R qb, B, R qc, C, R q0, A, R q0, B, R q0, C, R qa qa, a, R qab, B, R qac, C, R qa, A, R qa, B, R qa, C, R qb qab, A, R qb, b, R qbc, C, R qb, A, R qb, B, R qb, C, R qc qac, A, R qbc, B, R qc, c, R qc, A, R qc, B, R qc, C, R qbc qV, A, L qbc, b, R qbc, c, R qbc, A, R qbc, B, R qbc, C, R qac qac, a, R qV, B, L qac, c, R qac, A, R qac, B, R qac, C, R qab qab, a, R qab, b, R qV, C, L qab, A, R qab, B, R qab, C, R qV qV, a, L qV, b, L qV, c, L qV, A, L qV, B, L qV, C, L q0, P, R qOC qPC
q0 P A A B C C B A C B P Prihvatljivi niz a b c A B C P q0 qa, A, R qb, B, R qc, C, R q0, A, R q0, B, R q0, C, R qPC, P, L qa qa, a, R qab, B, R qac, C, R qa, A, R qa, B, R qa, C, R qb qab, A, R qb, b, R qbc, C, R qb, A, R qb, B, R qb, C, R qc qac, A, R qbc, B, R qc, c, R qc, A, R qc, B, R qc, C, R qbc qV, A, L qbc, b, R qbc, c, R qbc, A, R qbc, B, R qbc, C, R qac qac, a, R qV, B, L qac, c, R qac, A, R qac, B, R qac, C, R qab qab, a, R qab, b, R qV, C, L qab, A, R qab, B, R qab, C, R qV qV, a, L qV, b, L qV, c, L qV, A, L qV, B, L qV, C, L q0, P, R qOC qPC
qP qPC q0 P A a a A b B c C c C b B A a C c b B P Prihvatljivi niz a b c A B C P q0 qa, A, R qb, B, R qc, C, R q0, A, R q0, B, R q0, C, R qPC, P, L qa qa, a, R qab, B, R qac, C, R qa, A, R qa, B, R qa, C, R qb qab, A, R qb, b, R qbc, C, R qb, A, R qb, B, R qb, C, R qc qac, A, R qbc, B, R qc, c, R qc, A, R qc, B, R qc, C, R qbc qV, A, L qbc, b, R qbc, c, R qbc, A, R qbc, B, R qbc, C, R qac qac, a, R qV, B, L qac, c, R qac, A, R qac, B, R qac, C, R qab qab, a, R qab, b, R qV, C, L qab, A, R qab, B, R qab, C, R qV qV, a, L qV, b, L qV, c, L qV, A, L qV, B, L qV, C, L q0, P, R qOC qPC - - - qPC, a, L qPC, b, L qPC, c, L qP, P, R
P A A B C C B A C P B P Neprihvatljivi niz Prihvatljivi niz a b c A B C P q0 qa, A, R qb, B, R qc, C, R q0, A, R q0, B, R q0, C, R qPC, P, L qa qa, a, R qab, B, R qac, C, R qa, A, R qa, B, R qa, C, R qb qab, A, R qb, b, R qbc, C, R qb, A, R qb, B, R qb, C, R qc qac, A, R qbc, B, R qc, c, R qc, A, R qc, B, R qc, C, R qbc qV, A, L qbc, b, R qbc, c, R qbc, A, R qbc, B, R qbc, C, R qac qac, a, R qV, B, L qac, c, R qac, A, R qac, B, R qac, C, R qab qab, a, R qab, b, R qV, C, L qab, A, R qab, B, R qab, C, R qV qV, a, L qV, b, L qV, c, L qV, A, L qV, B, L qV, C, L q0, P, R qOC qPC - - - qPC, a, L qPC, b, L qPC, c, L qP, P, R
qac P A A B C C B A C P P Neprihvatljivi niz a b c A B C P q0 qa, A, R qb, B, R qc, C, R q0, A, R q0, B, R q0, C, R qPC, P, L qa qa, a, R qab, B, R qac, C, R qa, A, R qa, B, R qa, C, R qOC, P, L qb qab, A, R qb, b, R qbc, C, R qb, A, R qb, B, R qb, C, R qOC, P, L qc qac, A, R qbc, B, R qc, c, R qc, A, R qc, B, R qc, C, R qOC, P, L qbc qV, A, L qbc, b, R qbc, c, R qbc, A, R qbc, B, R qbc, C, R qOC, P, L qac qac, a, R qV, B, L qac, c, R qac, A, R qac, B, R qac, C, R qOC, P, L qab qab, a, R qab, b, R qV, C, L qab, A, R qab, B, R qab, C, R qOC, P, L qV qV, a, L qV, b, L qV, c, L qV, A, L qV, B, L qV, C, L q0, P, R qOC qPC - - - qPC, a, L qPC, b, L qPC, c, L qP, P, R
qOC qac P A a A a B b C c c C b B A a c C P P Neprihvatljivi niz a b c A B C P q0 qa, A, R qb, B, R qc, C, R q0, A, R q0, B, R q0, C, R qPC, P, L qa qa, a, R qab, B, R qac, C, R qa, A, R qa, B, R qa, C, R qOC, P, L qb qab, A, R qb, b, R qbc, C, R qb, A, R qb, B, R qb, C, R qOC, P, L qc qac, A, R qbc, B, R qc, c, R qc, A, R qc, B, R qc, C, R qOC, P, L qbc qV, A, L qbc, b, R qbc, c, R qbc, A, R qbc, B, R qbc, C, R qOC, P, L qac qac, a, R qV, B, L qac, c, R qac, A, R qac, B, R qac, C, R qOC, P, L qab qab, a, R qab, b, R qV, C, L qab, A, R qab, B, R qab, C, R qOC, P, L qV qV, a, L qV, b, L qV, c, L qV, A, L qV, B, L qV, C, L q0, P, R qOC qOC, a, L qOC, b, L qOC, c, L qOC, a, L qOC, b, L qOC, c, L qPC - - - qPC, a, L qPC, b, L qPC, c, L qP, P, R
qac qOC P a a b c c b a c P P Neprihvatljivi niz a b c A B C P q0 qa, A, R qb, B, R qc, C, R q0, A, R q0, B, R q0, C, R qPC, P, L qa qa, a, R qab, B, R qac, C, R qa, A, R qa, B, R qa, C, R qOC, P, L qb qab, A, R qb, b, R qbc, C, R qb, A, R qb, B, R qb, C, R qOC, P, L qc qac, A, R qbc, B, R qc, c, R qc, A, R qc, B, R qc, C, R qOC, P, L qbc qV, A, L qbc, b, R qbc, c, R qbc, A, R qbc, B, R qbc, C, R qOC, P, L qac qac, a, R qV, B, L qac, c, R qac, A, R qac, B, R qac, C, R qOC, P, L qab qab, a, R qab, b, R qV, C, L qab, A, R qab, B, R qab, C, R qOC, P, L qV qV, a, L qV, b, L qV, c, L qV, A, L qV, B, L qV, C, L q0, P, R qOC qOC, a, L qOC, b, L qOC, c, L qOC, a, L qOC, b, L qOC, c, L - qPC - - - qPC, a, L qPC, b, L qPC, c, L qP, P, R