در علوم کامپیوتر، به طور خاص در نظریه اتوماتا، به ماشینی خودکار **دو طرفه** می‌گویند اگر اجازه دهد ورودی آن دوباره خوانده شود.

تعریف
-----

دستگاه دو طرفه قطعی متناهی (به انگلیسی: two-way deterministic finite automaton) یا 2DFA یک ماشین انتزاعی است؛ نسخه‌ای تعمیم داده شده از دستگاه محدود قطعی (DFA) که می‌تواند دوباره کاراکترهای پردازش شده را ملاقات کند. همان‌طور که در DFA دیدیم، تعداد موقعیت‌ها متناهی است و هر انتقال با یک علامت مشخص شده که هر انتقال با علامت نشان داده شده مشخص می‌کند که دستگاه به سمت چپ حرکت می‌کند، راست، یا در همان موقعیت باقی می‌ماند. هم ارز، 2DFAها می‌تواند به عنوان تورینگ ماشین‌های فقط خواندنی بدون نوار کار، و با تنها یک نوار ورودی فقط خواندنی دیده شود.

2DFAها می‌توانند معادل با DFAها نشان داده شوند؛ که آن، هر زبان رسمی که بتواند توسط یک 2DFA پذیرفته شود می‌تواند توسط یک DFA که فقط به بررسی هر یک از کاراکترها به ترتیب می‌پردازد نیز پذیرفته شود. از آنجا که DFAها بدیهی است که یک مورد خاص از 2DFAها هستند، این به معنی این است که هر دو ماشین دقیقاً مجموعه‌ای از زبان‌های منظم را تشخیص می‌دهند. با این حال DFA معادل برای 2DFA ممکن است موقعیت‌های بیشتری داشته باشند، و 2DFAها کارکرد عملی تری برای الگوریتم‌هایی با مشکلات شایع دارد. آنها همچنین معادل ماشین تورینگ فقط خواندنی هستند که تنها یک مقدار ثابت از فضا را بر روی نوار کار خود اشغال می‌کنند، زیرا هر مقدار ثابت از اطلاعات را می‌توان در یک موقعیت کنترل متناهی توسط ساخت محصول گنجاند (یک موقعیت برای هر ترکیبی از یک موقعیت نوار کار و یک موقعیت کنترل).

تعریف رسمی
----------

به طور رسمی، یک دستگاه دو طرفه قطعی متناهی را می‌توان توسط یک ۸ تایی زیر:
{\displaystyle M=(Q,\Sigma ,L,R,\delta ,s,t,r)}
نشان داد به طوری که:

* Q مجموعهٔ غیرتهی متناهی حالات
* \Sigma  مجموعهٔ غیرتهی متناهی الفبای ورودی
* L علامت پایان سمت چپ است
* R علامت پایان سمت راست است
* {\displaystyle \delta :Q\times (\Sigma \cup \{L,R\})ightarrowQ\times \{left,right\}}
* s حالت شروع است
* t حالت پایانی است
* r حالت رد کردن

علاوه بر این، دو شرط زیر نیز باید ارضا شوند:

* برای همه {\displaystyle q\in Q}

{\displaystyle \delta (q,L)=(q^{\prime },right)} برای برخی {\displaystyle q^{\prime }\in Q}
{\displaystyle \delta (q,R)=(q^{\prime },left)} برای برخی {\displaystyle q^{\prime }\in Q}
این گزارش می‌گوید که باید برخی از انتقال احتمالی وجود داشته باشد برای زمانی که اشاره گر الفبا به پایان می‌رسد.

* برای همهٔ نمادهای {\displaystyle \sigma \in \Sigma \cup \{L\}}

{\displaystyle \delta (t,\sigma )=(t,R)}
{\displaystyle \delta (r,\sigma )=(r,R)}
{\displaystyle \delta (t,R)=(t,L)}
{\displaystyle \delta (r,R)=(r,L)}
این گزارش می‌گوید که یک بارکه دستگاه به موقعیت قبول یا رد می‌رسد، برای همیشه در آن باقی می‌ماند و اشاره گر به سمت راست‌ترین نماد رفته و به طور نامتناهی در آن می‌چرخد.

دستگاه دو طرفه متناهی کوانتومی
------------------------------

مفهوم 2DFAها توسط رابین و اسکات در سال ۱۹۵۹ در کار اصلی خود که "ماشین‌های متناهی و مشکلات تصمیم گیری" نام داشت مطرح شد که در سال ۱۹۹۷ توسط John Watrous به محاسبات کوانتومی تعمیم یاقته بود "On the Power of 2-Way Quantum Finite State Automata"، که او در آن نشان می‌دهد که این دستگاه می‌تواند زبان نامنظم تشخیص دهد و بسیار قوی تر از DFAها می‌باشد.

ماشین دو طرفه پشته‌ای
---------------------

یک ماشین پشته‌ای است که اجازه حرکت در هر مسیری بر روی نوار ورودی خود را دارد که به آن **دستگاه دو طرفه پشته‌ای** (2PDA) می‌گویند که توسط Hartmanis، لوئیس، و استرنز در سال ۱۹۶۵ مورد مطالعه قرار گرفته است. Aho، Hopcroft، اولمن در سال ۱۹۶۸ و کوک در سال ۱۹۷۱ کلاس زبان‌های تشخیص دهنده 2DPDA (قطعی) و غیر قطعی (2NPDA) دستگاه دو طرفه پشته‌ای را را توصیف کرده‌اند. گری، هریسون، و ایبارا (۱۹۶۷) خصوصیات بستاری این زبان‌ها را بررسی نموده‌اند.

منابع
-----

1. ↑  This definition has been taken from lecture notes of CS682 (Theory of Comoputation) by Dexter Kozen of Stanford University
2. ↑  John Watrous. On the Power of 2-Way Quantum Finite State Automata. CS-TR-1997-1350. 1997. pdf
3. ↑  John E. Hopcroft, Jeffrey D. Ullman (1979). *Introduction to Automata Theory, Languages, and Computation*. Addison-Wesley. ISBN 0-201-02988-X. Here: p.124; this paragraph is omitted in the 2003 edition.
4. ↑  J. Hartmanis, P.M. {Lewis II}, R.E. Stearns (1965). "Hierarchies of Memory Limited Computations". *Proc. 6th Ann. IEEE Symp. on Switching Circuit Theory and Logical Design*. pp. 179–190.`{{cite book}}`: نگهداری یادکرد:نام‌های متعدد:فهرست نویسندگان (link)
5. ↑  Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman (1968). "Time and Tape Complexity of Pushdown Automaton Languages". *Information and Control*. **13** (3): 186–206. doi:10.1016/s0019-9958(68)91087-5.`{{cite journal}}`: نگهداری یادکرد:نام‌های متعدد:فهرست نویسندگان (link)
6. ↑  S.A. Cook (1971). "Linear Time Simulation of Deterministic Two-Way Pushdown Automata". *Proc. IFIP Congress*. North Holland. pp. 75–80.
7. ↑  Jim Gray, Michael A. Harrison, Oscar H. Ibarra (1967). "Two-Way Pushdown Automata". *Information and Control*. **11** (1–2): 30–70. doi:10.1016/s0019-9958(67)90369-5.`{{cite journal}}`: نگهداری یادکرد:نام‌های متعدد:فهرست نویسندگان (link)

* Hing Leung. Two-Way Deterministic Finite Automata.
* M. O. Rabin and D. Scott. Finite automata and their decision problems. *IBM Journal of Research and Development*, 3, 114–۱۲۵. ۱۹۵۹.