ideja: u pocetnom stanju [latex]q_0[/latex] stog je prazan, mozemo citati a, b ili c - ako procitamo c, samo citamo sljedeci znak; ako procitamo a, zapisemo a na stog i prelazimo u stanje [latex]q_1[/latex]; ako procitamo b stavljamo 2 b na stog i prelazimo u stanje [latex]q_3[/latex]. u stanju [latex]q_1[/latex] a-ove stavljamo na stog, c-ovi nista ne mijenjaju, a b-ovi skidaju dva a sa stoga (ako ima manje a-ova na stogu, zapisuje se toliko b-ova koliko ih fali i ode u stanje [latex]q_3[/latex]). u stanju [latex]q_3[/latex] ako citamo b, dva b idu na stog, ako citamo c, nista se ne mijenja, a ako citamo a skidamo b sa stoga - ako se b ne moze skinuti, pisemo a na stog i prelazimo u stanje [latex]q_1[/latex]. rijec se prihvaca praznim stogom ako se [latex]\varepsilon[/latex] procita u stanju [latex]q_1[/latex] ili [latex]q_3[/latex]
oblik zapisa je <stanje, znak na ulazu, znak na vrhu stoga, stanje u koje se ide, sto ide na stog>, pisala sam jos i komentare just in case..
/*citanje prvog znaka, za procitani b trebamo upisati 2 b na stog pa nam treba dodatno stanje, ovdje [latex]q_2[/latex]*/
[latex]
<q_0, a, \varepsilon, q_1, a> \\
<q_0, b, \varepsilon, q_2, b>, \; <q_2, \varepsilon, b, q_3, b> \\
<q_0, c, \varepsilon, q_0, \varepsilon> \\
[/latex]
gdje je smisao [latex]<q_2, \varepsilon, b, q_3, b>[/latex] - u stanju [latex]q_2[/latex] smo, ne citamo nista, na stogu je b; prelazimo u stanje [latex]q_3[/latex] i pisemo b na stog
/*stanje [latex]q_1[/latex] - stavljamo a-ove na stog, s b-ovima skidamo po dva a, dakle, stog moze u nekom trenu biti prazan pa zato za svaki procitani znak treba gledati obje mogucnosti - da li je stog prazan ili je na njemu a*/
[latex]
<q_1, a, a, q_1, a> \\
<q_1, a, \varepsilon, q_1, a> \\
<q_1, c, a, q_1, \text{ne diramo stog}> \\
<q_1, c, \varepsilon, q_1, \varepsilon> \\
(*) <q_1, b, a, q_4, \varepsilon>, \; <q_4, \varepsilon, a, q_1, \varepsilon>, \; <q_4, \varepsilon, \varepsilon, q_3, b> \\
<q_1, b, \varepsilon, q_2, b>
[/latex]
smisao [latex](*)[/latex] je - skinemo jedan a sa stoga ako mozemo (ako ne - vidi sljedeci red) i odemo u stanje [latex]q_4[/latex] gdje ili skinemo jos jedan a, ili ako to ne mozemo, zapisemo b na stog i promijenimo stanje u [latex]q_3[/latex] jer su sad na stogu b-ovi
/*stanje [latex]q_3[/latex] - citanje a ubije b na stogu ako moze, citanje b stavlja 2 b na stog - opet se moze dogoditi da je stog u nekom trenu prazan pa i to treba uzeti u obzir*/
[latex]
<q_3, b, b, q_2, b> \\
<q_3, b, \varepsilon, q_2, b> \\
<q_3, c, b, q_3, \text{ne diramo stog}> \\
<q_3, c, \varepsilon, q_3, \varepsilon> \\
<q_3, a, b, q_3, \varepsilon> \\
<q_3, a, \varepsilon, q_1, a>
[/latex]
/*prihvacanje rijeci*/
[latex]
<q_1, \varepsilon, \varepsilon, q_1, \varepsilon> \\
<q_3, \varepsilon, \varepsilon, q_3, \varepsilon> \\
[/latex]
---
oznake su malo zeznute - za brisanje sa stoga koristimo [latex]<q, x, y, r, \varepsilon> [/latex], a treba nam nesto slicno za situaciju kad se stog ne dira (citanje c-ova) - ako cu opet kao zadnju komponentu pisati [latex]\varepsilon[/latex] u smislu da nista nejde na stog, ispada da zapravo nesto brisem - zato sam radije pisala rijecima (za slucaj da je stog prazan je svejedno)
nadam se da je razumljivo i da nema neke greske ;)
ideja: u pocetnom stanju stog je prazan, mozemo citati a, b ili c - ako procitamo c, samo citamo sljedeci znak; ako procitamo a, zapisemo a na stog i prelazimo u stanje ; ako procitamo b stavljamo 2 b na stog i prelazimo u stanje . u stanju a-ove stavljamo na stog, c-ovi nista ne mijenjaju, a b-ovi skidaju dva a sa stoga (ako ima manje a-ova na stogu, zapisuje se toliko b-ova koliko ih fali i ode u stanje ). u stanju ako citamo b, dva b idu na stog, ako citamo c, nista se ne mijenja, a ako citamo a skidamo b sa stoga - ako se b ne moze skinuti, pisemo a na stog i prelazimo u stanje . rijec se prihvaca praznim stogom ako se procita u stanju ili
oblik zapisa je <stanje, znak na ulazu, znak na vrhu stoga, stanje u koje se ide, sto ide na stog>, pisala sam jos i komentare just in case..
/*citanje prvog znaka, za procitani b trebamo upisati 2 b na stog pa nam treba dodatno stanje, ovdje */
gdje je smisao - u stanju smo, ne citamo nista, na stogu je b; prelazimo u stanje i pisemo b na stog
/*stanje - stavljamo a-ove na stog, s b-ovima skidamo po dva a, dakle, stog moze u nekom trenu biti prazan pa zato za svaki procitani znak treba gledati obje mogucnosti - da li je stog prazan ili je na njemu a*/
smisao je - skinemo jedan a sa stoga ako mozemo (ako ne - vidi sljedeci red) i odemo u stanje gdje ili skinemo jos jedan a, ili ako to ne mozemo, zapisemo b na stog i promijenimo stanje u jer su sad na stogu b-ovi
/*stanje - citanje a ubije b na stogu ako moze, citanje b stavlja 2 b na stog - opet se moze dogoditi da je stog u nekom trenu prazan pa i to treba uzeti u obzir*/
/*prihvacanje rijeci*/
—
oznake su malo zeznute - za brisanje sa stoga koristimo , a treba nam nesto slicno za situaciju kad se stog ne dira (citanje c-ova) - ako cu opet kao zadnju komponentu pisati u smislu da nista nejde na stog, ispada da zapravo nesto brisem - zato sam radije pisala rijecima (za slucaj da je stog prazan je svejedno)
nadam se da je razumljivo i da nema neke greske
_________________ Am I so different from you
Now does it scare you that I'm able to discern
What to love and what to burn..
Don't judge what you don't understand..
// Disturbed: Fear
|