Contents 1 Automate finite... 2 1.1 Probleme cu AF... 2 1.2 Structuri de date pentru automate finite... 4 2 Gramatici si limbaje; gram. indep. de context... 5 2.1 Limbaje... 5 2.2 Gramatici si limbaje... 5 2.3 GIC... 5 2.4 Constructia lui L(G); demonstratii... 6 2.5 Structuri de date pentru g.i.c.... 7
1 Automate finite 1.1 Probleme cu AF 1. Sa se reprezinte tabelar urmatoarele automate finite. Sint ele AFD sau AFN? 2. Sa se reprezinte sub forma de graf automatul finit: M=(Q,,delta,q0,F) 0 1 q0 q2 q1 1 q1 q3 q0 0 q2 q0 q3 0 q3 q1 q2 0 Verificati apoi, bazandu-va pe graful obtinut, ca: a) secventele 1010, 1100 sunt acceptate de automat b) secventa 1011 nu este acceptata de automat
3. Sa se construiasca automate finite care accepta urmatoarele limbaje: a) orice cuvant al limbajului contine cel putin 2 zerouri consecutive, unde ={0,1} b) L = {c 3n, n N, >0} c) L={1 n 0 m 1u n>=0, m>=1, u {0,1}* } d) reprezentarea binara a numerelor intregi (-> sem.1) e) reprezentarea constantelor intregi in limbajul Pascal f) limbajul ce contine secvente peste ={a,b} cu nr. par de simb. a si nr.par de simb b g) limbajul ce contine secvente peste ={a,b} cu nr. impar de simb. a si impar de simb b h) L = {0(10) n 01 m n>=0, m>=0} U {(10) n 01 m n>=1, m>=0} cu cel mult 4 stari i) L={0 m 1 n m,n N} U {1 p 0 q p,q N} Pentru doua dintre automatele construite anterior, se cere sa se construiasca gramatica regulara corespunzatoare 1 4. a) Sa se construiasca un AF care accepta numai cuvinte peste alfabetul {a, b, c} cu proprietatea ca: primul simbol al cuvantului este acelasi cu cel cu care se termina cuvantul b) Sa se construiasca un AF care accepta numai cuvinte peste alfabetul {a, b, c} cu proprietatea ca: exista un simbol in cuvant care mai apare cel putin o data in cuvant 5. Sa se construiasca AF care accepta limbajele: L1 = {c 3n, n N, >0} L2 = {c 2n, n N, >0} Construiti, folosind alg. general, AF corespunzator limbajului L1 L2. 6. Sa se construiasca AF care accepta limbajele specificate prin expresiile regulare: a) (0+1)* b) (01+1)* c) (01+1)* 00 d) (01+1)* 00 (0+1)* 7. Pentru AFN de mai jos, determinati AFD redus echivalent 1 Secventele din enuntul problemelor care sint marcate cu verde vor putea fi rezolvate mai tarziu, dupa ce vor fi studiati, in cadrul orelor de curs, algoritmii necesari (de determinare a gram. Regulare echivalenta cu un AF, alg. de determinare a AF redus echivalent
8. Pentru unul dintre exemplele de la punctul 3, determinati: AFD echivalent automatul redus echivalent (considerati exemplul de la punctul i ; faceti observatii daca e cazul) 1.2 Structuri de date pentru automate finite Ganditi cateva modalitati de reprezentare a AF ex: - AF care are ca alfabet multimea caracterelor reprezentabile in calculator (alfabet fixat) - structura de date care are in vedere ca operatia cea mai frecventa cu AF este verificare acceptare secventa StateMachine description: String /** A description of the state machine */ startstate :State states: Set<State> /**?? can be List, Map, ; redundancy??!*/ State description: String /** The name of the state */ isacceptstate: Boolean transitions: MultiMap<Symbol, State> /**?? can be List, Map */
2 Gramatici si limbaje; gram. indep. de context 2.1 Limbaje Sa se demostreze ca, pentru catul la dreapta dintre limbaje avem: L1 / (L2 U L3) = ( L1 / L2 ) U ( L1 / L3 ) L1 / ( L2 L3 ) = ( L1 / L3 ) / L2 2.2 Gramatici si limbaje 1. Fie gramatica: <propozitie> <subiect> <predicat> <subiect> cainele <predicat> latra Descrieti limbajul generat. (Faceti observatii daca e cazul.) 2. Dati o gramatica care genereaza propozitiile: ursul doarme, caprioarele dorm 3. Dati cate o gramatica care genereaza propozitiile: a) ab, ac b) abc 4. Sã se descrie limbajul generat de gramatica G=({S,A,B}, {a,b,c,d}, P, S) cu regulile de productie: S Ac Bd A aab ab B abbb abb 5. Identificati elementele gramaticii data prin urmatoarele reguli de productie S AB A aab A ab B cb B c Descrieti conventiile folosite. (Faceti observatii daca e cazul.) Descrieti limbajul genereaza gramatica. 2.3 GIC 1. Sa se construiasca g.i.c. care genereaza limbajele: a) L = {a n b 2n n>=0}
b) L = {a n b 2n n>=1} c) multimea parantezelor corect formate d) expresiile algebrice care contin operandul id si operatorii +, -, *, /, (, ) 2. Dati o gramatica ce genereaza limbajul corespunzator multimii secventelor de paranteze corect formate. Ex: asa DA: (), (()), (()) (()), epsilon asa NU: )( 3. Se considera limbajul: L = {w w {a,b}*, nr a (w) = nr b (w) } a) Dati o gramatica (dependenta de context) care genereaza limbajul L b) Sa se spuna ce limbaj genereaza urmatoarea gramatica: S -> asb bsa SS epsilon c)sa se dea o gramatica i.c. care genereaza limbajul L 4. Fie gramatica cu regulile de productie: S ab ba A a as baa B b bs abb si w=aaabbabbba gãsiti o derivare de stânga pentru w; gãsiti o derivare de dreapta pentru w; construiti arborele de derivare cu frontul w; este aceastã gramaticã neambiguã? se poate descompune w conform lemei de pompare? 5. Pentru gramaticile urmatoare, sa se spuna ce limbaj genereaza. Apoi sa se arate ca sint ambigue, si sa se gaseasca cate o gramatica echivalenta neambigua. a) A A a A a b) S as Sb c c) S if c then S else S if c then S i d) S a S b S a S c 2.4 Constructia lui L(G); demonstratii 1. Sa se construiasca o gramatica care gereaza limbajul: M = {x n y n n N} Pentru gramatica construita, demonstrati ca L(G) = M. 2. Analog pt. M = {a 2n bc n N}
2.5 Structuri de date pentru g.i.c. 1. Prezentati modalitati de reprezentare a gramaticilor folosind vectori (descrieti structurile de date). Prezentati conventiile folosite. 2. Prezentati modalitati de reprezentare a gramaticilor independente de context (descrieti structurile de date).prezentati conventiile folosite. a) folositi vectori b) folositi liste ramificate (inlantuite) c) alegeti dintre structurile de date studiate in anul I pe cele pe care le considerati potrivite pentru reprezentarea gramaticilor si pentru procesarile necesare pentru verificarea apartenentei unui cuvant la limbajul generat de gramatica (descrieti reprezentarea aleasa) ex. idee: gram: String gram contine sirul regulilor de productie S AB A aab A ab B cb B c S A B # A a A b a b # B c B c # $ Conventii: 1. un term/neterminal este reprezentat printr-un caracter 2.pentru terminale/neterminale nu se folosesc caracterele: #,, $ 3. regulile de productie sunt grupate dupa neterminalul din m.s. 4. primul caracter al sirului de caractere ce descrie r.p. cu acelasi m.s. este m.stang 5. prima regula de productie reprezentata are ca m.s. neterm. de start al gram. 6. sfârsitul regulilor de productie cu acelasi membru stâng e marcat cu # 7. separarea m.d. a r.p. cu acelasi m.s. se face folosind caracterul 8. am marcat sfârsitul sirului de caractere ce definesc r.p. cu $ 9. pt. fiecare neterm., exista cel putin o rp cu acel neterm. in ms? limitari ale tipului String Obs. O alta conventie posibila pt simbol: un simbol este un nr. intreg (0..65000)
2) listã ramificatã înlãntuitã Pentru fiecare membru drept al fiecãrei productii se construieste o sublistã liniarã. Considerãm nodurile listei de forma: a b c d unde câmpurile au urmãtoarele semnificatii: a - simbolul terminal sau neterminal al gramaticii (numai din membrul drept al fiecãrei productii); b - pointer sau întreg astfel: b:= 0 dacã S ; pointer spre capul primei subliste atasate r.p. cu membrul stâng a. c - pointer sau întreg; in general, contine legãtura spre capul urmãtoarei subliste asociatã regulii de productie cu acelasi membru stâng; dacã a este primul simbol al membrului doi dintr-o productie atunci dacã productia curentã este ultima din sirul productiilor cu acelasi m.s. atunci c:=0 altfel c - legãtura spre capul urmãtoarei subliste a r.p. cu acelasi m.s. altfel (a nu este primul simbol al membrului doi dintr-o productie) dacã a este ultimul simbol al md dintre toate reg. productie cu acelasi m.s. atunci c=0 altfel c= 1 d - pointer sau întreg dacã a este ultimul simbol al membrului drept al unei productii atunci d:=0 altfel d este pointer spre urmãtorul nod al sublistei. Pentru gramatica S AB A aab A ab B cb B c avem urmãtoarea reprezentare:
3) tabelar cu notatiile de la reprezentarea prin listã ramificatã obtinem: a b c d 1 A 3 0 2 2 B 8 0 0 3 a 0 6 4 4 A 3-1 5 5 b 0-1 0 6 a 0 0 7 7 b 0 0 0 8 c 0 10 9 9 B 8-1 0 10 c 0 0 0