اتوماتون پشته‌ای

**اتوماتون پشته‌ای** صوری‌سازی این مفهوم شهودی، یک تعریف دقیق از آتاماتون پشته‌ای بدست می‌دهد.
تعریف:
یک پذیرندهٔ پشته‌ای غیر قطعی(NPDA) به شکل ( M=(Q،∑، Γ، ∂،qo،z،F

نمایش داده می‌شود، بطوری‌که در آن
* Qیک مجموعه متناهی از حالت‌های داخلی واحد کنترل است،
* ∑الفبای ورودی است،
* Γ یک مجموعه متناهی از نشانه‌ها که الفبای پشته نامیده می‌شود،
* (∂:Q×(∑υ{⋋})×Γ تابع انتقال،
* Q0€Q حالت اولیه واحد کنترل است،
* z€Γ≤Qنشانهٔ شروع پشته است
شکل پیچیده دامنه و برد تابع انتقال نیاز به بررسی بیشتری دارد.آرگومان ∂ حالت‌های فعلی واحد کنترل، نشانه ورودی فعلی و نشانهٔ بالای پشته است.نتیجه یک مجموعه از زوج‌های (q،x) می‌باشد که در آن q حالت بعدی در واحد کنترل است.رشتهٔ x نیز به جای نشانه‌ای که اکنون بر روی پشته است قرار می‌گیرد.به خاطر داشته باشیم که دومین آرگومان∂ ممکن است برابر با⋋ باشد؛ بنابراین حرکتی که هیچ نشانه‌ای را از ورودی مصرف نمی‌کند امکان‌پذیر است.
به چنین حرکتی، یک انتقال -⋋ گفته می‌شود.همچنین ∂ طوری تعریف شده‌است که به نشانهٔ موجود بر روی پشته نیاز دارد. اگر پشته خالی باشد هیچ حرکتی ممکن نیست.بالاخره اینکه، برد تابع انتقال یابد باید یک زیرمجموعه محدود باشد زیرا Q×Γ نامتناهی بوده و بنابراین دارای تعداد نامتناهای زیرمجموعه است. در حالیکه یک npda ممکن است. انتخاب‌های زیادی برای حرکت داشته باشد، این انتخاب‌ها باید به یک مجموعه متناهی از حالت‌ها محدود باشد.
فرض کنید که مجموعهٔ قانون‌های انتقال یک npdaشامل 
∂(q1،a،b)={(q2،cd)،(q3،⋋)
باشد . اگر در یک لحظهٔ مشخص، واحد کنترل در حالت q1، نشانه ورودی برابر با a و نشانه موجود در بالای پشته نیز برابر با b باشد، یکی از دو مورد زیر اتقاف می افتد:
1)واحد کنترل به حالت q2 می‌رودو رشتهٔ cd جایگزین نشانهٔ بالای پشته می‌شود.
2)واحد کنترل به حالت q3 می‌شود و نشانهٔ b نیز از بالای پشته حذف می‌شود.
در این روش نشانه گذاری، اضافه کردن یک رشته به پشته، به صورت نشانه به نشانه و از انتهای راست آن رشته انجام می‌شود.
## عملکرد
چپ|قاب|نمودار اتومات پشته ای

اتومات پشته‌ای با ماشین‌های حالات متناهی در دو چیز متفاوت اند:

 1-آن‌ها می‌توانند از قسمت بالا پشته استفاده کنند

که کدان انتقال صورت گیرد.
 2-آن‌ها می‌توانند پشته را به عنوان بخشی از انجام

انتقال دستکاری کنند.

اتوماتون پشته‌ای انتقال را انتخاب می‌کند که با نمایه‌سازی یک جدول توسط سیگنال ورودی، وضعیت فعلی و نماد در بالای پشته است.این به این معنا است که این سه پارامتر مسیر انتقال را انتخاب می‌کنند.ماشین‌های وضیعت محدود تنها به سیگنال‌های ورودی وحالت حاضر نگاه می‌کنند.اتومات پشته ای, پشته‌ای را به عنوان پارامتری برای انتخاب اضافه می‌کنند.

انوماتون پشته‌ای می‌تواند بخشی از پشته را برای انتقال دستکاری کنند.ماشین‌های وضیعت محدود حالت جدیدی را که نتیجه انتقال است را انتخاب می‌کند.دستکاری‌ها یا می‌توانند به صورت وارد یا خارج کردن نماد خاصی از پشته باشد.دستکاری شدن یا نشدن توسط جدول انتقال معلوم می‌شود.

با هم شدن:با توجه به سیگنال ورودی، وضعیت فعلی و نماد پشته،اتومات می‌تواند دنبال کند انتقال را به حالت دیگر و به صورت اختیاری پشته را دستکاری کند.

به‌طور کلی اتوماتون پشته‌ای ممکن است محاسبات متعددی روی سیگنال‌های ورودی انجام دهد.اگر در هر موقعیت فقط یک انتقال برای ادامه محاسبات باشد در آن صورت نتیجه ا[//en.wikipedia.org/wiki/Deterministic_pushdown_automaton توماتون پشتهای قطعی] است.(DPDA) در غیر این صورت اتوماتون پشتهای غیر قطعی می‌شود(NDPDA) .تنها در گرامر مستقل از متن می‌شود گرامرهای مبهم را از طریق DPDA یعنی گرامرمستقل از متن قطعی,شناخت.تمام گرامرهای مستقل از متن , قطعی نیستند و مشکل شناخت گرامر مستقل از متن قطعی  حل نشده‌است. به عنوان یک نتیجه از بالا DPDA یک نوع به شدت ضعیف تر از PDA است و هیچ الگوریتم برای تبدیل PDA به معادل DPDA وجود ندارد.

اگرما اجازه دسترسی به 2 پشته به جای یک پشته داشتیم آنگاه وسیله‌ای قوی به مانند ماشین تورینگ داشتیم.اتوماتون خطی محدود  ابزاری قوی تر از اتوماتون پشته‌ای است ولی از ماشین تورینگ ضعیف تر است.

## تعریف رسمی
مااز نمادهای استاندارد زبان رسمی استفاده می‌کنیم: \Gamma^{*} به رشته‌ای از حروف و  \Gamma  و \varepsilon به رشته‌ای خالی اشاره می‌کند.

یک PDA عموماً با 7 عنصر مشخص می‌شود:

 M=(Q,\  \Sigma,\  \Gamma,\  \delta, \ q_{0},\ Z, \ F) که :
*\, Q  مجموعه محدودی از حالت هاست.
*\,\Sigma مجموعه محدودی است که الفبای ورودی میگویند.
*\,\Gamma مجموعه محدودی است که الفبای پشته گویند.
*\,\delta زیرمجموعه‌ای از  Q \times  (\Sigma \cup\{\varepsilon\})  \times \Gamma \times Q \times \Gamma^*  (رابطه انتقال)
*\,q_{0}\in\, Q  حالت آغازین.
*\ Z\in\,\Gamma نماد پشته اولیه.
*F\subseteq Q مجموعه‌ای از حالات پذیرفته شده.

عنصر (p,a,A,q,\alpha) \in \delta تابع انتقال M است.
* \,\delta تابع انتقال است.

## ''محاسبات''

بندانگشتی|200px|مرحله از اتوماتون پشته ای
به منظور معناشناسی از ماشین پایین فشردنی شرح وضعیت فعلی معرفی شده‌است.هر سه عنصر  (p,w,\beta) \in Q \times \Sigma^* \times \Gamma^* شرح لخظه‌ای M گویند(ID), که شامل حالت کنونی و قسمتی از نوار ورودی که خوانده نشده‌است و محتویات پشته می‌شود.رایطه انتقال \delta رابطه گام به گام  \vdash_{M} of M در هر لحظه تعریف می‌کند.برای ساختار  (p,a,A,q,\alpha) \in \delta  مرحله (p,ax,A\gamma) \vdash_{M} (q,x,\alpha\gamma), برای هر x\in\Sigma^* و هر \gamma\in \Gamma^* وجود دارد.

اتوماتون پشته‌ای عموماً تبعیض ناپذیرند که در حالت لحظه‌ای (p,w,\beta) چندین راه ممکن است باشد.هر کدام از این روش‌ها ممکن است انتخاب شوند.با تعاریف بالا در هر مرحله سمبل منفرد از بالای پشته خارج می‌شود و با نمادهایی که لازم تر است جایگزین می‌شود.به عنوان نتیجه هیچ مرحله‌ای که زمانی پشته خالی است انجام نمی‌شود.

محاسبات اتوماتون پشته‌ای دنباله‌ای از مراحل است.محاسبات با حالت اولیه  q_{0}  و سمبل پشته‌ای اولیه Z و رشته ورودی wآغاز می‌شود, بنابراین در حالت اولیه داریم (q_{0},w,Z) .دو حالت پذیرش اولیه داریم.روش دیگر پذیرش از طریق حالت نهایی است.به این معنی است که پس از خواندن ورودی آن ماشین به یک حالت مورد قبول می‌رسد یا به وسیله پشته خالی پذیرش می‌شود.حالت پذیرش برای اولین بار با استفاده از حافظه داخلی و حلت دوم توسط حافظه خارجی است.

بعبارت دیگر تعریف کنیم:
# \gamma \in \Gamma^* \} و f \in F  با L(M) = \{ w\in\Sigma^* | (q_{0},w,Z) \vdash_M^* (f,\varepsilon,\gamma)
# q \in Q \}  با N(M) = \{ w\in\Sigma^* | (q_{0},w,Z) \vdash_M^* (q,\varepsilon,\varepsilon)

برای هر اتوماتون پشته‌ای این دو رابطه ربطی به هم ندارند.شاید در بعضی جاها با هم برابر باشند ولی دلیلی بر یکی بودن نیست.مشخصات ماشین نیز باید حالت مورد نظر را پذیرش می‌باشد.در تمامی اتوماتون پشته‌ای 2 حالت پذیرش بیانگر زبان یکی‌اند.

## توصیف آنی

توصیف آنی یک سه‌تایی منظم به فرم (q,w,α) است که در آن:
*1- q یک حالت باشد.
*2- w باقیماندهٔ رشتهٔ ورودی باشد.
*3- α محتویات پشته باشد.

را یک توصیف آنی از ماشین پشته‌ای می‌نامیم.
* دقت کنید که در نگارش فوق سمت چپ‌ترین نماد α، بالاترین عضو پشته است. ضمناً برای نمایش حروف الفبا معمولاً از b,a,....، برای نمایش حرف‌های پشته از Y,X,... و برای نمایش محتویات پشته از γ,β,αو... استفاده می‌شود.

## مثال
در پایین شرح یک PDA را داریم که زبان \{0^n1^n \mid n \ge 0 \} را از طریق حالت نهایی نشان می‌دهد:

بندانگشتی|250px|PDA for <math>\{0^n1^n \mid n \ge 0\}</math> (by final state))]]

M=(Q,\  \Sigma,\  \Gamma,\  \delta, \ p,\ Z, \ F), که:

Q = \{ p,q,r \}

\Sigma = \{0, 1\}

\Gamma = \{A, Z\}

q_{0} = p

F = \{r\}

\delta متشکل از شش دستورالعمل‌های زیر است:

(p,0,Z,p,AZ),
(p,0,A,p,AA),
(p,\epsilon,Z,q,Z),
(p,\epsilon,A,q,A),
(q,1,A,q,\epsilon), و 
(q,\epsilon,Z,r,Z).

## آشنایی با روند محاسبات
بندانگشتی|340px|محاسبات پذیرش شده برای: <math>0011</math>
در زیر  فرق محاسبات را در  رشته‌های متفاوت در PDA نشان میدهیم:
الف)رشته ورودی:0011 .با توجه به حرکت از حالت p به حالت q , انواع مختلف محاسبات داریم. و فقط یکی از اینان قبول است.

: (i) (p,0011,Z) \vdash (q,0011,Z) \vdash (r,0011,Z).حالت نهایی مورد پذیرش است ولی ورودی این راه خواندن را قبول نمی‌کند.

: (ii) (p,0011,Z) \vdash (p,011,AZ) \vdash (q,011,AZ).مراحل دیگر امکان پذیر نیست.

: (iii) (p,0011,Z) \vdash (p,011,AZ) \vdash (p,11,AAZ) \vdash (q,11,AAZ)  \vdash (q,1,AZ) \vdash (q,\epsilon,Z)  \vdash (r,\epsilon,Z).پذیرش محاسبه: در حالت پذیرش به پایان میرسد.، در حالی که ورودی کامل خوانده شده‌است.

ب)رشته ورودی=00111.انواع مختلف محاسبه داریم.هیچ کدام مورد قبول نیست.

: (i) (p,00111,Z) \vdash (q,00111,Z) \vdash (r,00111,Z).حالت نهایی مورد پذیرش است ولی ورودی این راه خواندن را قبول نمی‌کند.

: (ii) (p,00111,Z) \vdash (p,0111,AZ) \vdash (q,0111,AZ).مراحل دیگر امکان پذیر نیست.

: (iii) (p,00111,Z) \vdash (p,0111,AZ) \vdash (p,111,AAZ) \vdash (q,111,AAZ)  \vdash (q,11,AZ) \vdash (q,1,Z)  \vdash (r,1,Z). حالت نهایی مورد پذیرش است ولی ورودی این راه خواندن را قبول نمی‌کند.

## اتوماتون پشته‌ای عمومی GPDA
یک نوع PDA است که رشته‌هایی را با طول مساوی درون پشته مینویسد و تمام رشته هارا از پشته خارج می‌کند.

یک GPDA 6 عنصر تعریف می‌شود.

:M=(Q,\  \Sigma,\  \Gamma,\  \delta, \ q_{0}, \ F) که:

\Sigma\,, \Gamma\,, q0 و F همان تعریف در PDA دارد و

:\,\delta: Q \times  \Sigma_{\epsilon}  \times \Gamma^{*} \longrightarrow P( Q \times \Gamma^{*} ) تابع انتقال است.

قوانین محاسبه در GPDA مانند PDA است با این تفاوت که ai+1 و bi+1ها به جای نماد , رشته است.
یکی می‌تواند اثبات تحلیلی برای هم ارزی از GPDA و PDAها را با استفاده از شبیه‌سازی زیر  تدوین و فرموله کند:

Let \delta(q1, w, x1x2...xm) \longrightarrow (q2, y1y2...yn) be a transition of the GPDA

where q_1, q_2 \in Q, w \in\Sigma_{\epsilon}, x_1, x_2,\ldots,x_m\in\Gamma^{*}, m\geq0, y_1, y_2,\ldots,y_n\in\Gamma^{*}, n\geq 0.

Construct the following transitions for the PDA:

::\delta^{'}(q1, w, x1) \longrightarrow (p1, \epsilon)

::\delta^{'}(p1, \epsilon, x2) \longrightarrow (p2, \epsilon)

::::\vdots

::\delta^{'}(pm-1, \epsilon, xm) \longrightarrow (pm, \epsilon)

::\delta^{'}(pm, \epsilon, \epsilon ) \longrightarrow (pm+1, yn)

::\delta^{'}(pm+1, \epsilon, \epsilon ) \longrightarrow (pm+2, yn-1)

::::\vdots

::\delta^{'}(pm+n-1, \epsilon, \epsilon ) \longrightarrow (q2, y1)

## جستارهای وابسته
* ماشین پشته

گرامر مستقل از متن

ماشین‌های حالات متناهی

## منابع

*  Section 2.2: Pushdown Automata, pp.&nbsp;101&ndash;114.
* Jean-Michel Autebert, Jean Berstel, Luc Boasson, Context-Free Languages and Push-Down Automata, in: G. Rozenberg, A. Salomaa (eds.), Handbook of Formal Languages, Vol. 1, Springer-Verlag, 1997, 111-174.

## پیوند به بیرون

رده:اتوماتا (رایانش)
رده:مدل‌های محاسباتی
رده:نظریه اتوماتا