See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Automat ze stosem - Wikipedia, wolna encyklopedia

Automat ze stosem

Z Wikipedii

W teorii obliczeń, automat ze stosem (PDA, ang. pushdown automaton) to automat skończony, który może dodatkowo korzystać ze stosu do przechowywania danych. Domyślnie przyjmuje się, że ten automat jest automatem niedeterministycznym. Takie automaty są równoważne pod względem siły wyrazu gramatykom bezkontekstowym, rozpoznając języki bezkontekstowe. Jeśli nie dopuszcza się możliwości niedeterminizmu, otrzymuje się słabszy model automatu nazywany deterministycznym automatem ze stosem.

Wyposażenie automatu skończonego w dwa stosy zamiast jednego, daje model obliczeń równoważny maszynie Turinga.

[edytuj] Definicja

Automat ze stosem definiuje się jako siódemkę (Q,\mathcal A,\Sigma,\delta,q_0,\sigma_0,F), gdzie:

  • Q jest skończonym zbiorem stanów
  • \mathcal A jest skończonym alfabetem symboli wejściowych
  • Σ jest skończonym alfabetem symboli stosowych
  • q_0\in Q jest stanem początkowym
  • σ0 jest (opcjonalnym) początkowym elementem na stosie
  • F \subseteq Q jest zbiorem stanów końcowych
  • \delta\subseteq (Q \times ( \mathcal A \cup \left \{ \epsilon \right \} ) \times \Sigma) \times ( Q \times \Sigma ^{*} ) jest skończonym zbiorem dopuszczalnych przejść

W literaturze spotyka się dwa kryteria akceptacji wejściowego ciągu: akceptacja przez pusty stos i akceptacja przez stan końcowy. Łatwo pokazać, że te dwa kryteria są równoważne: stan końcowy może w pętli zawsze czyścić stos do końca, natomiast automat może łatwo wykryć pusty stos i wejść w stan końcowy gdy odczyta unikalny symbol umieszczany tam wyłącznie w stanie początkowym.

[edytuj] Interpretacja

Automat ze stosem możemy interpretować jako graf skierowany o wierzchołkach ze zbioru Q, a krawędziach zdefiniowanych przez relację przejścia δ. Krawędzie są etykietowane przez litery z alfabetu \mathcal A. Aby sprawdzić, czy pewne słowo s należy do języka akceptowanego przez ten automat należy przeprowadzić obliczenie na tym automacie. W tym celu szukamy ścieżki, która zaczyna się w stanie początkowym q0 z symbolem σ0 na stosie, kończy w którymś ze stanów końcowych F z pustym stosem oraz litery, którymi etykietowane są krawędzie, po których przechodzimy, tworzą słowo s. Po automacie przechodzimy zgodnie z relacją przejścia. Interpretacja relacji przejścia jest następująca: \langle p,a,\sigma,q,U\rangle\in\delta, gdzie U jest ciągiem elementów z alfabetu Σ oznacza, że ze stanu p można przejść po krawędzi etykietowanej literą a do stanu q przy okazji na stosie wykonując operacje: najpierw zdjęcia ze stosu litery σ (ruch jest dozwolony jeśli na górze stosu jest właśnie taka litera), a potem wrzucenia na stos po kolei liter słowa U.

[edytuj] Uogólniony automat ze stosem (GPDA, ang. Generalized Pushdown Automaton)

Uogólniony automat ze stosem jest rozszerzeniem automatu ze stosem o możliwość zapisu i usuwania ciągów ze stosu w jednym kroku.

Formalnie, uogólniony automat ze stosem jest definiowany jako szóstka M=(Q,\  \Sigma,\  \Gamma,\  \delta, \ q_{0}, \ F)

gdzie Q, \Sigma\,, \Gamma\,, q0 i F są zdefiniowane tak samo jak dla automatów ze stosem.
\,\delta: Q \times  \Sigma_{\epsilon}  \times \Gamma^{*} \longrightarrow P( Q \times \Gamma^{*} ) jest funkcją przejścia.

Reguły obliczeń dla GPDA są takie same jak dla PDA, z wyjątkiem tego że ai+1's i bi+1's są ciągami a nie symbolami.

GPDA i PDA są równoważne: dla każdego języka rozpoznawanego przez GPDA istnieje PDA rozpoznający ten język, i odwrotnie.

Dowód równoważności powyższych klas automatów można przeprowadzić używając następującej symulacji:

Niech δ(q1, w, x1x2...xm) \longrightarrow (q2, y1y2...yn) będzie przejściem GPDA

gdzie q1, q2 \in Q, w \in\Sigma_{\epsilon}\,, x1x2...xm \in\Gamma^{*}, m\geq0, y1y2...yn \in\Gamma^{*}, n\geq0.

Skonstruujmy następujące przejścia dla PDA:

δ'(q1, w, x1) \longrightarrow (p1, ε)
δ'(p1, ε, x2) \longrightarrow (p2, ε)
\vdots
δ'(pm-1, ε, xm) \longrightarrow (pm, ε)
δ'(pm, ε, ε ) \longrightarrow (pm+1, yn)
δ'(pm+1, ε, ε ) \longrightarrow (pm+2, yn-1)
\vdots
δ'(pm+n-1, ε, ε ) \longrightarrow (q2, y1)


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -