afj predavanja 2.parc

Upload: adna-karkelja

Post on 07-Jul-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/19/2019 AFJ Predavanja 2.Parc

    1/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   59

    3.7 Ekvivalentnost kona čnih automata i regularnih izraza-

    Kleeneov teorem

    Do sada smo tretirali odnos izmedu konačnih automata i regularnih izraza samo intu-

    itivno. Naime, prethodno smo imali neke primjere koji ilustriraju da se u odredenim

    situacijama relativno jednostavno mogu izgraditi nedeterministički konačni automati

    koji prihvaćaju jezike koji su zadani nekim regularnim izrazom. U ovom odjeljku

    ćemo Kleenovim teoremom formalizirati odnos izmedu konačnih automata i regular-

    nih izraza. Na ovom mjestu  ćemo prvo pokazati da se za bilo koji regularni izraz  r 

    može izgraditi  -NKA M  tako da vrijedi  L( M )  =  L(r ).

    3.7.1 Konstrukcija ε-NKA za zadani regularni izraz

    Teorem 3.3.  Za svaki regularni izraz r koji opisuje jezik L(r )  nad nekim alfabetom  Σ

    mogu´ ce je konstruirati ε-NKA M tako da vrijedi L( M )  =  L(r ).

     Dokaz.   Prvo ćemo opisati postupke konstrukcije ε-NKA koji prihvaćaju jezike opisane

    elementarnim regularnim izrazima   ∅,   ε   i  a   ∈   Σ, a nakon toga slijedi opis postupaka

    konstrukcije ε-NKA koji prihvaćaju jezike opisane regularne izraze  r 1  + r 2, r 1r 2  i  r ∗1

    .

    Predavanje 06

  • 8/19/2019 AFJ Predavanja 2.Parc

    2/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   60

    Postupak (1):  Za regularni izraz  ∅  koji definira jezik  L(∅)  =   ∅   konstruiramo  ε-NKA

     M :

     M  = ({q0, q1},Σ, δ, q0, {q1}),

    gdje je  δ(q, b)  =  ∅  za svaki q  ∈ {q0, q1} i  b  ∈  (Σ ∪ {ε}). Dijagram stanja konstruiranog

    ε-NKA   M   je prikazan na slici 3.13. Početno stanje je  q0, a prihvatljivo stanje je  q1.

    Za bilo koji simbol b  ∈  (Σ ∪ {ε}), skup δ(q0, b) je prazan skup, pa ne postoji niti jedan

    slijed prijelaza iz početnog stanja  q0  u prihvatljivo stanje  q1. Prema tome,  ε-NKA  M 

    ne prihvaća niti jedan niz sibola.  Čak  štaviše,  ε-NKA  M  ne prihvaća niti praznu riječ

    ε, jer je početno stanje q0  neprihvatljivo.

    q0   q1

    (a) ε-NKA koji prihvaća jezik  L(∅)  =  ∅

    q0   q1ε

    (b) ε-NKA koji prihvaća jezik  L(ε)  =  {ε}

    q0   q1a

    (c) ε-NKA koji prihvaća jezik  L(a)  =  {a}

    Slika 3.13:  ε-NKA za elementarne regularne izraze

    Postupak (2):  Za regularni izraz ε

     koji definira jezik  L(ε

    ) =  {ε}

      konstruiramo ε

    -NKA M :

     M  = ({q0, q1},Σ, δ, q0, { f }),

    gdje je δ(q0, ε)  =  {q1} i  δ(r , b)  =  ∅  za  r   q0  ili  b    ε.

    Dijagram stanja izgradenog ε-NKA M  je prikazan na slici 3.13b. Početno stanje je

    q0, a prihvatljivo stanje je  q1. Prijelaz  δ(q0, ε)   =   {q1}  omogućuje prihvaćanje prazne

    riječi  ε. Za bilo koji simbol a   ∈   Σ, skup  δ(q0, a) je prazan skup, pa zaključujemo da

    ε-NKA M  prihvaća isključivo praznu riječ ε.

    Postupak (3):  Za regularni izraz  a, a  ∈  Σ, koji definira jezik  L(a)  =  {a}, konstruiramo

    ε-NKA M :

     M  = ({q0, q1},Σ, δ, q0, {q1}),

    gdje je δ(q0, a)  =  {q2} i  δ(r , b)  =  ∅  za  r   q0  ili  b   a.

    Dijagram stanja konstruiranog ε-NKA M  je prikazan na slici 3.13c. Početno stanje

     je q0, a prihvatljivo stanje je q1. Prijelaz  δ(q0, a)  =   {q1} omogućuje prihvaćanje riječi

    a, koja sadrži samo jedan simbol. Za bilo koji b  ∈  (Σ ∪ {ε}), za koji vrijedi b   a, skup

    δ(q0, b) je prazan skup, pa je omogućen prijelaz iz početnog stanja   q0  u prihvatljivo

  • 8/19/2019 AFJ Predavanja 2.Parc

    3/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   61

    stanje q1  samo za simbol  a. Naravno, budući da i za praznu riječ  ε  ne postoji prijelaz

    iz početnog stanja q0  u prihvatljivo stanje q1, zaključujemo da  ε-NKA  M  ne prihvaća

    niti praznu riječ  ε. Osim toga, skup  δ(q1, b) je prazan za sve simbole  b  ∈  (Σ ∪ {ε}), pazaključujemo da ε-NKA M  prihvaća isključivo niz simbola a.

    Postupak (4):  U okviru ovog postupka opisujemo način konstrukcije  ε-NKA za regu-

    larni izraz  r 1  + r 2, koji definira jezik  L(r 1  + r 2)  =   L(r 1) ∪  L(r 2). Pretpostavimo da su

    prethodno izgradeni ε-NKA M 1  i  M 2:

     M 1  = (Q1, Σ1, δ1, q1, { f 1}) (3.10a)

     M 2  = (Q2, Σ2, δ2, q2, { f 2}) (3.10b)

    takvi da vrijedi:

     L( M 1)  =  L(r 1) (3.11a)

     L( M 2)  =  L(r 2) (3.11b)

    Primijetimo da kod oba   ε-NKA skup prihvatljivih stanja sadrži samo jedno stanje.

    Takoder, pretpostavit  ćemo da iz prihvatljivih stanja   f 1   i   f 2  nema prijelaza niti za je-

    dan ulazni simbol. Drugim riječima, vrijedi   δ1( f 1, a)   =   ∅, za svako  a   ∈   (Σ1  ∪ {ε}) i

    δ2( f 2, b)   =   ∅, za svako   b   ∈   (Σ2   ∪ {ε}). Nadalje,ukoliko je to potrebno, promjenom

    imena stanja možemo postići da vrijedi  Q1  ∩  Q2   =   ∅. Za regularni izraz r 1  + r 2, koji

    definira jezik  L(r 1 + r 2)  =  L(r 1) ∪ L(r 2) konstruiramo novi  ε-NKA M  na sljedeći način:

     M  = (Q1 ∪  Q2 ∪ {q0,   f },Σ1 ∪ Σ2, δ, q0, { f }),

    gdje je funkcija  δ  definirana na sljedeći način:

    •   δ(q0, ε)  =  {q1, q2}

    •   δ(q, a)  =  δ1(q, a), za svako a  ∈  (Σ1  ∪ {ε}) i za svako q  ∈  (Q1 \ { f 1})

    •   δ(q, b)  =  δ2(q, b), za svako b  ∈  (Σ2  ∪ {ε}) i za svako q  ∈  (Q2 \ { f 2})

    •   δ( f 1, ε)  =  δ( f 2, ε)  =  { f }

    Dijagram stanja konstruiranog ε-NKA M  je prikazan na slici 3.14. Stanja automata

     M  uključuju stanja automata   M 1   i  M 2, kao i dva dodatna stanja: novo početno stanje

    q0 i novo prihvatljivo stanje   f . Dakle,stanja q1 i  q2  nisu više početna stanja, te stanja   f 1i   f 2  nisu više prihvatljiva stanja. Prijelazi automata  M  sadrže sve prijelaze iz automata

     M 1   i   M 2, kao i dodatne   ε-prijelaze iz novog početnog stanja   q0  u stanja   q1   i   q2, te

    ε-prijelaze iz stanja   f 1  i   f 2  u novo prihvatljivo stanje   f .

    Uzmimo npr. da automat M 1  prihvaća neku riječ  w,w   ∈   L( M 1). Tada, automat  M 

    prihvaća tu riječ tako što prvo primjenimo  ε-prijelaz iz stanja  q0  u stanje  q1, a zatim

    se izvodi slijed prijelaza kojim automat  M 1  inače prihvaća riječ w. S druge strane, ako

    automat   M   prihvaća neku riječ  w,   w   ∈   L( M ), tada je jedna od mogućnosti da slijed

    prijelaza uključuje   ε-prijelaz iz stanja  q0  u stanje  q1   i   ε-prijelaz iz stanja   f 1  u stanje

  • 8/19/2019 AFJ Predavanja 2.Parc

    4/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   62

    q0

    q1   f 1

    q2   f 2

     f 

     M 1

     M 2

    ε

    ε

    ε

    ε

    Slika 3.14:  Konstrukcija  ε-NKA koji prihvaća jezik  L(r 1  + r 2)

     f . Druga mogućnost je da slijed prijelaza uključuje ε-prijelaz iz stanja q0  u stanje q2  i

    ε-prijelaz iz stanja   f 2  u stanje   f . Budući da vrijedi  Q1  ∩  Q2   =   ∅, slijed prijelaza koji

    odgovara riječi  w  mora završiti u nekom od prihvatljivih stanja automata   M 1   ili   M 2,

    tj. riječ  w  mora prihvaćati automat  M 1  ili automat  M 2. Prema tome, zaključujemo da

    automat M  prihvaća riječ w  ako i samo ako riječ w  prihvaća automat  M 1  ili  M 2.

    Postupak (5):  U okviru ovog postupka opisujemo način konstrukcije  ε-NKA za regu-

    larni izraz r 1r 2, koji definira jezik  L(r 1r 2)  =  L(r 1) L(r 2). Pretpostavimo da su prethodno

    izgradeni ε-NKA M 1  i  M 2:

     M 1  = (Q1,Σ1, δ1, q1, F 1) (3.12a)

     M 2  = (Q2,Σ2, δ2, q2, F 2) (3.12b)

    takvi da vrijedi:

     L( M 1)  =  L(r 1) (3.13a)

     L( M 2)  =  L(r 2) (3.13b)

    Primijetimo da kod oba   ε-NKA skup prihvatljivih stanja sadrži samo jedno stanje.

    Takoder, pretpostavit  ćemo da iz prihvatljivih stanja   f 1   i   f 2  nema prijelaza niti za je-

    dan ulazni simbol. Drugim riječima, vrijedi   δ1( f 1, a)   =   ∅, za svako  a   ∈   (Σ1  ∪ {ε}) i

    δ2( f 2, b)   =   ∅, za svako  b   ∈   (Σ2   ∪ {ε}). Nadalje, ukoliko je to potrebno, promjenom

    imena stanja možemo postići da vrijedi   Q1   ∩  Q2   =   ∅. Za regularni izraz  r 1r 2   koji

    definira jezik  L(r 1r 2)  =  L(r 1) L(r 2) konstruiramo ε-NKA M  na sljedeći način:

     M  = (Q1  ∪  Q2,Σ1 ∪ Σ2, δ, q1, { f 2}),

    gdje je funkcija prijelaza definirana na sljedeći način:

    •   δ(q, a)  =  δ1(q, a), za svako a  ∈  (Σ1  ∪ {ε}) i za svako q  ∈  (Q1 \ { f 1})

  • 8/19/2019 AFJ Predavanja 2.Parc

    5/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   63

    •   δ(q, b)  =  δ2(q, b), za svako b  ∈  (Σ2  ∪ {ε}) i za svako q  ∈  Q2

    •   δ( f 1, ε)  =  {q2}

    Dijagram stanja konstruiranog   ε-NKA   M   je prikazan na slici 3.15. Dakle, nije

    potrebno dodavati nova stanja onima već prisutnim u automatima   M 1   i   M 2. Početno

    stanje automata   M   je stanje  q1, tj. početno stanje automata   M 1. Prihvatljivo stanje

    automata   M   je prihvatljivo stanje automata   M 2. Dakle, stanje   q2   nije više početno

    stanje, a stanje   f 1   nije više prihvatljivo stanje. Prijelazi automata   M   uključuju sve

    prijelaze automata  M 1  i  M 2, kao i novi  ε-prijelaz od stanja   f 1  do stanja stanja q2.

    q1   f 1   q2   f 2

     M 1   M 2

    ε

    Slika 3.15:  Konstrukcija  ε-NKA M  koji prihvaća jezik  L(r 1r 2)

    Pretpostavimo da za neku riječ w  vrijedi w  ∈   L( M 1) L( M 2). Tada, riječ w  možemo

    prikazati kao riječ w  =  w1w2 koja nastaje nadovezivanjem riječi w1 koju prihvaća auto-

    mat  M 1  (w1   ∈   L( M 1)) i riječi w2  koju prihvaća automat automat  M 2  (w2   ∈   L( M 2)). U

    tom slučaju, automat  M  može obraditi riječ w  slijedom prijelaza od stanja q1  do stanja

     f 1  koristeći praznu riječ ε  i simbole riječi w1, zatim primjenom  ε-prijelaza od stanja   f 1do stanja q2, te na kraju obrade primjenom slijeda prijelaza od stanja q2 do stanja  f 2, ko-

    risteći praznu riječ  ε  i simbole iz riječi w2. Prema tome, ako vrijedi w  ∈  L( M 1) L( M 2),

    zaključujemo da isto tako vrijedi w  ∈  L( M )). S druge strane, ako automata  M  prihvaća

    neku riječ  w,   w   ∈   L( M ), tada u odredenom trenutku procesa izračunavanja, automat M  mora primijeniti   ε-prijelaz od stanja   f 1  do stanja  q2. Ako sa  w1  označimo prefiks

    riječi  w  koji predstavlja niz simbola koji su konzumirani to tog trenutka primjene   ε-

    prijelaza, tada automat  M 1  mora prihvaćati riječ w1. Imajući u vidu da nakon primjene

    ε-prijelaza, slijed prijelaza može uključivati samo one prijelaze koji pripadaju automatu

     M 2, te imajući u vidu da slijed prijelaza za taj preostali niz simbola kojeg ćemo označiti

    sa w2, odgovara slijedu prijelaza od stanja  q2  do prihvatljivog stanja   f 2, zaključujemo

    da automat  M 2  mora prihvaćati preostali dio simbola w2, koji predstavlja sufiks riječi

    w. Prema tome, ako automat  M  prihvaća neku riječ w, w  ∈  L( M ), tada isto tako vrijedi

    da automat M 1 prihvaća riječ w1, a automat M 2 prihvaća riječ w2. Drugim riječima, ako

    automat M  prihvaća neku riječ  w  =   w1w2, tada vrijedi  w   ∈   L( M 1) L( M 2). Na temelju

    prethodno rečenog zaključujemo da automat  M  prihvaća neku riječ w,  w  ∈  L( M ), ako

    i samo ako vrijedi w  ∈  L( M 1) L( M 2).

    Postupak (6):  U okviru ovog postupka opisujemo način konstrukcije   ε-NKA za re-

    gularni izraz   r ∗1, koji definira jezik   L(r ∗1

    )   =   L(r 1)∗. Pretpostavimo da je prethodno

    konstruiran ε-NKA M 1:

     M 1  = (Q1, Σ1, δ1, q1, { f 1}) (3.14a)

  • 8/19/2019 AFJ Predavanja 2.Parc

    6/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   64

    za koji vrijedi

     L( M 1)  =  L(r 1) (3.15a)

    Pretpostavljamo da skup prihvatljivih stanja   ε-NKA   M 1   sadrži samo jedno stanje.

    Takoder, pretpostavit ćemo da iz prihvatljivog stanja   f 1  nema prijelaza niti za jedan

    ulazni simbol, tj. vrijedi δ1( f 1, a)   =   ∅, za svako  a   ∈   (Σ1  ∪ {ε}). Za regularni izraz r ∗1

    koji definira jezik  L(r ∗1

    )  =  L(r 1)∗ konstruiramo  ε-NKA M  = (Q, Σ, δ, q0, F ) na sljedeći

    način:

     M  = (Q1  ∪ {q0,  f }, Σ1, δ, q0, { f 1}),

    gdje je funkcija prijelaza δ  definirana na sljedeći način:

    •   δ(q0, ε)  =  δ( f 1, ε)  =  {q1,  f }

    •   δ(q, a)  =  δ1(q, a), za svako a  ∈  (Σ1  ∪ {ε}) i za svako q  ∈  (Q1 \ { f 1})

    Dijagram stanja izgradenog  ε-NKA   M  koji prihvaća jezik  L( M )  =   L( M 1)∗  je pri-

    kazan na slici 3.16. Skup stanja automata   M   se sastoji od svih stanja skupa  Q1  i dva

    dodatna stanja: novog početnog stanja q0  i novog prihvatljivog stanja   f . Dakle, stanje

    q1  nije više početno stanje, a stanje   f 1  nije više prihvatljivo stanje. Prijelazi automata

     M  su svi prijelazi automata  M 1, zatim dodatni ε-prijelazi od stanja q0  do stanjâ q1  i   f ,

    kao i dodatni  ε-prijelazi od stanja   f 1  do stanjâ q1  i   f .

    q0   q1  f 1   f 

     M 1ε

    ε

    ε

    ε

    Slika 3.16:  Konstrukcija ε-NKA M  koji prihvaća jezik  L( M 1)∗

    Sada  ćemo pokazati da automat   M   prihvaća neku riječ  w  ako i samo ako vrijedi

    w ∈  L( M 1)∗.

    Prvo  ćemo indukcijom pokazati da ako vrijedi  w   ∈   L( M 1)∗, tada automat   M  pri-

    hvaća riječ w.

    Osnovni slu čaj.  Automat M  prihvaća praznu riječ ε, jer automat iz početnog stanjas primjenom ε-prijelaza može preći u prihvatljivo stanje.

    Induktivni slučaj.  Sada pretpostavimo da vrijedi  x  ∈  L( M 1)∗ i y  ∈  L( M 1).

    Razmotrimo proces izračunavanja automata M  za riječ w  =  xy. Nakon obrade riječi

     x, automat  M  će preći u prihvatljivo stanje   f 1, pa može primijeniti ε-prijelaz do stanja

  • 8/19/2019 AFJ Predavanja 2.Parc

    7/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   65

    s1. Zatim, konzumiranjem simbola riječi y  automat  M  će preći u prihvatljivo stanje   f 1,

    te na kraju može iskoristiti ε-prijelaz do prihvatljivog stanja s. Prema tome, automat M 

    prihvaća riječ w  =   xy. Dakle, zaključujemo da ako vrijedi  w   ∈   L( M 1)∗, tada automat M  prihvaća riječ w.

    Sada  ćemo indukcijom pokazati da ako automat   M   prihvaća neku riječ   w, tada

    vrijedi w  ∈  L( M 1)∗. Pri prihvaćanju neke riječi w  automat  M  ulazi u stanje   f  odredeni

    broj puta. Upravo ćemo iskoristiti taj broj ulazaka automata   M  u stanje   f   da bismo

    indukcijom dokazali gornju tvrdnju.

    Osnovni slu čaj.   Ako automat   M  pri obradi neke riječi   w  posjeti stanje   f   samo

     jednom, tada vrijedi w  =  ε, tj.  w  ∈  L( M 1)∗.

    Induktivni slu čaj.  Ako automat  M  pri obradi neke riječi u stanje   f   ude n  ili manje

    puta, n  ≥  1, tada je ta riječ iz skupa L( M 1)∗.

    Razmotrimo sada riječ w koju automat M  prihvaća tako da pri njenoj obradi u stanje

     f   ulazi  n  +  1 puta. Neka je   x  prefiks riječi  w, te neka automat   M   prihvaća prefiks   x

    tako da u stanje   f   ulazi n-ti put. Nadalje, neka je y  preostali dio riječi w, tj.   w  =   xy.

    Prema indukcijskoj hipotezi vrijedi  x  ∈  L( M 1)∗. Pri obradi riječi y, automat  M  prelazi

    u stanje q1  koristeći ε-prijelaz, a zatim konzumiranjem ε-prijelaza i simbola iz riječi y

    dolazi do stanja   f 1, tj. vrijedi y  ∈  L( M 1). Iz  x  ∈  L( M 1)∗ i y  ∈  L( M 1) slijedi da za riječ

    w  =  xy  vrijedi w  ∈  L( M 1)∗. Dakle, zaključujemo da ako automat  M  prihvaća neku riječ

    w, tada vrijedi w  ∈  L( M 1)∗.  

    Primjer 3.8.  Neka je potrebno izgraditi  ε-NKA za sljedeći regularni izraz:

    r  =  b(ab)∗ + ab∗a

    1:   Regularni izraz  r   =   b(ab)∗ +  ab∗a  ćemo prvo prikazati kao  r   =   r 1  +  r 2, gdje su

    r 1  =  b(ab)∗ i r 2  = ab

    ∗a.

    2:  Regularni izraz r 1   =  b(ab)∗ možemo prikazati u obliku  r 1   =  r 3r 4, gdje su  r 3   =  b  i

    r 4  = (ab)∗.

    3:  Za izraz r 3  = b  koristeći postupak (1) konstruiramo  ε-NKA kao što je prikazano na

    slici 3.17a.

    4:   Izraz r 4  = (ab)∗ možemo prikazati na sljedeći način: r 4  =  r 

    ∗5

    , gdje je r 5  = ab.

    5:   Izraz r 5  = ab  rastavljamo na sljdeći način:r 5  =  r 6r 7, gdje su  r 6  = a  i  r 7  = b

    6:   Za izraze  r 6   =   a   i  r 7   =   b  koristeći postupak (3) konstruiramo   ε-NKA kao što je

    prikazano na slikama 3.17b i 3.17c .

    7:   Za izraz  r 5   =   ab koristeći postupak (5) konstruiramo  ε-NKA kao što je prikazano

    na slici 3.17d.

    8:  Za izraz r 4  = (ab)∗ koristeći postupak (6) konstruiramo ε-NKA kao što je prikazano

    na slici 3.17e.

  • 8/19/2019 AFJ Predavanja 2.Parc

    8/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   66

    9:   Za izraz  r 1   =   b(ab)∗ koristeći postupak (5) konstruiramo  ε-NKA kao što je prika-

    zano na slici 3.17f.

    q1   q2b

    (a) ε-NKA za izraz r 3  = b

    q3   q4a

    (b) ε-NKA za izraz r 6  = a

    q5   q6b

    (c) ε-NKA za izraz r 7  = b

    q3   q4   q5   q6a   ε   b

    (d) ε-NKA za izraz r 5  = r 6r 7  = ab

    q7   q3   q4   q5   q6   q8a   ε   bε ε

    ε

    ε

    (e) ε-NKA za izraz r 4  = r ∗5 = (ab)∗

    q1   q2   q7   q3   q4   q5   q6   q8b   ε   a   ε   bε ε

    ε

    ε

    (f) ε-NKA za izraz r 1  =  r 3r 4  =  b(ab)∗

    Slika 3.17:  Konstrukcija ε-NKA za regularni izraz r 1  = b(ab)∗

    10:   Regularni izraz  r 2   =   ab∗a  možemo rastaviti na sljedeći način:   r 2   =   r 8r 9, gdje su

    r 8  =  a  i  r 9  = b∗a.

    11:  Za izraz r 8  = a  koristeći postupak (3) konstruiramo  ε-NKA kao što je prikazano na

    slici 3.18a.

    12:   Izraz  r 9   =   b∗a  možemo rastaviti na sljedeći način:   r 9   =   r 10r 11, gdje su  r 10   =   b

    ∗ i

    r 11  = a.

    13:   Za izraz  r 11   =   a  koristeći postupak (3) konstruiramo  ε-NKA kao što je prikazano

    na slici 3.18b.

  • 8/19/2019 AFJ Predavanja 2.Parc

    9/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   67

    14:   Izraz r 10  =  b∗ rastavljamo na sljedeći način: r 10  =  r 

    ∗12

    , gdje je r 12  = b.

    15:   Za izraz  r 12   =   b  koristeći postupak (3) konstruiramo  ε-NKA kao što je prikazanona slici 3.18c.

    16:   Za izraz  r 10   =  b∗ koristeći postupak (6) konstruiramo  ε-NKA kao što je prikazano

    na slici 3.18d.

    17:   Za izraz r 9  =  b∗a koristeći postupak (5) konstruiramo  ε-NKA kao što je prikazano

    na slici 3.18e.

    18:  Za izraz r 2  =  ab∗a koristeći postupak (5) konstruiramo ε-NKA kao što je prikazano

    na slici 3.18f.

    q9   q10a

    (a) ε-NKA za izraz r 8 =

     a

    q11   q12a

    (b)  ε-NKA za izraz  r 11  =

    a

    q13   q14b

    (c)  ε-NKA za izraz  r 12  =

    b

    q15   q13   q14   q16ε   b   ε

    ε

    ε

    (d) ε-NKA za izraz r 10  =  r ∗12 = b∗

    q15

      q13

      q14

      q16

      q11

      q12

    ε   b   ε

    ε

    ε

    ε   a

    (e) ε-NKA za izraz r 9  = r 10r 11  =  b∗a

    q9   q10   q15   q13   q14   q16   q11   q12a   ε ε   b   ε

    ε

    ε

    ε   a

    (f) ε-NKA za izraz r 2  = r 8r 9  = ab∗a

    Slika 3.18:  Konstrukcija ε-NKA za regularni izraz r 2  = ab∗a

    19:   Konačno, za regularni izraz   r   =   b(ab)∗ +  ab∗a  konstruiramo   ε-NKA na temelju

    prethodno konstruiranih ε-NKA za izraze r 1  = b(ab)∗ i r 2  =  ab

    ∗a, koji su prikazani

    na slikama 3.17f i 3.18f, respektivno. Primjenjujući postupak (4) konstruiramo

    rezultirajući ε-NKA kao što je prikazano na slici 3.19.

  • 8/19/2019 AFJ Predavanja 2.Parc

    10/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   68

    q17

    q1   q2   q7   q3   q4   q5   q6   q8

    q9   q10   q15   q13   q14   q16   q11   q12

    q18

    b   ε   a   ε   bε ε

    ε

    ε

    a   ε ε   b   ε

    ε

    ε

    ε   a

    ε

    ε

    ε

    ε

    Slika 3.19:  Konstruirani  ε-NKA za regularni izraz r  =  r 1  + r 2  =  b(ab)∗ + ab∗a

    3.7.2 Konstrukcija regularnog izraza za zadani ε-NKA

    U ovom odjeljku ćemo pokazati da svaki  -NKA M  prihvaća regularne jezike.

    Teorem 3.4.   Za svaki    -NKA M   =   (Q, Σ, δ, q0, F )  koji prihva´ ca jezik L( M )  postoji

    regularni izraz r takav da vrijedi L(r )  =   L( M ). Drugim rijeˇ cima, ako neki   -NKA M 

     prihva´ ca jezik L, tada je jezik L regularan jezik.

     Dokaz.   Uzimajući u obzir da smo prethodno pokazali da se za svaki  ε-NKA može iz-

    graditi ekvivalentni DKA, dovoljno je da pokažemo da za svaki DKA  M  postoji regu-

    larni izraz r  takav da vrijedi L( M )  =  L(r ). Pretpostavimo da DKA  M  = (Q, Σ, δ, q0, F )

    prihvaća jezik   L. Za svako stanje   p, q   ∈   Q  možemo definirati jezik   L( p, q) koji se

    sastoji od svih riječi koje označavaju prijelaze od stanja  p  do stanja q. Dakle, imamo:

     L( p, q)  =  { x  ∈  Σ∗ |  δ∗( p, x)  =  q}   (3.16)

    Jezik  L( M ) se sastoji od svih riječi koje označavaju prijelaze od početnog stanja q0do nekog prihvatljivog stanja  q   ∈   F . Uzimajući u obzir sva prihvatljiva stanja  q   ∈   F ,

     jezik  L( M ) možemo izraziti na sljedeći način:

     L( M )  =

    q∈F 

     L(q0, q) (3.17)

    Budući da znamo da se unijom regularnih jezika dobija takoder regularan jezik,

    dovoljno je pokazati da je svaki jezik  L(q0, q) regularan.

  • 8/19/2019 AFJ Predavanja 2.Parc

    11/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   69

    Pretpostavimo da skup stanja  Q  nekog DKA  M  ima  n  stanja, pri  čemu su ta stanja

    označena cijelim brojevima od 1 do n. Za neka stanja  p, q ∈  Q  i   j ≥  0 uvedimo sljedeću

    notaciju:

     L( p, q, k )  =

     x  ∈  Σ∗

     x odgovara slijedu prijelaza od  p do  q  koji

    ne sadrži stanja označena brojem većim od k 

    Dakle, L( p, q,   j) označava skup riječi iz jezika L( p, q) koje odgovaraju slijedu prijelaza

    automata  M  od stanja   p  do stanja  q, pri  čemu slijed prijelaza ne uključuje niti jedno

    stanje koje je označeno brojem većim od   j.

    Osnovni slu čaj. Skup L( p, q, 0) je skup svih riječi koje odgovaraju slijedu prijelaza od

    stanja   p  do stanja  q, koji ne uključuje niti jedno stanje iz  Q. Prema tome, prijelaz iz

    stanja   p  u stanje  q   se ostvaruje direktno, pa skup   L( p, q, 0) zapravo sadrži simbole  a

    iz alfabeta  Σ, za koje vrijedi  δ( p, a)  =   q. Osim toga, u slučaju da vrijedi   p   =   q, tada

    skup  L( p, q, 0) uključuje i praznu riječ  ε. Iz prethodno navedenog zaključujemo da je

     L( p, q, 0) konačan skup riječi, pa je regularan.

    Induktivni slu čaj. Uzmimo sada za induktivnu hipotezu da je skup  L( p, q, k ) regularan

    za sva stanja p, q  ∈  Q  i za neki broj k  ≥  0. Sada trebamo na temelju induktivne hipoteze

    pokazati da skupu  L( p, q, k  + 1) odgovara neki regularan izraz. U skupu  L( p, q, k  + 1)

    su one riječi koje odgovaraju slijedu prijelaza od   p  do  q, pri čemu slijed prijelaza ne

    uključuje niti jedno stanje označeno brojem većim od k +1. Riječi iz skupa L( p, q, k +1)

    možemo podijeliti u sljedeće dva podskupa:

    1. U prvom podskupu L1  su one riječi kojima odgovaraju slijedovi prijelaza koji ne

    uključuju stanje k + 1, pa su to zapravo riječi iz jezika:

     L1 =

     L( p, q, k )

    2. U drugom podskupu L2 se nalaze one riječi kod kojih slijed prijelaza pored stanja

     j za koje vrijedi 1 ≤   j ≤  k , uključuje i stanje k +1. Slijed prijelaza koji odgovara

    riječima iz drugog podskupa možemo rastaviti na sljedeća tri dijela:

    (a) Slijed prijelaza od stanja   p do stanja  k  + 1. Ovaj slijed prijelaza odgovara

    riječima iz jezika  L( p, k + 1, k ).

    (b) Slijed prijelaza koji može uključivati i višestruke prolaze kroz stanje k + 1,

    pa kod ovog tipa prijelaza zapravo imamo petlju u stanju  k + 1. Ovaj slijed

    prijelaza odgovara riječima iz jezika  L(k + 1, k + 1, k )

    (c) Slijed prijelaza od stanja  k  + 1 do stanja  q. Ovaj slijed prijelaza odgovara

    riječima iz jezika  L(k + 1, q, k )

    Prethodno opisano rastavljanje na tri dijela slijeda prijelaza od stanja   p  do sta-nja  q  je ilustrirano na slici 3.20. Svaki od gore navedena tri dijela prijelaza ili

    započinje ili završava u stanju  k  +  1 i može sadržavati maksimalno  k  stanja, pa

    riječi iz drugog podskupa možemo formalno zapisati na sljedeći način:

     L2  =  L( p, k + 1, k ) L(k + 1, k + 1, k )∗ L(k + 1, q, k ) (3.18)

  • 8/19/2019 AFJ Predavanja 2.Parc

    12/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   70

    Uzimajući u obzir induktivnu hipotezu, zaključujemo da je skup   L2  definiran

    izrazom 3.18 regularan.

    Prema tome, uzimajući u obzir oba podskupa, skup  L( p, q, k  + 1) možemo zapisati na

    sljedeći način:

     L( p, q, k + 1)  =  L( p, q, k ) ∪ L( p, k + 1, k ) L(k + 1, k + 1, k )∗ L(k + 1, q, k ) (3.19)

    Budući da su skupovi L1 i L2 regularni, zaključujemo da je regularan i skup L( p, q, k +

    1) definiran izrazom 3.19, pa smo time pokazali i induktivni korak.  

     p   k + 1   q

    Slika 3.20:  Slijed prijelaza od stanja  p  do stanja  q  kroz stanje k + 1

    Dakako, izraz 3.19 pokazuje i mogući način konstrukcije regularnog r ( p, q, k  + 1)

    koji opisuje jezik  L( p, q, k + 1):

    r ( p, q, k + 1)  =  r ( p, q, k ) + r ( p, k + 1, k )r (k + 1, k + 1, k )∗r (k + 1, q, k ) (3.20)

    Za jezik  L( p, q) imamo:

     L( p, q)  =  L( p, q, n),   (3.21)

    odnosno,

    r ( p, q)  = r ( p, q, n),   (3.22)

     jer L( p, q, n) i r ( p, q, n) isključuju slijedove prijelaza koji sadrže stanja veća od n, a to

    ne predstavlja nikakvo ograničenje jer automat  M  ima upravo n  stanja.

    Primijetimo takoder da iz izraza 3.20 možemo zapravo izvesti algoritam za kons-

    trukciju regularnog izraza za jezik  L( p, q). Naime, regularan izraz r ( p, q, n) možemo

    prikazati koristeći izraze   r (i,  j, n  −   1), gdje   i   i   j  označavaju odredena potrebna sta-nja sukladno izrazu 3.20. Zatim izraze  r (i,  j, n −  1) možemo prikazati koristeći izraze

    r (i,  j, n −  2), itd. Na kraju razvoja izraza ćemo dobiti izraze za  r (i,  j, 1) koji su prika-

    zani pomoću regularnih izraza  r (i,  j, 0). Nadalje, regularni izrazi r (i,  j, 0) se mogu na

     jednostavan način dobiti direktno iz same definicije automata  M , imajući u vidu da sli-

     jed prijelaza uključuje broj medustanja koji je jednak 0. Kada imamo regularne izraze

  • 8/19/2019 AFJ Predavanja 2.Parc

    13/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   71

    r (i,  j, 0), proces nastavljamo u obrnutom smjeru tako što koristimo prethodno razvijene

    izraze za r (i,  j, 1),r (i,  j, 2) itd., sve dok ne dobijemo izraz za  r ( p, q, n).

    Na kraju, da bismo dobili jezik  L( M ) kojeg prihvaća automat M , prema izrazu 3.17

    potrebno je objediniti sve jezike   L(q0, q), za  q   ∈   F . To znači, da bismo konstruirali

    regularni izraz za jezik  L( M ), trebamo koristeći operator + kombinirati regularne izraze

    za jezike r (q0, q, n), za sva stanja q  ∈  F .

    Primjer 3.9.  U ovom primjeru ćemo opisati način konstrukcije regularnog izraza za

    dva DKA, pri čemu  ćemo koristiti prethodno opisani postupak. Neka su dijagramima

    stanja koji su prikazani na slici 3.21 zadani DKA  M 1 i DKA  M 2

    1start   2   3

    a

    b

    a

    b

    a

    (a)

    1start   2   3

    a

    b

    a

    b

    a

    (b)

    Slika 3.21:  Primjer dva DKA za koja izračunavamo ekvivalentni regularni izraz

    Konstrukcija regularnog izraza za DKA  M 1.   Jezik  L( M 1) kojeg prihvaća DKA  M 1prikazan na slici 3.21(a) je opisan regularnim izrazom  r ( M 1):

    r ( M 1)  =  r (1, 3, 3).   (3.23)

    Prema izrazu 3.20 imamo:

    r (1, 3, 3)  =  r (1, 3, 2) + r (1, 3, 2)r (3, 3, 2)∗r (3, 3, 2) (3.24)

    Nadalje, za potrebne izraze  r (i,  j, k ), gdje je k  = 2, imamo:

    r (1, 3, 2)  =  r (1, 3, 1) + r (1, 2, 1)r (2, 2, 1)∗r (2, 3, 1) (3.25a)

    r (3, 3, 2)  =  r (3, 3, 1) + r (3, 2, 1)r (2, 2, 1)∗r (2, 3, 1) (3.25b)

    Desna strana gornjih izraza pokazuje koje izraze   r (i,  j, k ) je potrebno izračunati za

    k  = 1. U tablici 3.6 su dati regularni izrazi r (i,  j, 0) za k  = 0, koji se direktno mogu na-

    pisati iz dijagrama stanja DKA  M 1  prikazanog na slici 3.21(a), pa proces konstrukcijeregularnog izraza r ( M 1) možemo nastaviti od dna prema vrhu.

  • 8/19/2019 AFJ Predavanja 2.Parc

    14/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   72

     p r ( p, 1, 0)   r ( p, 2, 0)   r ( p, 3, 0)

    1   ε + a b   ∅

    2   ∅   ε + a b

    3   ∅ ∅   ε + a + b

    Tablica 3.6:  Regularni izrazi za  k  =  0

    Uzimajući u obzir 3.20 i izraze prikazane u tablici 3.6 imamo:

    r (1, 3, 1)  =  r (1, 3, 0) + r (1, 1, 0)r (1, 1, 0)∗r (1, 3, 0)

    =  ∅ + (ε + a)(ε + a)∗(∅)

    =  ∅ + ∅

    =  ∅

    r (1, 2, 1)  =  r (1, 2, 0) + r (1, 1, 0)r (1, 1, 0)∗r (1, 2, 0)

    = b + (ε + a)(ε + a)∗(b)

    = b + (ε + a)a∗b

    = b + a∗b

    = (ε + a∗)b

    = a∗b

    r (2, 2, 1)  =  r (2, 2, 0) + r (2, 1, 0)r (1, 1, 0)∗r (1, 2, 0)

    =  ε + a + (∅)(ε + a)∗(b)

    =  ε + a + ∅

    =  ε + a

    r (2, 3, 1)  =  r (2, 3, 0) + r (2, 1, 0)r (1, 1, 0)∗r (1, 3, 0)

    = b + (∅)(ε + a)∗(∅)

    = b + ∅

    = b

    r (3, 3, 1)  =  r (3, 3, 0) + r (3, 1, 0)r (1, 1, 0)∗r (1, 3, 0)

    =  ε + a + b + (∅)(ε + a)∗(∅)

    =  ε + a + b

  • 8/19/2019 AFJ Predavanja 2.Parc

    15/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   73

    r (3, 2, 1)  =  r (3, 2, 0) + r (3, 1, 0)r (1, 1, 0)∗r (1, 2, 0)

    =  ∅ + (∅)(ε + a)∗(b)

    =  ∅ + ∅

    =  ∅

    Zatim, na temelju gornjih izraza i izraza 3.25 izračunavamo potrebne izraze r (i,   j, 2) za

    k  = 2:

    r (1, 3, 2)  =  ∅ + (a∗b)(ε + a)∗(b)

    = a∗ba∗b

    r (3, 3, 2)  =  ε + a + b + (∅)(ε + a)∗(b)

    =  ε + a + b + ∅

    =  ε + a + b

    Na kraju, iz izraza 3.27 i dobivenih izraza za   r (1, 3, 2) i   r (3, 3, 2), imamo izraz za

    r (1, 3, 3):

    r (1, 3, 3)  =  a∗ba∗b + (a∗ba∗b)(ε + a + b)∗(ε + a + b)

    = a∗ba∗b(ε + (ε + a + b)∗(ε + a + b))

    = a∗ba∗b(ε + (a + b)∗(ε + a + b))

    = a∗ba∗b(ε + (a + b)∗)

    = a∗ba∗b(a + b)∗

    Konstrukcija regularnog izraza za DKA M 2.  Budući da DKA M 2 (vidjeti sliku 3.21b

    ima dva prihvatljiva stanja (stanje 2 i stanje 3), to znači da je jezik  L( M 2):

     L( M 2)  =  L(1, 2, 3) ∪ L(1, 3, 3).

    Drugim riječima, za izgradnju regularnog izraza r ( M 2) je potrebno kombinirati sljedeća

    dva regularna izraza:

    r ( M 2)  =  r (1, 2, 3) + r (1, 3, 3) (3.26)

    Prema izrazu 3.20 imamo:

    r (1, 2, 3)  =  r (1, 2, 2) + r (1, 3, 2)r (3, 3, 2)∗r (3, 2, 2) (3.27)

    Dakle, za potrebne izraze   r (i,  j, k ), gdje je   k    =   2, potrebno je razviti i izračunatir (1, 2, 2),   r (1, 3, 2),  r (3, 3, 2) i  r (3, 2, 2). Budući da smo prethodno već izračunali iz-

    raze za   r (1, 3, 2) i   r (3, 3, 2), ostalo je još da razvijemo i izračunamo sljedeće izraze

    r (1, 2, 2) i  r (3, 2, 2):

    r (1, 2, 2)  =  r (1, 2, 1) + r (1, 1, 1)r (1, 1, 1)∗r (1, 2, 1) (3.28a)

  • 8/19/2019 AFJ Predavanja 2.Parc

    16/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   74

    r (3, 2, 2)  =  r (3, 2, 1) + r (3, 2, 1)r (2, 2, 1)∗r (2, 2, 1) (3.28b)

    Prethodno smo već izračunali gotovo sve potrebne izraze  r (i,  j, k ) za  k   =  1, osim

    izraza r (1, 1, 1). Na temelju izraza 3.20 i regularnih izraza za  k  =  0 prikazanih u tablici

    3.6 imamo:

    r (1, 1, 1)  =  r (1, 1, 0) + (r (1, 1, 0)∗r (1, 1, 0)

    =  ε + a + (ε + a)(ε + a)∗(ε + a)

    =  ε + a + (ε + a)a∗(ε + a)

    =  ε + a + a∗(ε + a)

    =  ε + a + a∗

    =  ε + a∗)

    = a∗)

    Na temelju izraza 3.28 i potrebnih prethodno izračunatih izraza r (i,  j, k ) za  k  =  1,

    imamo:

    r (1, 2, 2)  =  a∗b + (a∗)(a∗)∗(a∗b)

    = a∗b + a∗a∗a∗b

    = a∗b + a∗a∗b

    = a∗b + a∗b

    = a∗b

    r (3, 2, 2)  =  ∅ + (∅)(ε + a)∗(ε + a)

    = ∅+

    ∅= ∅

    Iz 3.27 i prethodno izračunatih izraza r (i,  j, k ) za  k  = 2, imamo:

    r (1, 2, 3)  =  a∗b + (a∗ba∗b)(ε + a + b)∗(∅)

    = a∗b + ∅

    = a∗b

    Konačno, na temelju 3.26 za regularni izraz r ( M 2) automata  M 2   imamo:

    r ( M 2)  =  a∗b + a∗ba∗b(a + b)∗ (3.29)

    Kao što vidimimo, iako DKA  M 1 i DKA  M 2 imaju samo tri stanja, konstrukcija re-gularnih izraza na prethodno opisani način je prilično zahtjevna. Nadalje, napomenimo

     još da regularni izrazi dobiveni na prethodno opisani način ne moraju biti najjednos-

    tavniji mogući ekvivalentni izrazi. S druge strane, opisani postupak ipak omogućuje

    sistematičan pristup konstrukciji regularnih izraza za jezik  L( M ) zadan nekim determi-

    nističkim konačnim automatom  M .  

  • 8/19/2019 AFJ Predavanja 2.Parc

    17/91

    Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem   75

    3.8 Kleeneov teorem

    Kombinirajući teoreme 3.3 i 3.4, dobijamo Kleenov teorem.

    Teorem 3.5.   Neka je jezik L jezik nad nekim alfabetom  Σ. Jezik L je regularan ako i

    samo ako ga prihva´ ca neki ε  −  NKA sa alfabetom Σ.

  • 8/19/2019 AFJ Predavanja 2.Parc

    18/91

    Predavanje 7

    Svojstva regularnih jezika

    7.1 Svojstvo napuhavanja

    Najčešća primjena svojstva napuhavanja je pri dokazivanju neregularnosti nekih jezika.

    Ovo svojstvo ćemo formalno prikazati teoremom 7.1.

    Teorem 7.1  (Svojstvo napuhavanja).   Neka je definiran jezik L nad alfabetom   Σ. Ako

    konaˇ cni automat M   = (Q, Σ, δ,q0, F ) prihva´ ca jezik L, te ako je n broj stanja automata

     M, tada za svaku rijeˇ c w ∈  L, koja zadovoljava  |w| ≥  n, postoje tri rijeˇ ci x, y i z, takve

    da je:

    w  =  xyz,

     pri ˇ cemu su zadovoljena sljede´ ca tri uvjeta:

    1.   | xy| ≤ n.

    2.   | y|  >  0 , tj. v    ε.

    3. Rijeˇ c xyi z takoder pripada jeziku L, za svaki i ≥  0.

     Dokaz.  Neka DKA  M  koji prihvaća jezik  L  ima stanja koja su označena sa q0, q1, q2,

    . . ., qn−1. Budući da smo pretpostavili da je jezik  L beskonačan, postoji riječ w iz jezika

     L takva da vrijedi |w| ≥ n. DKA M  čitanjem simbola riječi w prelazi iz početnog stanja

    q0 u prihvatljivo stanje q f , pri čemu slijed prijelaza možemo prikazati sljedećim nizom

    stanja:

    q0, qi, q j, . . . ,q f .

    Budući da je broj stanja u gornjem nizu jednak  |w| + 1, možemo zaključiti da se barem

     jedno stanje u tom nizu mora ponoviti, te da to ponavljanje mora započeti najkasnije

    pri n  − 1-vom prijelazu. Prema tome, niz stanja mora imati sljedeći oblik:

    q0, qi, q j, . . . ,qr , . . .qr , . . .q f ,

    na temelju kojeg zaključujemo da riječ  w  mora sadržavati podriječi   x,  y  i  z, takve da

    vrijedi:

    δ∗(q0, x)  =  qr ,

    76

  • 8/19/2019 AFJ Predavanja 2.Parc

    19/91

    PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA   77

    δ∗(qr , y)  =  qr ,   (7.1)

    δ∗(qr , z)  =  q f ,

    pri čemi vrijedi | xy| ≤ n  i | y| ≥ 1. Dakle, čitanjem simbola sa ulazne trake koji čine riječ

    w  =  xyz, DKA  M  iz početnog stanja q0 prelazi u prihvatljivo stanje  q f , pri čemu slijed

    prijelaza formira ciklus čitanjem simbola koji  čine riječ  y. Slijed prijelaza pri  čitanju

    simbola iz riječi w  koji formira cikluse je prikazan na slici 7.1. Nadalje, istaknimo da

    postoji mogućnost da se riječ  w  može raščlaniti na više načina na podriječi   x,   y   i  z,

    odnosno da postoji mogućnost postojanja više od jednog ciklusa. U svakom slučaju,

    DKA M  u svom radu mora proći barem kroz jedan ciklus  čitanjem prvih n  simbola iz

    riječi  w   ∈   L. Drugim riječima, postoji barem jedna mogućnost izbora podriječi   x,   y

    i  z, takvih da je  w   =   xyz, pri čemu niz simbola  y  odgovara prijelazima koji formiraju

    cikluse (vidjeti sliku 7.1). Nadalje, na temelju 7.1 za riječ  xz  imamo:

    δ∗(q0, xz)  =  δ

    ∗(δ∗(q0, x), z)

    =  δ∗(qr , z)

    = q f .

    Dakle, vrijedi xz  ∈  L. Razmotrimo i riječ  xyyz, za koju imamo:

    δ∗(q0, xyyz)  =  δ

    ∗(δ∗(q0, x), yyz)

    =  δ∗(qr , yyz)

    =  δ∗(δ∗(qr , y), yz)

    =  δ∗(qr , yz)

    =  δ∗(δ∗(qr , y), z)

    =  δ∗(qr , z)

    = q f .

    Dakle, riječ   xy2 z   ∈   L( M ). Zapravo možemo zaključiti da će za bilo koji broj ponav-

    ljanja ciklusa koji korespondira s nizom simbola  y, DKA   M   završiti u prihvatljivom

    stanju q  f . Prema tome, možemo zaključiti da pored riječi  xz,   xyz i   xy2 z, za koje smo

    već utvrdili da su iz jezika   L( M ), jeziku   L( M ) takoder pripadaju i riječi   xy3 z,   xy4 z,

    itd. Odnosno, za svako i   ≥   0, riječ   xyi z  takoder pripada jeziku  L( M ), jer DKA   M   iz

    početnog stanja q0  može preći u finalno stanje  q f   ponavlajući i  puta ciklus koji kores-

    pondira nizu simbola iz podriječi y.

    Svojstvo koje smo upravo dokazali se naziva  svojstvo napuhavanja. Naziv  ”na-

     puhavanje” dolazi od toga što se riječ w  može napuhavati umetanjem dodatnih kopija

    riječi y.  

  • 8/19/2019 AFJ Predavanja 2.Parc

    20/91

    PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA   78

    q0   qr    qm

     z x yi

    Slika 7.1:  Svojstvo napuhavanja

    Kao što je na početku ovog odjeljka već istaknuto, najčešća primjena svojstva na-

    puhavanja je pri dokazivanju da neki jezik ne može biti prihvaćen determinističkim

    konačnim automatom. Naime, prvo pretpostavljamo da jezik   L  može biti prihvaćen

    determinističkim konačnim automatom   M   sa   n   stanja. Zatim, pokušavamo izabrati

    riječ iz jezika  L  koja ima duljinu barem n, tako da nas tvrdnje 1-3 iz teorema 7.1 vode

    u kontradikciju.

    Kao što je prethodno opisano, svojstvo napuhavanja podrazumijeva odredene uvjete

    koje svaka riječ iz nekog jezika   L, koja ima duljinu barem   n, mora zadovoljavati.

    Moguće je da za neke odabrane riječi w, činjenica da w  zadovoljava uvjete iz teorema

    7.1 ne stvara nikakvu kontradikciju. Dakako, u slučaju tako odabranih riječi, kada

    ne možemo utvrditi kontradikciju, zapravo ne možemo ništa niti dokazati. Dakle, po-

    trebno je pronaći takvu riječ na temelju koje će se moći utvrditi kontradikcija. Sljedeći

    primjeri ilustriraju primjenu teorema 7.1 pri dokazivanju neregularnosti jezika.

    Primjer 7.1.  Neka je zadan sljedeći jezik:

     L  =  {aibi | i  ≥  0}.

    Pokušajmo dobiti kontradikciju tako da pretpostavimo da postoji DKA   M  koji ima  nstanja i koji prihvaća jezik  L. Izaberimo riječ  w   =   anbn. Prema tome, vrijedi w   ∈   L

    i  |w| ≥   n. Sukladno teremu 7.1, postoje riječi   x,  y  i  z, takve da je  w   =   xyz, pri  čemu

    vrijede sljedeći uvjeti:

    1.   | xy| ≤ n

    2.   y    ε

    3.   xyi z ∈  L, za svaki i  ≥  0

    Budući da je prvih n  simbola riječi w   = anbn  jedanko a, iz uvjeta (1) zaključujemo

    da svi simboli u riječima x  i  y  moraju biti  a. Prema tome, riječi  x  i  y  možemo zapisati

    na sljedeći način:

     x  =  a p gdje je 0  ≤   p  <  n,

     y  =  ak  gdje je 0  <  k  ≤  n,

     z  =  an− p−k bn.

  • 8/19/2019 AFJ Predavanja 2.Parc

    21/91

    PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA   79

    Prema uvjetu (3) svojstva napuhavanja imamo da vrijedi  xyi z ∈  L. Uzmimo, npr. i  =  2.

    Tada za riječ  xy2 z dobivamo:

     xy2 z  =  a pa2k an− p−k bn

    = a p+2k +n− p−k bn

    = ak +nbn

    Budući da je   k   >   0 zaključujemo da vrijedi   ak +nbn   L, iako bi prema uvjetu

    (3) svojstva napuhavanja trebalo vrijediti   ak +nbn ∈   L. Drugim riječima, dobili smo

    kontradikciju, pa zaključujemo da ne postoji DKA M  koji prihvaća jezik  L.  

    Primjer 7.2.  Neka je zadan sljedeći jezik:

     L  =  {ai2

    | i  ≥  0}.

    Dakle, jezik  L  sadrži nizove simbola  a,  čija je duljina jednaka kvadratu nekog cijelogbroja.

    Pretpostavimo da DKA   M , koji prihvaća jezik  L, ima  n   stanja. Izaberimo riječ  w

    na sljedeći način:  w   =  an2

    . Prema svojstvu napuhavanja, riječ w   =   xyz za neke nizove

    simbola x, y  i  z, zadovoljava uvjete 1-3. Iz uvjeta 1 i 2 imamo:

    0  <  | y| ≤ | xy| ≤ n.

    Prema tome, imamo:

    |w|   = | xyz|  =  n2

  • 8/19/2019 AFJ Predavanja 2.Parc

    22/91

    PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA   80

    2. L1  ∩  L2

    3. L1  \  L2

     Dokaz.  Za dokazivanje gore navedeneih svojstava zatvorenosti koristimo teorem 2.1.

    Neka   M 1   i   M 2  označavaju DKA koji prihvaćaju regularne jezike  L1   i  L2. Teoremom

    2.1 smo pokazali da se mogu konstruirati DKA koji prihvaćaju jezike L1 ∪ L2, L1 ∩ L2 i

     L1 \  L2, pa su i navedeni jezici koji nastaju operacijom unije, presjeka i razlike takoder

    regularni jezici.  

    Zatvorenost s obzirom na komplement

    Teorem 7.3.  Regularni jezici su zatvoreni s obzirom na operaciju komplementa.

     Dokaz.  Neka DKA  M :

     M   = (Q, Σ, δ,q0, F )

    prihvaća regularni jezik  L( M ). Konstruirajmo DKA na sljedeći način:

     M c = (Q, Σ, δ,q0, Q \ F ).

    DKA M c prihvaća jezik:

     L( M c)  =  {w |  δ(q0, w) ∈  Q  \  F }

    =  {w |  δ(q0, w)    F }

    = Σ∗ \ {w | δ(q0, w) ∈  F }

    = Σ∗ \ L( M )

    =  L( M c)

    Budući da smo za jezik   Lc koji je komplement jezika   L   konstruirali DKA, za-

    ključujemo da je i jezik  Lc regularan jezik, pa su regularni jezici zatvoreni s obziromna operaciju komplementa.  

    7.2.1 Zatvorenost s obzirom na reverziranje

    U prvom poglavlju smo definirali operaciju reverziranja kao operaciju kojom se simboli

    a1a2 . . . an zapisuju zapisuju u obrnutom poretku anan−1 . . . a1. Za označavanje reverzi-

    ranja riječi w  koristimo oznaku w R. Naprimjer, za riječ w   =  abaa, imamo w R =  aaba.

    Nadalje, vrijedi ε R =  ε.

    Nadalje, reverziranje jezika L, što označavamo kao L R, definiramo kao jezik koji se

    sastoji od reverznih riječi iz jezika L:

     L R =  {w R | w  ∈  L}.

    . Naprimjer, ako je jezik  L  definiran na sljedeći način:

     L  =  {ab, abbb, ababa, bbaaa},

    tada je reverzni jezik  L R:

     L R = {ba, bbba, ababa, aaabb}.

  • 8/19/2019 AFJ Predavanja 2.Parc

    23/91

    PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA   81

    Teorem 7.4.  Ako je jezik L regularan jezik, tada je i jezik L R takoder regularan jezik.

     Dokaz.   Pretpostavimo da je jezik  L  definiran regularnim izrazom   E . Matematičkomindukcijom na veličini regularnog izraza  E  možemo pokazati da postoji regularni izraz

     E  R, takav da vrijedi:

     L( E  R)  =  ( L( E )) R.

    Odnosno, jezik koji je definiran regularnim izrazom  E  R  je reverzni jezik jezika defini-

    ranog regularnim izrazom E .

    •   Osnovni slu čaj:  Ako je  E   =   ε,   E   =   ∅  ili  E   =   a  za neki simbol  ainΣ, tada je

     E  R =  E . Naime, imamo da vrijedi:

    {ε} R = {ε}, ∅ R =  ∅, {a} R = {a}.

    •   Indukcijski slu čaj:  Imamo tri slučaja, ovisno o obliku regularnog izraza  E .

    1.   E   =   E 1   +  E 2. Ovaj regularni izraz definira jezik  L( E 1) ∪  L( E 2). U ovom

    slučaju E  R definiramo na sljedeći način:  E  R =  E  R1

      +  E  R2

    . Naime, imamo da

    vrijedi:

    ( L( E 1  +  E 2)) R

    = ( L( E 1) ∪ L( E 2)) R

    =  L( E  R1 ) ∪ L( E  R2 )

    =  L( E  R1   +  E  R2 )

    2.   E   =  E 1 E 2. Ovaj regularni izraz definira jezik  L( E 1) L( E 2). U ovom slučaju

     E  R definiramo na sljedeći način:  E  R =  E  R2 E  R

    1. Naime, imamo da vrijedi:

    ( L( E 1 E 2)) R = ( L( E 1) L( E 2)) R

    = ( L( E 2)) R L( E 1))

     R

    =  L( E  R2 ) L( E  R1 )

    =  L( E  R2 E  R1 )

    Uzmimo npr. da imamo L( E 1)  =  {ab, bba} i L( E 2)  =  {bb, ba}. Tada iamamo

    da je:

     L( E 1) L( E 2)  =  {abbb, abba, bbabb, bbaba}.

    Za reverzni jezik ( L( E 1) L( E 2)) R dobijamo:

    ( L( E 1) L( E 2)) R =  {bbba, abba, bbabb, ababb}.

    Ako nadovežemo jezike ( L( E 2)) R i ( L( E 1))

     R imamo:

    ( L( E 2)) R( L( E 1))

     R=  {bb, ab}{ba, abb}

    =  {bbba, bbabb, abba, ababb}

  • 8/19/2019 AFJ Predavanja 2.Parc

    24/91

    PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA   82

    = ( L( E 1) L( E 2)) R

    Općenito, ako za neku riječ w  ∈  L( E ) imamo da je  w   =  w1w2, w1   ∈  L( E 1),

    w2  ∈  L( E 2), tada je w R   = w R2

    w R1

    .

    3.   E   =   E ∗1

    . Ovaj regularni izraz definira jezik ( L( E 1))∗. U ovom slučaju E  R

    definiramo na sljedeći način:   E  R =   ( E  R1

    )∗. Naime, svaku riječ   x   ∈   L( E )

    možemo zapisati kao:

     x   =  x1 x2 · · · xn,

    gdje za svaki  xi  vrijedi  xi  ∈  L( E 1). Nadalje, vrijedi:

     x R =  x Rn x Rn−1 · · · x

     R1 .

    Budući da za svaki  x Ri

      vrijedi  x Ri

      ∈  L( E  R1

    ), imamo da je:

     x R ∈  L(( E  R1 )∗).

    S druge strane, svaku riječ y  ∈  L(( E  R1

    )∗), možemo zapisati u obliku:

     y  =  y1 y2 · · · yn,

    gdje za svaki yi vrijedi yi  ∈  L( E  R1

    ). Reverzna riječ y R  je tada:

     y R = y Rn y Rn−1 · · · y

     R1 ,

    te imamo y R ∈ L( E ∗1

    )   =  L( E ). Time je pokazano da za svaku riječ w  vrijedi

    w ∈  L( E ) ako i samo ako za njenu reverznu riječ w R vrijedi w R ∈  L(( E  R1

    )∗).

  • 8/19/2019 AFJ Predavanja 2.Parc

    25/91

    Predavanje 8

    Formalna gramatika

    Prethodno je rečeno da pod formalnim jezikom podrazumijevamo svaki skup riječi nadnekim definiranim alfabetom, te da jezik možemo specificirati tako što ćemo navesti

    sve riječi koje se nalaze u tom jeziku. Medutim, takav način specifikacije jezika nije

    prihvatljiv za beskonačne jezike. Prema tome, potrebno je pronaći način da se u ne-

    koj konačnoj formi specificiraju i oni jezici koji imaju beskonačno mnogo elemenata.

    Način za prevazilaženje problema konačne specifikacije formalnih jezika je upotreba

     formalne gramatike.Slično kao kod prirodnih jezika kod kojih gramatika predstav-

    lja skup pravila koja neki konkretni prirodni jezik (engleski, francuski, bosanski,...)

    mora zadovoljavati,formalna gramatika predstavlja skup pravila po kojima se generi-

    raju riječi formalnog jezika.

    Neformalno, gramatika je skup pravila koja se koriste da se definira struktura ni-

    zova simbola nad nekim alfabetom  Σ.Gramatika za jezik  L  koji se gradi nad alfabetom

    Σ se sastoji od skupa pravila koji imaju sljedeći oblik:

    α  →  β,

    gdje  α  i  β  označavaju riječi sastavljene od simbola uzetih iz alfabeta   Σ i iz posebnog

    skupa simbola kojeg  ćemo nazivati skup  neterminalnih simbola, te ga označavati sa

     N . Pravilo gramatike α   →  β  se obično naziva   produkcija  i može se čitati na različite

    načine, kao npr.”α  producira  β”,”α  zamjenjujemo sa  β”,i sl.Nadalje,svaka gramatika

    ima specijalni simbol koji se naziva  poˇ cetni simbol,te mora postojati barem jedna pro-

    dukcija kod koje se lijeva strana sastoji samo od startnog simbola. Naprimjer,ako

     je   S   početni simbol za neku gramatiku,onda mora postojati barem jedna produkcija

    sljedećeg oblika:

    S   → β,

    Uzmimo jedan primjer gramatike za neki jezik  L i opišimo proces izvodenja riječi iz

    produkcijskih pravila. Neka je alfabet  Σ  definiran na sljedeći način:

    Σ =  {a, b, c}

    Nadalje,neka je jezik   L   definiran kao   L   = Σ∗. Dakle,jezik   L   je sastavljen od svih

    mogućih riječi koje se mogu dobiti kombiniranjem znakova iz  Σ. Tada bi gramatika za

    83

  • 8/19/2019 AFJ Predavanja 2.Parc

    26/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   84

     jezik  L  mogla sadržavati sljedeći skup P  produkcijskih pravila:

    S   →  ε

    S   → aS 

    S   → bS 

    S   → cS 

    Sada uzmimo bilo koju riječ nad alfabetom   Σ   i pogledajmo kako se ta riječ izvodi

    koristeći produkcijska pravila. Naprimjer,uzmimo riječ  bbca. Izvodenje riječi uvijek 

    počinje početnim simbolom   S . Zamijenit ćemo početni simbol sa desnom stranom

    produkcije S   →  bS . Izabrali smo produkciju S   →  bS  zato što se riječ bbca podudara

    sa desnom stranom te produkcije, uz pretpostavku da je   S    =   bca. Proces zamjene

    simbola S  sa simbolima bS   možemo opisati na sljedeći načine:”bS  proizlazi iz S ”, ”S 

    proizvodi bS ”,”S  generira bS  i sl. Ovo izvodenje ćemo zapisivati na sljedeći način:

    S   ⇒ bS 

    Simbol ⇒  označava izvodenje u jednom koraku. Desna strana ovog izvodenja sadrži

    simbol S , tako da opet po drugi put koristimo produkciju S   → bS . Ovu produkciju smo

    izabrali zato što se riječ  bbca  podudara sa nizom  bbS , uz pretpostavku da je  S    =   ca.

    Time imamo sljedeće izvodenje:

    S   ⇒  bS   ⇒ bbS 

    Desna strana opet sadrži simbol S . Uz pretpostavku da je S   =  a,niz bbca se podudara

    sa nizom bbcS , pa ćemo primijeniti produkciju S   →  cS , te imamo:

    S   ⇒  bS   ⇒ bbS   ⇒  bbcS 

    Riječ bbca se podudara sa nizom  bbcaS , uz pretpostavku da je  S   =  ε, pa nastavljamo

    tako da iskoristimo produkciju S   →  aS , nakon čega imamo sljedeće izvodenje:

    S   ⇒  bS   ⇒ bbS   ⇒ bbcS   ⇒ bbcaS 

    Pošto želimo da naše izvodenje proizvede riječ bbca, na kraju ćemo iskoristiti produk-

    ciju S   →  ε, što će dati izvodenje za riječ bbca:

    S   ⇒ bS   ⇒ bbS   ⇒ bbcS   ⇒ bbcaS   ⇒  bbca

    8.1 Formalna definicija gramatike

    Prethodno smo uveli pojam gramatike na jedan neformalan način tako što smo uveli po-

    trebne pojmove za njenu formalnu definiciju.Naime,uveli smo sljedeća četiri elementa

    koja su potreba za formalnu definiciju pa  ćemo sada dati i njenu formalnu definiciju.

    Neka je sa N  označen skup neterminalnih simbola (varijabli) za koje  ćemo koristiti ve-

    lika slova A, B, C  itd.Zatim,neka je sa  Σ  označen alfabet (skup terminalnih simbola),za

  • 8/19/2019 AFJ Predavanja 2.Parc

    27/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   85

    koje  ćemo koristiti mala slova  a,  b,  c, itd. Takoder, neka simbol S ,  S   ∈   N ,označava

    specijalni neterminalni simbol kojeg ćemo nazivati početni simbol.

    Definicija 1.2. Formalna gramatika G  je četvorka:

    G   = ( N , Σ, P, S )

    gdje je:

    •   N  konačan skup neterminalnih simbola

    •   Σ konačan skup terminalnih znakova,  Σ ∩ N   = ∅

    •   P konačan skup produkcija oblika  α  →  β, gdje vrijedi:

    α ∈  ( N  ∪ Σ)∗ N ( N  ∪ Σ)∗, β ∈  ( N  ∪ Σ)∗,

    te pri  čemu vrijedi da skupovi  N   i  Σ

     nemaju zajedničkih elemenata, tj. vrijedi N   ∩   Σ =   ∅. Primijetimo da niz α  mora sadržavati barem jedan neterminalni

    simbol.

    •   S   početni neterminalni simbol, S   ∈  N 

    Za zadanu gramatiku G   = ( N , Σ, P, S ) definiramo relaciju ⇒G

    nad nizovima iz skupa

    ( N  ∪ Σ)∗. Ako je α  →  β  produkcija iz skupa P, te ako su  γ  i  δ  iz skupa ( N  ∪ Σ)∗, onda

    vrijedi relacija:

    γαδ  ⇒G

    γβδ

    Niz simbola  γβδ se generira direktno iz niza   Γαδ primjenom produkcije  α   →  β. Oz-

    naka G  specificira kojoj gramatici pripada primijenjena produkcija.

    Neka  α1, α2, . . . , αm,pri  čemu je  m   ≥  1, predstavljaju nizove iz skupa ( N   ∪   Σ)∗.

    Nadalje, neka vrijedi sljedeće:

    α1  ⇒G

    α2, α2  ⇒G

    α3, . . . , αm−1  ⇒G

    αm.

    Tada kažemo da gramatika  G  geneerira niz  αm  iz niza  α1,   što zapisujemo na sljedeći

    način:

    α1∗

    ⇒G

    αm

    Dakle, relacijom  ⇒G

    prikazujemo primjenu jedne produkcija koje pripadaju gramatici

    G, dok relacijom∗

    ⇒G

    prikazujemo primjenu nula ili više produkcija koje pripadaju gra-

    matici G. Ako je iz datog kontektsa nedvosmisleno jasno na koju gramatiku se relacije

    odnose, onda ćemo umjesto oznaka

    ⇒G

    i∗

    ⇒G

    koristiti oznake

    ⇒   i∗

    ⇒  .

  • 8/19/2019 AFJ Predavanja 2.Parc

    28/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   86

    Ako gramatika iz niza  α  generira niz β  primjenom i  produkcija, to ćemo zapisivati na

    sljedeći način:

    α i⇒G β

    Dakako, iz konteksta  će uglavnom biti jasno o kojoj gramatici se radi, pa  ćemo tada

    koristiti sljedeći zapis:

    αi

    ⇒  β

    Gramatika G   = ( N , Σ, P, S ) generira jezik  L(G):

     L(G)  =  {w | w  ∈   Σ∗, S ∗

    ⇒G

    w}

    Prema tome, neka riječ w je u jeziku  L(G) koji generira gramatika G  ako za riječ w

    vrijedi:

    1. Riječ w  sadrži isključivo terminalne znakove gramatike.

    2. Riječ w  je moguće generirati iz početnog neterminalnog simbola S .

    8.1.1 Primjeri formalnih gramatika i odgovarajućih jezika

    Da bi dobili što jasniju predodžbu o konceptu formalne gramatike, u nastavku ćemo

    dati nekoliko vrlo jednostavnih primjera za formalnu gramatiku

    Primjer 8.1.  Neka imamo sljedeću gramatiku:

    G1   = ({S }, {a, b}, P, S ),

    gdje su produkcije iz skupa  P  definirane na sljedeći način:

    S   → a

    S   → ab

    S   → abb

    S   → abbb

    Lako zaključujemo da gramatika G1  generira jezik  L1(G1):

     L1(G1)   = {a, ab, abb, abbb}

    Naime, u ovom primjeru se svaku produkciju možemo primijeniti samo u jed-

    nom koraku, jer su već nakon tog prvog koraka s desne strane nalaze nizovi kooji

    ne uključuju simbole iz skupa neterminalnih simbola N .  

    Primjer 8.2.  Neka imamo sljedeću gramatiku:

    G2   = ({S }, {a}, P, S ),

    gdje skup P  sadrži sljedeće produkcije:

    S   →  ε

  • 8/19/2019 AFJ Predavanja 2.Parc

    29/91

  • 8/19/2019 AFJ Predavanja 2.Parc

    30/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   88

    Prema tome, vrijedi abc  ∈  L(G3).

    Na temelju prethodna tri izvodenja zaključujemo da jednom primjenom produkcije

    S   →   aAc, zatim  n  puta (n   =   0, 1, 2, 3, . . .) produkcije   A   →   bA, te na kraju jednomprimjenom produkcije   A   →   ε  generiramo riječ  abnc. Prema tome, zaključujemo da

    gramatika G3  generira jezik  L(G3):

     L(G3)  =  {abnc | n  ∈ N}

    Primjer 8.4.  Neka imamo sljedeću gramatiku:

    G4   = ({S , A, B}, {a, b, c}, P, S ),

    gdje skup P  sadrži sljedeće produkcije:

    S   → aSAB

    S   → aAB

     BA  →  A B

    aA  →  ab

    bA  →  bb

    bB  →  bc

    cB  →  cc

    Prvo razmotrimo izvodenje primjenom produkcija S   → aA B, aA  →  ab  i  bB  →  bc:

    S   ⇒ aAB  ⇒  abB ⇒  abc

    Prema tome, vrijedi abc ∈

     L(G4).Zatim razmotrimo izvodenje primjenom produkcija sljedećim redoslijedom 1-2-3-

    4-5-6-7:

    S   ⇒ aSAB  ⇒  aaABAB  ⇒  aaAABB ⇒  aabABB ⇒  aabbBB  ⇒  aabbcB  ⇒  aabbcc  =  a2b2c2

    Prema tome, vrijedi a2b2c2 ∈  L(G4).

    Na kraju, razmotrimo još i izvodenje primjenom produkcija sljedećim redoslijedom

    1-1-2-3-3-3-4-5-6-6-7-7:

    S   ⇒ aSAB  ⇒  aaS ABAB ⇒  aaaABABAB

    ⇒ aaaAABBAB  ⇒  aaaAABABB  ⇒  aaaAAABBB

    ⇒ aaabAABBB  ⇒  aaabbABBB  ⇒  aaabbbBBB

    ⇒ aaabbbcBB  ⇒  aaabbbccB ⇒  aaabbbccc  =  a3b3c3

    Prema tome, vrijedi a3b3c3 ∈  L(G4).

    Na temelju prethodna tri izvodenja možemo zaključiti da primjenom  n  −  1 puta

    produkcije   S    →   aS AB, a zatim u   n-tom koraku primjenom produkcije   S    →   aAB

    se dobiva niz   an( AB)n. Nakon toga primjenjujemo produkciju  BA   →   AB  da bismo

  • 8/19/2019 AFJ Predavanja 2.Parc

    31/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   89

    zamijenili pozicije varijabli  A  i  B, te na taj način postigli da se sve varijable  A  nalaze

    ispred varijabli B. Prema tome, primjenjujući produkciju  BA  →  A B dovoljan broj puta

    dobiva se niz an An Bn. Nadalje, jednom primijenimo produkciju  aA  →  ab  i dobivamoanbAn−1 Bn, a zatim  n  −  1 puta primjenjujemo produkciju  bA  →  bb, nakon čega ćemo

    dobiti   anbn Bn. Na kraju, jednom primjenjujemo produkciju   bB   →   bc   i   n  −  1 puta

    produkciju cB  →  cc, nakon čega se generira riječ anbncn.

    Prema tome, zaključujemo da gramatika G4  generira jezik  L(G4):

     L(G4)  =  {anbncn | n  ∈ N}

    8.1.2 Gramatika prirodnog jezika i formalna gramatika

    Formalna gramatika ima odredene sličnosti sa gramatikom prirodnih jezika.Ovaj pri-

    mjer upravo ima svrhu da ilustrira odredene sličnosti izmedu gramatike prirodnog je-zika i formalne gramatike.

    Jedno od glavnih obilježja rečenice je mogućnost da se ona može raščlaniti na

    odredene rečenične dijelove. Iako je situacija sa gramatikom prirodnih jezika nešto

    složenija, za potrebe ovog primjera ćemo pretpostaviti da su glavni i samostalni rečenični

    dijelovi subjekt, predikat i objekt. Nadalje, pretpostavit  ćemo da svaki od navedenih

    dijelova može imati odredene dodatke, koji onda tvore subjektni skup, predikatni skup

    i objektni skup.

    Konstruirajmo formalnu gramatiku   G   =   ( N , Σ, P, S ),pri   čemu je početni simbol

    S   =   Reˇ cenica,dok su ostala tri elementa definirana na sljedeći način:

     N   =

     Reˇ cenica

    SubjektniSkup

    PredikatniSkup

    ObjektniSkup

    Subjekt 

    Predikat 

    Objekt 

     Atribut 

    Prilog

    Σ =

    PJEVA ČICE

    PJESMEPJEVAJU

    PI ŠU

    POZNATE

    LIJEPE

    UVIJEK

    PONEKAD

    . (ta čka)

  • 8/19/2019 AFJ Predavanja 2.Parc

    32/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   90

    P  =

    1.    Reˇ cenica → SubjektniSkupPredikatniSkupObjektniSkup.

    2.   SubjektniSkup →  Atribut Subjekt 

    3.   SubjektniSkup → Subjekt 

    4.  PredikatniSkup → PrilogPredikat 

    5.  PredikatniSkup → Predikat 

    6.   ObjektniSkup →  Atribut Objekt 

    7.   ObjektniSkup → Objekt 

    8.   Subjekt  → PJEVA ČICE

    9.   Subjekt  → KNJI ŽEVNICE

    10.   Predikat  → PJEVAJU

    11.   Predikat  → PI ŠU

    12.   Objekt  → PJESME

    13.   Objekt  → KNJIGE

    14.    Atribut  → POZNATE

    15.    Atribut  → LIJEPE

    16.   Prilog → UVIJEK

    17.   Prilog → PONEKAD

    Navedene neterminalne simbole iz skupa  N   smo stavili u zagrade    kako bi smo

    te simbole prikazali kao nedjeljive elemente,te kako bismo ih razlikovali od termi-

    nalnih simbola iz skupa   Σ  koji čine rječnik jezika.Kao što vidimo u skupu   Σ   imamo

    devet terminalnih simbola, uključujući i simbol .  (tačka) koji predstavlja oznaku kraja

    rečenice.Skup P sadrži sedamnaest produkcijskih pravila.Primjenom produkcijskih pra-

    vila grade se rečenice. Pravilo 1 specificira temeljni dio organizacije rečenice.Pravila

    2-7 specificiraju pravila za organizaciju subjekta,predikata i objekta,zajedno sa njiho-

    vim dodacima.Pravila 8-17 odreduju način na koji se neterminalni simboli preslikavaju

    u terminalne simbole iz riječnika odredenog prirodnog jezika.

    U nastavku ćemo dati nekoliko primjera izvodenja rečenica koje pripadaju jeziku

     L(G).Generiranje rečenice ”PJEVAČICE PJEVAJU PJESME.” koja pripada jeziku L(G)

    koja je sastavljena od niza isključivo terminalnih simbola,opisujemo na sljedeći način:

     Reˇ cenica ⇒1

    SubjektniSkupPredikatniS kupObjektniS kup.

    ⇒3

    Subjekt PredikatniS kupObjektniS kup.

    ⇒5

    Subjekt Predikat ObjektniS kup.

    ⇒7

    Subjekt Predikat Ob jekt .

  • 8/19/2019 AFJ Predavanja 2.Parc

    33/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   91

    ⇒8

    PJEVA ČICEPredikat Objekt .

    ⇒10 PJEVA ČICE PJEVAJUOb jekt .

    ⇒12

    PJEVA ČICE PJEVAJU PJESME.

    Generiranje rečenice ”POZNATE KNJIŽEVNICE UVIJEK PIŠU LIJEPE PJE-

    SME.” koja takoder pripada jeziku  L(G) opisujemo na sljedeći način:

     Reˇ cenica ⇒1

    S ubjektniS kupPredikatniS kupOb jektniS kup.

    ⇒2

     Atribut Subjekt PredikatniS kupObjektniS kup.

    ⇒4

     Atribut Subjekt PrilogPredikat ObjektniS kup.

    ⇒6

     Atribut Subjekt PrilogPredikat  Atribut Ob jekt .

    ⇒14 POZNATESubjekt PrilogPredikat  Atribut Ob jekt .

    ⇒9

    POZNATE KNJI ŽEVNICEPrilogPredikat  Atribut Ob jekt .

    ⇒16

    POZNATE KNJI ŽEVNICE UVIJEKPredikat atribut Ob jekt .

    ⇒11

    POZNATE KNJI ŽEVNICE UVIJEK PI ŠU Atribut Ob jekt .

    ⇒15

    POZNATE KNJI ŽEVNICE UVIJEK PI ŠU LIJEPEOb jekt .

    ⇒12

    POZNATE KNJI ŽEVNICE UVIJEK PI ŠU LIJEPE PJESME.

    Opišimo još generiranje rečenice ”POZNATE PJEVAČICE PONEKAD PIŠU KNJIGE.”

    koja takoder pripada jeziku  L(G):

     Reˇ cenica ⇒1

    S ubjektniS kupPredikatniS kupObjektniS kup.

    ⇒2

     Atribut S ubjekt PredikatniS kupObjektniS kup.

    ⇒4

     Atribut S ubjekt PrilogPredikat ObjektniS kup.

    ⇒7

     Atribut S ubjekt PrilogPredikat Ob jekt .

    ⇒14

    POZNATEPrilogPredikat  Atribut Objekt .

    ⇒8

    POZNATE PJEVA ČICEPredikat  Atribut Objekt .

    ⇒17

    POZNATE PJEVA ČICE PONEKAD Atribut Ob jekt .

    ⇒11

    POZNATE PJEVA ČICE PONEKAD PI ŠUOb jekt .

    ⇒13

    POZNATE PJEVA ČICE PONEKAD PI ŠU KNJIGE.

    Na kraju istaknimo da je formalizacija prirodnih jezika izuzetno komplicirana.Dapače,

    mnogi lingvisti problematiziraju uopće ideju formalizacije prirodnih jezika,pri tome

  • 8/19/2019 AFJ Predavanja 2.Parc

    34/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   92

    ističući neke bitne razlike izmedu prirodnih i formalnih jezika. Primjerice, prirodni

     jezik se neprestano mijenja i prilagodava pa se postavlja pitanje koliko se njegovim

    formaliziranjem zapravo zanemaruju dinamičnost i otvorenost prirodnih jezika. Na-dalje prirodni jezici su višeznačni, povezani su s iskustvom i emocijama sugovornika,

    kao i kontestom, pa dio lingvista smatra da se njegovom formalizacijom zapravo gubi

    njegova univerzalnost.

    8.2 Regularna gramatika

    Regularna gramatika omogućava još jedan način za specifikaciju regularnih jezika.

    8.2.1 Desno-linearna i lijevo-linearna gramatika

    Definicija 8.1.   Za gramatiku  G   =   ( N , Σ, P, S ) kažemo da je  desno-linerna  ako sve

    produkcije iz skupa  P  imaju sljedeći oblik:

     A  →  wB,

     A  →  w,

    gdje je   A, B   ∈   N , a  w   ∈   Σ∗. S druge strane, za gramatiku  G   kažemo da je   lijevo-

    linearna ako sve produkcije iz skupa  P  imaju sljedeći oblik:

     A  →  Bw,

     A  →  w,

    Za gramatiku koja je desno-linearna ili lijevo-linearna kažemo da je regularna grama-

    tika.  

    Primijetimo da se u produkcijama regularne gramatike neterminalni simbol mo že

    pojaviti s desne strane najviše jednom. Osim toga, neterminalni simboli na desnoj

    strani produkcija regularne gramatike moraju biti u svim produkcijama krajnji lijevi

    simboli, ili pak u svim produkcijama moraju biti krajnji desni simboli.

    Primjer 8.5.   Gramatika

    G1   = ({S }, {a, b}, P1, S ),

    gdje je skup produkcija P1  definiran na sljedeći način:

    S   → abS   | a

     je desno-linearna gramatika.

    S druge strane, gramatika:

    G2   = ({S , A, B}, {a, b}, P2, S )

    gdje je skup produkcija P2  definiran na sljedeći način:

  • 8/19/2019 AFJ Predavanja 2.Parc

    35/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   93

    S   →  Aab,

     A  →  Aab  |  B,

     B →  a,

     je lijevo-linearna gramatika. Dakako, gramatike G1  i  G2  su regularne gramatike.

    Razmotrimo npr. sljedeći postupak generiranja riječi ababa na temelju gramatike G1:

    S   ⇒ abS   ⇒ ababS   ⇒ ababa   (8.1)

    Lako zaključujemo da je je jezik  L(G1) definiran regularnim izrazom r 1:

    r 1   = (ab)∗a.

    S druge strane, razmotrimo npr. postupak generiranja riječi  aababab  na temelju gra-

    matike G2:

    S   ⇒  Aab  ⇒  Aabab ⇒  Aababab  ⇒  Bababab ⇒  aababab

    Jezik  L(G2) je definiran regularnim izrazom r 2:

    r 2   = aab(ab)∗.

    Primjer 8.6.   Gramatika

    G   = ({S , A, B}, {a, b}, P, S ),

    gdje je skup produkcija P  definiran na sljedeći način:

    S   →  A,

     A  →  aB | ε,

     B →  Ab,

    nije regularna gramatika. Naime, iako sve produkcije imaju desno-linearni ili lijevo-

    linearni oblik, ipak gramatika G  nije niti desno-linearna niti lijevo-linearna gramatika,

    pa prema tome gramatika G   nije regularna gramatika. Gramatike kod kojih se neter-

    minalni simbol može pojaviti s dese strane produkcije najviše jednom, bez obzira na

    poziciju na kojoj se neterminalni simbol pojavljuje, nazivamo linearnom gramatikom.

    Gramatika G  je upravo primjer linearne gramatike. Primijetimo da je svaka regularna

    gramatika istovremeno i linerana gramatika. S druge strane, sve linearne gramatike

    nisu istovremeno i regularne gramatike.  

  • 8/19/2019 AFJ Predavanja 2.Parc

    36/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   94

    8.3 Ekvivalentnost desno-linearne gramatike i regular-

    nih jezika8.3.1 Konstrukcija NKA za zadanu desno-linearnu gramatiku

    Teorem 8.1.  Neka je gramatika G   =   ( N , Σ, P, S )   desno-linearna gramatika. Tada je

     L(G) regularan jezik.

     Dokaz.  Pretpostavimo da je skup neterminalnih simbola N   = { A0, A1, A2 . . .}, pri čemu

     je S   =  A0. Nadalje, pretpostavimo da su produkcije sljedećeg oblika:

     A0  →  v1 Ai

     Ai  →  v2 A j

    . . .

     An  →  vl

    . . .

    Ako je w neka riječ iz jezika L(G), tada zbog oblika produkcija iz skupa P, postupak 

    generiranja riječi w  mora imati sljedeći oblik:

     A0  ⇒  v1 Ai   (8.2)

    ⇒ v1v2 A j   (8.3)

    ∗⇒ v1v2 . . . vk  Ak    (8.4)

    ⇒ v1v2 . . . vk vl   = w   (8.5)

    Konstruirajmo NKA koji simulira gore prikazani postupak izvodenja. Početno sta-

    nje NKA je označeno kao  A0. Nadalje, za svaki neterminalni simbol  A i  uvedimo ne-privatljivo stanje Ai. NKA konstruiramo tako da za produkciju oblika:

     Ai  →  a1a2 . . . am A j,

    definiramo funkciju prijelaza   δ   tako da omogućimo prijelaz iz stanja   Ai  u stanje   A jčitanjem niza simbola  a1a2 . . . am. Odnosno, funkcija prijelaza  δ   treba biti definirana

    tako da za njeno proširenje δ∗ vrijedi:

    δ∗( Ai, a1a2 . . . am)  =  A  j.

    Nadalje, za svaku produkciju oblika:

     Ai   → a1a2 . . . am,

    NKA konstruiramo tako da vrijedi:

    δ∗( Ai, a1a2 . . . am)  =  A  f ,

    gdje je   A f   neko prihvatljivo stanje. Način konstrukcije NKA na prethodno opisani

    način je prikazan na slici 9.1.

  • 8/19/2019 AFJ Predavanja 2.Parc

    37/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   95

     Ai   . . .   A ja1   a2   am

    (a)  Prikaz produkcije Ai  →  a1a2 . . . am A j

     Ai   . . .   A f a1   a2   am

    (b) Prikaz produkcije Ai   → a1a2 . . . am

    Slika 8.1:  DKA koji prihvaćaju jezike  L1  i  L2

    Za zadanu desno-linearnu gramatiku konstruiramo NKA objedinjujući pojedine di-

     jelove koji su izgradeni na prethodno opisani način.

    Pretpostavimo sada da vrijedi  w  ∈  L(G), pri čemu gramatika G  generira riječ w  na

    način kako je to opisano izrazom 9.2. Tada NKA sadrži putanju od  A0  do  Ai  koja je

    označena sa v1, zatim putanju od  Ai  do  A j koja je označena sa v2, itd. Zaključujemo da

    tada vrijedi:

     A f   ∈ δ∗( A0, w),

    pa NKA M  prihvaća riječ w.

    S druge strane, pretpostavimo da automat   M   prihvaća riječ   w. Imajući na umu

    način na koji je konstruiran NKA  M , za prihvaćanje riječi w  automat mora proći kroz

    niz stanja A0, Ai, . . . do stanja A f , koristeći putanje označene sa v1, v2, . . .. Prema tome,

    riječ w  mora imati sljedeći oblik:

    w  =  v1v2 · · · vk vl.

    Drugim riječima, moguće je sljedeće generiranje riječi w:

     A0  ⇒  v1 Ai

    ⇒  v1v2V  j∗

    ⇒  v1v2 · · · vk V k 

    ⇒  v1v2 · · · vk vl

    Prema tome, vrijedi w  ∈  L(G), te je time teorem dokazan.  

    Primjer 8.7.  U ovom primjeru ćemo konstruirati NKA koji prihvaća jezik  L(G) kojeg

    generira gramatika

    G   = ({ A0, A1}, {a, b}, P, A0),

    gdje skup P  sadrži sljedeće produkcije:

     A0  →  aA1

     A1  →  babA0 |  b.

    Na temelju prethodno pisanog načina konstrukcije NKA imamo sljedeće:

  • 8/19/2019 AFJ Predavanja 2.Parc

    38/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   96

    •  Na temelju produkcije A0  →  aA1  omogućujemo prijelaz iz stanja  A0  u stanje A1čitanjem simbola a.

    •  Na temelju produkcije  A1   →  babA0  omogućujemo prijelaz iz stanja  A1  u stanje

     A0  čitanjem niza simbola bab.

    •  Na temelju produkcije  A1   → b  omogućujemo prijelaz iz stanja  A1  u prihvatljivo

    stanje A f   čitanjem simbola b.

    Objedinjavanjem gore prikazanih elemenata konstrukcije dobijamo NKA   M   koji je

    prikazan na slici 9.4. Jezik kojeg generira gramatika G, odnosno jezik kojeg prihvaća

    NKA  M , opisan je regularnim izrazom:

    (abab)∗ab.

     A0   A1   A f a

    b b

    a

    b

    Slika 8.2:  Konstruirani NKA za zadanu gramatiku  G

    8.3.2 Konstrukcija desno-linearne gramatike za zadani DKA

    Za svaki zadani regularni jezik  L  može se konstruirati desno-linearna gramatika koja

    generira taj jezik. Naime, za svaki regularni jezik postoji DKA   M  koji prihvaća je-

    zik   L, pa  ćemo pokazati da se za svaki zadani DKA   M  može konstruirati gramatika

    G  koja generira jezik  L   =   L(G)   =   L( M ). Pri opisu načina konstrukcije gramatike  G

    za zadani DKA ćemo koristiti sličan pristup kao i pri opisu konstrukcije DKA za za-

    danu gramatiku u teoremu 9.1. Naime, opisani pristup u tom teoremu ćemo zapravo

    samo preokrenuti u suprotni smjer. Stanja DKA će postati neterminalni simboli gra-

    matike, dok  će ulazni simboli čijim čitanje se primjenjuj odgovarajući prijelazi postati

    terminalni simboli u produkcijama.

    Teorem 8.2.  Neka DKA M   = (Q, Σ, δ,q0, F ) prihva´ ca neki regularni jezik L( M ). Tada

     postoji desno-linearna gramatika G   = ( N , Σ, P, S ) koja generira jezik L(G)  =  L( M ).

     Dokaz.  Pretpostavimo da je skup stanja  Q  DKA  M  sljedeći

    Q  =  {q0, q1, . . . ,qn}.

    Nadalje, pretpostavimo da je alfabet  Σ  DKA  M  definiran na sljedeći način:

    Σ =  {a1, a2, . . . ,am}.

    Konstruirajmo desno-linearnu gramatiku G   = ( N , Σ, P, S ) na sljedeći način:

  • 8/19/2019 AFJ Predavanja 2.Parc

    39/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   97

    •  Skup neterminalnih stanja  N   je:

     N   = {q0, q1, . . . ,qn},

    •  Za svaki prijelaz DKA M  oblika:

    δ(qi, a j)  =  qk ,

    u skup produkcija  P  dodajemo produkciju:

    qi  →  a  jqk .

    Osim toga, ako vrijedi  qk   ∈   F , tada u skup produkcija  P  dodajemo i produkcije

    oblika:

    qk  →  ε.

    •   početni simbol S   =  q0.

    Prvo ćemo pokazati da gramatika G  konstruirana na prethodno opisani način može

    generirati svaku riječ iz jezika  L( M ). Razmotrimo riječ w  ∈  L( M ) sljedećeg oblika:

    w  =  aia j · · · ak al.

    DKA  M  koji prihvaća riječ w  mora primijeniti sljedeće prijelaze:

    δ(q0, ai)  =  q p,

    δ(q p, ai)  =  qr ,

    ...

    δ(qs, ak )  =  qt 

    δ(qt , al)  =  q  f   ∈  F .

    Imajući na umu način na koji je konstruirana gramatika  G , imamo po jednu pro-

    dukciju za svaki gore prikazani prijelaz. Prema tome, gramatika  G omogućuje sljedeće

    izvodenje riječi w:

    q0   ⇒ aiq p   (8.6)

    ⇒ aia jqr    (8.7)

    ⇒ aia j · · · akql   (8.8)

    ⇒ aia j · · · ak alq f    (8.9)

    ⇒ aia j · · · ak al,   (8.10)

    pa zaključujemo da vrijedi w  ∈  L(G).

  • 8/19/2019 AFJ Predavanja 2.Parc

    40/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   98

    S druge strane, ako vrijedi   w   ∈   L(G), tada generiranje riječi ima oblik 9.6,   što

    zapravo podrazumijeva da vrijedi:

    δ∗(q0, aia j · · · ak al)  =  q f .

    Dakle, na temelju pretpostavke da vrijedi   w   ∈   L(G), dobili smo da takoder vrijedi

    w ∈  L( M ), te je time teorem dokazan.

    Primjer 8.8.  Neka je zadan DKA  M :

     M   = ({q0, q1, q2}, {a, b}, δ,q0, {q0, q2}),

    gdje je funkcija prijelaza δ  zadana sljedećom tabelom:

    δ   a b

    q0   q1   q2

    q1   q2   q1

    q2   q0   q1

    Tablica 8.1:  Funkcija prijelaza za DKA  M 

    Dijagram stanja DKA  M  je prikazan na slici 9.3.

    q0   q1   q2a

    b

    a

    b

    a

    b

    Slika 8.3:  Dijagram stanja DKA za koji konstruiramo gramatiku  G

    Gramatiku G  konstruiramo na sljedeći način:

    •  Skup neterminalnih simbola gramatike  N  je jednak skup stanja DKA  M , tj.  N   =

    {q0, q1, q2}

    •  Skup terminalnih simbola σ  je jednak ulaznom alfabetu DKA  M 

    •  Produkcije iz skupa  P  se grade na temelju prijelata DKA  M . Naprimjer, gradi seprodukcija q0  →  aq1, jer DKA M  prelazi iz stanja q0 u stanje q1  čitanjem simbola

    a. Nadalje, gradi se produkcija  q0  →  bq2, jer DKA M  prelazi iz stanja q0 u stanje

    q2  čitanjem simbola  b. Opisani postupak izgradnje produkcija se nastavlja i za

    sve ostale prijelaze DKA  M . Budući da su stanja q0 i  q2 prihvatljiva stanja, grade

    se i produkcije q0  →  ε  i  q2  →  ε.

  • 8/19/2019 AFJ Predavanja 2.Parc

    41/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   99

    Na temelju prethodno opisanog postupka konstruiramo gramatiku  G:

    G   = ({q0, q1, q2}, {a, b}, P, q0),

    gdje skup P  sadrži sljedeće produkcije:

    q0  →  aq1

    q0  →  bq2

    q1  →  aq2

    q1  →  bq1

    q2  →  aq0

    q2  →  bq1

    q0  →  ε

    q2  →  ε

    Naprimjer, DKA M  prihvaća riječ abbba jer vrijedi:

    δ(q0, abbba)  =  q2,

    gdje je  q2  prihvatljivo stanje. S druge strane, konstruirana gramatika G  generira riječ

    abbba na sljedeći način:

    q0  ⇒  aq1

    ⇒  abq1

    ⇒  abbq1

    ⇒  abbbq1

    ⇒  abbbaq2

    ⇒  abbbaε  =  abbba

    8.4 Ekvivalentnost lijevo-linearne gramatike i regular-

    nih jezika

    Prethodno prikazani teoremi uspostavlaju vezu izmedu regularnih jezika i desno-linearnih

    gramatika. Slična veza se može uspostaviti i izmedu regularnih jezika i lijevo-linearnihgramatika, pa se na taj način zapravo može pokazati potpuna ekvivalentnost izmedu

    regularnih jezika i regularnih gramatika.

  • 8/19/2019 AFJ Predavanja 2.Parc

    42/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   100

    8.4.1 Konstrukcija ε-NKA za zadanu lijevo-linearnu gramatiku

    Teorem 8.3.   Za svaki jezik L(G)  zadan nekom lijevo-linearnom gramatikom G  =

    (Σ, N , P, S ) postoji neki ε-NKA M koji prihva´ ca jezik L( M )   =  L(G). Drugim rijeˇ cima,

    svaki jezik kojeg generira lijevo-linearna gramatika G je regularan jezik.

     Dokaz.   Neka je zadana lijevo-linearna gramatika  G   =   (Σ, N , P, S ). Konstruiramo  ε-

    NKA  M  koji prihvaća jezik  L( M )  =  L(G) na sljedeći način:

    1. Prvo konstruiramo desno-linearnu gramatiku  G1   =   (Σ, N , P1, S ), gdje se skup

    produkcija P1  dobija tako da se preurede produkcije  P   gramatike G  na sljedeći

    način:

    •   Produkcije lijevo-linearne gramatike G  oblika

     A  →  Bw

    se preurede u produkcije oblika

     A  →  w R B.

    •   Produkcije lijevo-linearne gramatike G  oblika

     A  →  w

    se preurede u produkcije oblika

     A  →  w R.

    Ovako konstruirana desno-linearna gramatika G 1  generira reverzne riječi iz je-

    zika L(G), tj. vrijedi: L(G1)  =  L(G)

     R (8.11)

    2. Na temelju konstruirane desno-linearne gramatike  G1   konstruiramo NKA   M 1koji prihvaća jezik:

     L( M 1)  =  L(G1).   (8.12)

    3. Na temelju NKA M 1   konstruiramo ε-NKA M  koji prihvaća jezik:

     L( M )  =  L( M 1) R,   (8.13)

    na sljedeći način:

    •  Preuredujemo NKA  M  tako da ima samo jedno prihvatljivo stanje. Naime,

    ako NKA M  ima više prihvatljivih stanja, tada se dodaje novo i jedinstveno

    prihvatljivo stanje, kao i  ε-prijelazi iz svih prijašnjih prihvatljivih stanja u

    novo prihvatljivo stanje. Stara prihvatljiva stanja više nisu prihvatljiva, pa

    ostaje samo jedno novo prihvatljivo stanje koje smo dodali.

    •  Za početno stanje ε-NKA M  se uzima prihvatljivo preuredenog NKA M .

  • 8/19/2019 AFJ Predavanja 2.Parc

    43/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   101

    •   Za prihvatljivo stanje   ε-NKA   M  se uzima početno stanje preuredenog

    NKA  M 

    •   Funkcija prijelaza NKA   M  se definira tako da se na dijagramu stanja

    preuredenog NKA M  obrne smjer usmjerenih grana.

    Iz izraza 9.11,9.12 i 9.13 imamo:

     L( M )  =  L( M 1) R

    =  L(G1) R

    = ( L(G) R)

    =  L(G)

    Dakle, konstruirani ε-NKA M  prihvaća jezik  L(G).  

    Primjer 8.9.  Neka je zadana lijevo-linearna gramatika:

    G   = ({S }, {a, b}, P, S ),

    gdje skup P  sadrži sljedeće produkcije:

    S   →  S baa | b

    Gramatika G  generira jezik opisan regularnim izrazom  b(baa)∗

    Konstruiramo  ε-NKA za zadanu gramatiku G  na sljedeći način:

    1. Prvo izgradujemo desno-linearnu gramatiku:

    G1   = ({S }, {a, b}, P1, S ),

    gdje skup P1  sadrži sljedeće produkcije:

    S   → aabS   | b

    Skup   P1   smo dobili odgovarajućim preuredivanjem produkcija iz skupa   P   u

    skladu s postupkom opisanim u teoremu 9.3. Gramatika G1 generira jezik opisan

    regularnim izrazom (aab)∗b.

    2. Na temelju izgradene desno-linearne gramatike G1  konstruiramo NKA  M 1   koji

    prihvaća jezik  L( M 1)   =  L(G1). Konstruirani NKA M 1  je prikazan na slici 9.4a.

    3. Konstruiramo NKA   M  koji prihvaća jezik opisan regularnim izrazom  b(baa)∗,

    tako da obrnemo smjer usmjerenih grana na dijagramu stanja NKA   M 1  (slika

    9.4a), te zamijenimo ulogu početnog i prihvatljivog stanja. Konstruirani NKA M  je prikazan na slici 9.4b.

  • 8/19/2019 AFJ Predavanja 2.Parc

    44/91

  • 8/19/2019 AFJ Predavanja 2.Parc

    45/91

    PREDAVANJE 8. FORMALNA GRAMATIKA   103

    Ovako konstruirana lijevo-linearna gramatika G generira reverzne riječi iz jezika

     L(G1), tj. vrijedi:

     L(G)  =  L(G1) R (8.15)

    Uzimajući u obzir 9.14 i 9.15 imamo:

     L(G)  =  L(G1) R

    =  L( M 1) R

    = ( L( M ) R) R

    =  L( M )

    Kombinirajući teoreme 9.1, 9.2, 9.3 i 9.4 dobijamo teorem 9.5 kojm izražavamo

    ekvivalentnost   izmedu regularnih jezika,  lijevo-linearne gramatike, desno-linearne

    gramatike i  regularne gramatike.

    Teorem 8.5.   Vrijede sljede´ ce tvrdnje:

    •   Jezik L je r