460 likes | 638 Vues
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. 18. Zadanu gramatiku pretvoriti u Chomskyev oblik. Chomskyev oblik produkcija: A BC i A d
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. 18 • Zadanu gramatiku pretvoriti u Chomskyev oblik. • Chomskyev oblik produkcija: ABC i Ad • Postupak pretvorbe u Chomskyev oblik: • Izbacivanje jediničnih i produkcija • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove • Produkcije koje s desne strane imaju više od dva znaka razbijaju se u podprodukcije
Zadatak br. 18 • Izbacivanje jediničnih i produkcija. Izbacuju se produkcije: CA i C
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove S0S1 A1B0 B1BA CB0 N0 S0SBS ASB BSA C1B0 J1 S1C0 A0 B1 CSB S10 C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove S0S1 A1B0 B1BA CB0 N0 S0SBS ASB BSA C1B0 J1 S1C0 A0 B1 CSB S10 C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove S0S1 A1B0 B1BA CB0 N0 S0SBS ASB BSA C1B0 J1 S1C0 A0 B1 CSB S10 C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ A1B0 B1BA CB0 N0 S0SBS ASB BSA C1B0 J1 S1C0 A0 B1 CSB S10 C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ A1B0 B1BA CB0 N0 S0SBS ASB BSA C1B0 J1 S1C0 A0 B1 CSB S10 C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ A1B0 B1BA CB0 N0 SNSBS ASB BSA C1B0 J1 S1C0 A0 B1 CSB S10 C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ A1B0 B1BA CB0 N0 SNSBS ASB BSA C1B0 J1 S1C0 A0 B1 CSB S10 C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ A1B0 B1BA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB S10 C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ A1B0 B1BA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB S10 C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ A1B0 B1BA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ A1B0 B1BA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN B1BA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN B1BA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN B1BA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN B1BA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CB0 N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CBN N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CBN N0 SNSBS ASB BSA C1B0 J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CBN N0 SNSBS ASB BSA CJBN J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CBN N0 SNSBS ASB BSA CJBN J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CBN N0 SNSBS ASB BSA CJBN J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CBN N0 SNSBS ASB BSA CJBN J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CBN N0 SNSBS ASB BSA CJBN J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Završni znakovi koji se nalaze u produkcijama koje imaju više od jednog znaka na desnoj strani zamijene se nezavršnim znakovima koji su zamjene za te završne znakove SNSJ AJBN BJBA CBN N0 SNSBS ASB BSA CJBN J1 SJCN A0 B1 CSB SJN C0 Završni znak “0” zamjenjuje se nezavršnim znakom N. Završni znak “1” zamjenjuje se nezavršnim znakom J.
Zadatak br. 18 • Produkcije koje s desne strane imaju više od dva znaka razbijaju se u podprodukcije SNSJ AJBN BJBA CBN N0 SNSBS ASB BSA CJBN J1 SJCN A0 B1 CSB C0 SJN SND1 AJD5 BJD6 CJD5 D1SJ D5BN D6BA SND2 D2SD3 D3BS SJD4 D4CN
1 2 1 3 3 1 3 3 3 3 Zadatak br. 19 • Pokazati nejednoznačnost zadane gramatike. • SaSbS • SbSaS • S Nejednoznačnost se pokazuje generiranjem niza abab na dva ili više načina zamjenom krajne lijevog (desnog) nezavršnog znaka Prvi način generiranja niza: S aSbS abS abaSbS abab ababS Drugi način generiranja niza: S aSbS abSaSbS abaSbS ababS abab
STOG ULAZ 0 aabb 0a4 abb 0a4a4 bb 0a4a4b5 b 0a4____ 0a4a4B6 0a4a4__ b b b 0a4B6 b 0B2 b 0B2b5 0B2B2 0B2B2A3 0B2A3 0A1 Zadatak br. 20 • Za zadanu gramatiku napisan je LR parser. Pomoću LR parsera parsirati ulazni niz aabb. ABA (1) BaB (3) A (2) Bb (4) • Konfiguracija LR parsera prikazuje se stanjem na stogu i nepročitanim dijelom ulaznog niza • Parser je LR jer se niz čita slijeva na desno, a generiranje niza se vrši zamjenom krajnje desnog nezavršnog znaka: • A→BA→BBA→BB→Bb→aBb→aaBb→aabb prihvati
Zadatak br. 21 • Konstruirati gramatiku koja generira nizove oblika aibjckdjei pri čemu su i,j,k 1. a ibjckdjei • Simetrični nizovi • Tip gramatike = ? • Kontekstno-neovisna gramatika • Produkcije gramatike istovremeno generiraju • a i e • b i d S aAe AaAe BbBd CcC AbBd BcC C
Zadatak br. 22 • Konstruirati potisni automat koji prihvaća jezik L={wwR | w(0+1)*}. • M=({q0,q1},{0,1},{P,N,J},,q0,P,) • q0 pamti ulazne znakove • N i J kodiraju 0 i 1 • q1 skida znakove sa stoga • Potisni automat prihvaća praznim stogom • Potisni automat prihvaća prazni niz • Nije deterministički! • Nederministički prijelaz se primjenjuje kada se uzastopce ponovi isti ulazni znak (q0,0,N)={(q0,NN),(q1,)} (q1,0,N)=(q1,) (q0,0,P)=(q0,NP) (q0,1,P)=(q0,JP) (q0,1,J)={(q0,JJ),(q1,)} (q1,1,J)=(q1,) (q0,1,N)=(q0,JN) (q1,,P)=(q1,) (q0,0,J)=(q0,NJ) (q0,,P)=(q0,)
(q1, 00, NNP) (q0, 00, JJNNP) (q0, 0, NJJNNP) (q1, 0, NP) (q0, e, NNJJNNP) (q0, e, JJNNP) (q1, e, P) Prihvati niz Nastavak zad. 22 (q0, 001100, P) (10) (1) (1) (q0,0,P)=(q0,NP) (q1, 001100, e) (2) (q0, 01100, NP) (q0,1,P)=(q0,JP) (5) (3) (q0,1,N)=(q0,JN) (q1, 1100, P) (q0, 1100, NNP) (4) (q0,0,J)=(q0,NJ) (9) (3) (5) (q0,0,N)={(q0,NN),(q1,)} (q1, 1100, e) (q0, 100, JNNP) (6) (q0,1,J)={(q0,JJ),(q1,)} (6) (7) (q1,0,N)=(q1,) (7) (4) (8) (q1,1,J)=(q1,) (9) (q1,,P)=(q1,) (7) (5) (q0,,P)=(q0,) (10) (9) (q1, e, e)
Zadatak br. 23 • Iz potisnog automata M1 koji nizove prihvaća prihvatljivim stanjem konstruirati potisni automat M2 koji nizove prihvaća praznim stogom. M1 = ( {q0,q1}, {0,1,2}, {N,J,K}, q0, , K, {q1} ) • Postupak konstrukcije PAM2 koji prihvaća praznim stogom: • PA M2 simulira rad PA M1 • Ako PA M1 uđe u prihvatljivo stanje, PA M2 isprazni stog • Ako PA M1 isprazni stog, a ne uđe u prihvatljivo stanje, • PA M2 ne smije isprazniti stog
Zadatak br. 23 • Postupak konstrukcije PA M2 koji prihvaća praznim stogom: • PA M2 simulira rad PA M1 Svi prijelazi PA M1 dodaju se u skup prijelaza PA M2 M1 = ( {q0,q1}, {0,1,2}, {N,J,K}, q0, , K, {q1} )
Zadatak br. 23 • Postupak konstrukcije PA M2 koji prihvaća praznim stogom: • Ako PA M1 uđe u prihvatljivo stanje, PA M2 isprazni stog Skup stanja PA M2 proširuje se stanjem qE u kojem PA M2 prazni stog bez čitanja ulaznih znakova PA M2 prelazi u stanje qE bez čitanja ulaznih znakova samo ako PA M1 uđe u prihvatljivo stanje M1 = ( {q0,q1}, {0,1,2}, {N,J,K}, q0, , K, {q1} ) ’(q1,,N)=(qE,) ’(qE,,N)=(qE,) ’(q1,,J)=(qE,) ’(qE,,J)=(qE,) ’(q1,,K)=(qE,) ’(qE,,K)=(qE,)
Zadatak br. 23 • Postupak konstrukcije PA M2 koji prihvaća praznim stogom: • Ako PA M1 isprazni stog, a ne uđe u prihvatljivo stanje, • PA M2 ne smije isprazniti stog Skup znakova stoga PA M2 proširuje se znakom Z kojeg PA M1 ne može skinuti sa stoga Znak Z je početni znak stoga za PA M2 Skup stanja PA M2proširuje se stanjem qPkoje omogućuje prelazak PA M2 u početnu konfiguraciju PA M1 M1 = ( {q0,q1}, {0,1,2}, {N,J,K}, q0, , K, {q1} ) M2 = ( {qP,q0,q1,qE}, {0,1,2}, {N,J,K,Z}, qP, ’, Z, )
’(q1,,N)=(qE,) ’(qE,,N)=(qE,) ’(q1,,J)=(qE,) ’(qE,,J)=(qE,) ’(q1,,K)=(qE,) ’(qE,,K)=(qE,) Zadatak br. 23 PAM2 koji prihvaća praznim stogom: M2 = ( {qP,q0,q1,qE}, {0,1,2}, {N,J,K,Z}, qP, ’, Z, ) ’(q1,,Z)=(qE,) ’(qE,,Z)=(qE,)
Zadatak br. 24 • Iz potisnog automata M1 koji nizove prihvaća praznim stogom konstruirati potisni automat M2 koji nizove prihvaća prihvatljivim stanjem. M1=({q0,q1},{0,1,2},{N,J,K},q0,,K,) • Postupak konstrukcije PAM2 koji prihvaća prihvatljivim stanjem: • PA M2 simulira rad PA M1 • Ako PA M1isprazni stog, PA M2ulazi u prihvatljivo stanje
Zadatak br. 24 • Postupak konstrukcije PA M2 koji prihvaća prihvatljivim stanjem: • PA M2 simulira rad PA M1 Svi prijelazi PA M1 dodaju se u skup prijelaza PA M2 M1=({q0,q1},{0,1,2},{N,J,K},q0,,K,)
Zadatak br. 24 • Postupak konstrukcije PA M2 koji prihvaća prihvatljivim stanjem: • Ako PA M1isprazni stog, PA M2ulazi u prihvatljivo stanje Skup stanja PA M2 proširuje se prihvatljivim stanjem qF u koje PA M2ulazi bez čitanja ulaznih znakova samo ako PA M1 isprazni stog Skup znakova stoga PA M2 proširuje se znakom Z koji je početni znak stoga Ako se na vrhu stoga PA M2 nalazi znak Z, to znači da je PA M1 ispraznio stog M1=({q0,q1},{0,1,2},{N,J,K},q0,,K,) ’(q0,,Z)=(qF,Z) ’(q1,,Z)=(qF,Z)
Zadatak br. 24 • Postupak konstrukcije PA M2 koji prihvaća prihvatljivim stanjem: • Ako PA M1isprazni stog, PA M2ulazi u prihvatljivo stanje Skup stanja PA M2 proširuje se stanjem qP koje omogućuje prelazak PA M2 u početnu konfiguraciju PA M1 M1 = ( {q0,q1}, {0,1,2}, {N,J,K}, q0, , K, ) M2 = ( {qP,q0,q1,qF}, {0,1,2}, {N,J,K,Z}, qP, ’, Z, {qF} )
’(q0,,Z)=(qF,Z) ’(q1,,Z)=(qF,Z) Zadatak br. 24 PAM2 koji prihvaća prihvatljivim stanjem: M2 = ( {qP,q0,q1,qF}, {0,1,2}, {N,J,K,Z}, qP, ’, Z, {qF} )