نظریه اتوماتا

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

در علوم نظری رایانه، نظریهٔ اتوماتا (به انگلیسی: Automata theory) یا نظریهٔ ماشین‌ها عبارت است از بررسی ریاضی ماشین‌های محاسبه‌گر انتزاعی و توانایی‌های آنها برای حل مسایل. به این ماشین‌های انتزاعی اتوماتا گفته می شود. این نظریه بسیار نزدیک به نظریه زبان‌های فرمال است. به طوری که اتوماتا اغلب توسط دستهٔ زبان‌های رسمی قابل تشخیص دسته بندی می شوند. اتوماتا نقش اساسی در طراحی کامپایلر و تجزیه کردن (parsing) ایفا می کند. زبان‌هایی که توسط این ماشین‌ها بررسی می‌شوند زبان‌های فرمال هستند.

توضیحات پایه[ویرایش]

مثالی از اتوماتا و مطالعه خصوصیات ریاضی چنین اتوماتونی نظریه اتوماتا است.

یک ماشین، یک مدل ریاضی از ماشین با حالات متناهی (FSM) است. یک ماشین شامل مجموعه‌ای متناهی از حالات است که بر اساس ورودی و تابع گذار خود (که می‌تواند به صورت جدول باشد)، از یک حالت به حالت دیگر، تغییر وضعیت می‌دهد. این تابع انتقال به ماشین خودکار می‌گوید که به کدام حالت بعدی با توجه به حالت فعلی و نماد داده شده، برود.

به صورت کلی، یک ماشین شامل مجموعه‌ای متناهی یا شماری از حالات مختلف است.

در ادامه تعریفی مقدماتی از یک نوع اتوماتا ارایه می‌شود که به فهم مفاهیم ضروری مورد بحث در نظریهٔ ماشین‌ها کمک می‌کند.

تعاریف پایه نظریه ماشین‌ها[ویرایش]

شرح غیر قراردادی[ویرایش]

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

شرح قراردادی[ویرایش]

واژگان[ویرایش]

  • نماد: کوچک‌ترین و بنیادی‌ترین موجودیتی که دارای معنی یا تأثیری بر ماشین است. برخی مواقع به نمادها حرف هم گفته می‌شود.
  • الفبا: یک مجموعه غیر تهی و متناهی از نمادها که در یک زبان تعریف شده‌اند. الفبای زبان توسط Σ نشان داده می‌شود.

همچنین به هر نماد الفبا یک حرف گفته می‌شود. به عنوان مثال،الفبای لاتین {a,b,c,...,z}=∑ و الفبای باینری {0و1}=∑ مثالهایی از الفبا هستند که بیشترین کاربرد را برای ما دارند.

  • کلمه یا رشته: دنباله‌ای متناهی از نمادهای یک الفباست که با عمل الحاق به هم پیوسته‌اند. به عنوان مثال english یک رشته روی الفبای زبان انگلیسی است. یک مثال از رشته به صورت مقابل است: w=aabc

طول رشته با علامت |w| نمایش داده می‌شود و به تعداد نمادهای موجود در رشته گفته می‌شود. رشته‌ی تهی با نماد ε یا ℷ نمایش داده می‌شودو طول آن برابر صفر در نظر گرفته می‌شود. به عنوان مثال اگر w=abcc آنگاه: 4=|w|

  • زبان: مجموعه‌ای از رشته‌ها است. این مجموعه می‌تواند متناهی یا نامتناهی باشد.

ماشین[ویرایش]

۵ تایی \langle Q, \Sigma, \delta, q_0, F\rangle نمایندهٔ یک ماشین خودکار است که در آن:

  • Q مجموعه‌ای از حالات است.
  • ∑ یک مجموعهٔ کراندار از نمادهاست که ما آن را الفبای زبانی که ماشین خودکار می‌پذیرد، می‌نامیم.
  • δ تابع گذار است که
\delta:Q \times \Sigma \rightarrow Q.
(برای ماشین خودکار غیر قطعی[۱]، یک رشتهٔ خالی نیز یک ورودی قابل قبول است)
  • q_0 حالت شروع است، یعنی حالتی از ماشین خودکار که در آن، هیچ یک از ورودی‌ها هنوز پردازش نشده‌است (بدیهی است که q_0 \in Q)
  • F مجموعه‌ای از حالات Q است (برای مثال F⊆Q) که وضعیت‌های قبول نامیده می‌شوند.

با داشتن حرف ورودی a که a\in\Sigma می‌توان تابع گذار را به صورت \delta_a:Q\rightarrow Q نوشت. که این کار با استفاده از ترفند سادهٔ مالش[۲] صورت می‌گیرد (ترفند مالش عبارت است از نوشتن \delta(q,a)=\delta_a q به ازای همهٔ q\in Q). با این روش، تابع گذار به فرم ساده تری تبدیل می‌شود. ترکیب تابع تکرار شده یک مونوئید[۳] را تشکیل می‌دهد. برای توابع گذار، این مونوئید تحت نام مونوئید گذار[۴] یا در بعضی مواقع نیم گروه دگرسازی[۵] شناخته می‌شود.

کلمهٔ ورودی[ویرایش]

ماشین یک رشتهٔ متناهی از نمادهای  a_1,a_2,...., a_n را که a_i \in \Sigma می‌خواند که کلمهٔ ورودی گفته می‌شود. مجموعهٔ تمام کلمات با *Σ مشخص می‌شود. گاهی اوقات یک کاراکتر خاص برای مشخص کردن انتهای یک رشته به کار می‌رود (بعضی اوقات با λ نمایش داده می‌شود) که همچنین در الفبا نیز موجود است.

اجرا[ویرایش]

یک اجرا ماشین بر روی یک کلمهٔ ورودیw = a_1,a_2,...., a_n  \in \Sigma^* ، یک دنباله از حالت های q_0,q_1,q_2,...., q_n است که q_i \in Q، به طوری که q0 حالت شروع است و برای 0 <i \leq n داریم  q_i = \delta q_{i-1},a_i . به عبارت دیگر در ابتدا ماشین در حالت شروع q0 است و بعد ماشین دنباله وار نمادهای کلمهٔ ورودی را می خواند. وقتی ماشین نماد a_i را می خواند به حالت  q_i = \delta q_{i-1},a_i جهش می کند. q_n حالت نهایی اجرا گفته می شود.

کلمهٔ مورد قبول[ویرایش]

یک کلمه  w \in \Sigma ^* توسط ماشین مورد قبول است اگر q_n \in F .

زبان شناخته شده[ویرایش]

یک ماشین می تواند یک زبان رسمی(formal language) را تشخیص دهد. یک زبان شناخته شده L \subset \Sigma^* توسط یک ماشین مجموعه ای از کلمات است که برای ماشین پذیرفته باشد.

زبان‌های قابل تشخیص[ویرایش]

زبان‌های قابل تشخیص مجموعه ای از زبان‌ها هستند که برای برخی از ماشین‌ها شناخته شده باشند. برای تعریف بالا از ماشین زبان‌های قابل تشخیص زبان‌های با قاعده هستند. برای تعاریف متفاوت از ماشین، زبان‌ها قابل تشخیص متفاوت هستند.

با داشتن یک جفت از حروف a,b \in \Sigma تابع جدید \widehat\delta به صورت \widehat\delta_{ab}=\delta_a \circ \delta_b تعریف می‌شود که \circ نشان دهندهٔ ترکیب توابع است. طبیعتا، این فرایند می‌تواند بطور بازگشتی ادامه یابد و بنابراین یک تعریف بازگشتی از تابع \widehat\delta_w داریم که برای تمام کلمات w\in\Sigma^* تعریف شده است و به شرح زیر است

\widehat\delta:Q \times \Sigma^{\star} \rightarrow Q.

این ساختار می‌تواند معکوس هم بشود، با داشتن \widehat\delta، می‌توان دوباره \delta را ساخت و بنابراین، این دو توصیف هم ارزند.

سه تایی \langle Q, \Sigma, \delta \rangle تحت نام ماشین نیمه خودکار شناخته می‌شود. ماشین نیمه خودکار همان ماشین خودکار است با این تفاوت که وضعیت شروع و مجموعهٔ وضعیت‌های قبول آن نادیده گرفته شده اند. مفهوم‌های افزودهٔ وضعیت اولیه و وضعیت قبول باعث می‌شوند تا توانائی ماشین خودکار بیش از توانائی ماشین نیمه خودکار باشد، بدین شرح که ماشین نیمه خودکار نمی‌تواند یک زبان‌های فرمال را شناسائی کند. زبان L که توسط ماشین خودکار قطعی کراندار[۶] پذیرفته شده است، این گونه تعریف می‌شود:

L= \{ w \in \Sigma^{\star}\,|\;\widehat\delta(q_0,w)\in F\}

توضیح اینکه، زبان پذیرفته شدهٔ ماشین خودکار(یعنی L) مجموعه‌ای از کلمات w است که با الفبای \Sigma ساخته شده اند و وقتی به عنوان ورودی به ماشین خودکار داده می‌شوند، نهایتا یکی از وضعیت‌های F را نتیجه می‌دهند. زبانهایی را که توسط ماشین خودکار پذیرفته شده اند، زبان‌های قابل تشخیص می نامند.

وقتی مجموعهٔ وضعیت‌های Q کراندار است، ماشین خودکار به عنوان ماشین خودکار وضعیت محدود شناخته می‌شود و مجموعهٔ همهٔ زبان‌های قابل تشخیص آن را، زبان‌های باقاعده[۷] می نامیم. در واقع یک هم ارزی قوی وجود دارد: به ازای هر زبان باقاعده یک ماشین خودکار وضعیت محدود وجود دارد.

انواع ماشین‌های خودکار کراندار[ویرایش]

در زیر، سه نوع از ماشین‌های خودکار کراندار ذکر شده است

ماشین‌های خودکار کراندار قطعی[۸]
هر وضعیت از یک ماشین خودکار از این نوع، یک گذار برای هر نشانه دارد.
ماشین‌های خودکار کراندار غیر قطعی[۹]
وضعیت‌های یک ماشین خودکار کراندار غیر قطعی، ممکن است برای هر نشانه یک گذار داشته باشد و یا اصلا انتقالی نداشته باشد و یا حتی می‌تواند برای یک نشانه، گذارهای متعددی داشته باشد. این ماشین خودکار، کلمه را در صورتی می پذیرد که حداقل یک مسیر از q0 به وضعیتی از F وجود داشته باشد. اگر گذار تعریف نشده باشد، ماشین نمی‌داند که چگونه به خواندن ورودی ادامه دهد و در نتیجه کلمه پذیرفته نمی‌شود.
ماشین‌های خودکار کراندار غیر قطعی با ε-گذار[۱۰]
علاوه بر اینکه می‌توانند با هر نشانه‌ای به وضعیت‌های بیشتری( یا هیچ وضعیتی) پرش کنند، این ماشین‌ها می‌توانند که به روی هیچ نشانه‌ای پرش نکنند. به این معنا که، اگر یک وضعیت گذارهای نامگذاری شده با ε را دارد، این ماشین می‌تواند در هر وضعیتی که به وسیلهٔ ε-گذار بدست آمده قرار گیرد که این کار می‌تواند با واسطه یا بدون واسطهٔ وضعیت‌های دیگر صورت گیرد. مجموعهٔ وضعیت هایی که می‌توان به وسیلهٔ این شیوه از وضعیت q بدست آورد، ε-بستار برای q[۱۱] نامیده می‌شود.

با این وجود می‌توان نشان داد که تمام این ماشین ها، می‌توانند زبان‌های مشابهی را بپذیرند.

گسترهٔ ماشین‌های متناهی[ویرایش]

خانوادهٔ زبان هایی که با ماشین‌های توصیف شده در بالا پذیرفته می‌شوند، خانوادهٔ زبان‌های باقاعده نامیده می‌شوند. هر چه یک ماشین قوی تر باشد، می‌تواند زبان‌های پیچیده تری را بپذیرد. ماشین‌های خودکار این چنینی عبارتند از:

ماشین‌های خودکار پائین فشردنی[۱۲]
این ماشین‌ها همانند ماشین‌های خودکار کراندار قطعی (یا ماشین‌های خودکار کراندار غیر قطعی) هستند با این تفاوت که حافظه را به صورت پشته[۱۳] به دوش می‌کشند. و بنابراین تابع گذار \delta نیز به نشانه‌ای که در بالای پشته قرار دارد وابسته است و همین تابع مشخص می‌کند که در هر گذار، پشته چگونه باید تغییر داده شود. ماشین‌های پائین فشردنی غیر قطعی[۱۴]، زبان‌های مستقل از متن[۱۵] را می پذیرند.
ماشین‌های خودکار کراندار خطی[۱۶]
یک ماشین خودکار کراندار خطی، یک ماشین تورینگ[۱۷] محدود شده است که در آن، به جای یک نوار نامتناهی، فضایی متناسب با اندازهٔ رشتهٔ وارد شده، بر روی نوار وجود دارد. این ماشین‌ها زبان‌های حساس به متن[۱۸] را می پذیرند.
ماشین‌های تورینگ
این ماشین ها، قدرتمندترین ماشین‌های محاسباتی هستند. این ماشین‌ها دارای یک حافظهٔ نامتناهی (به شکل یک نوار) و یک هد (که می‌تواند نوار را بخواند و تغییر دهد و در سرتاسر نوار در هر جهتی جابجا شود) هستند. ماشین‌های تورینگ با الگوریتم‌ها هم ارزند و پایهٔ نظری برای کامپیوترهای جدید می‌باشند. ماشین‌های تورینگ زبان‌های بازگشتی را می پذیرند و زبان‌های بازگشت شمارش پذیر[۱۹] را شناسایی می‌کنند.

پانوشته‌ها[ویرایش]

  1. non-deteministic automaton
  2. currying
  3. monoid
  4. transition monoid
  5. transformation semigroup
  6. deterministic finite automaton
  7. regular languages
  8. deterministic finite automata (DFA)
  9. nondeterministic finite automata (NFA)
  10. nondeterministic finite state machine|Nondeterministic finite automata, with ε transitions (FND-ε or ε-NFA)
  11. ε-closure of q
  12. pushdown automata(PDA)
  13. stack
  14. non-deterministic PDA
  15. context-free languages
  16. Linear Bounded Automata (LBA)
  17. Turing machine
  18. context-sensitive languages
  19. recursively enumerable languages

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  • Jackson, Jr., Philip C., Introduction to Artificial Intelligence, 2nd enlarged and slightly corrected ed., Dover Publications, Inc., New York, 1985. ISBN 0-486-24864-X
  • An Introduction to Formal Languages and Automata, Peter Linz وب‌سایت کتاب
  • مشارکت‌کنندگان ویکی‌پدیا، «Automata theory»، ویکی‌پدیای انگلیسی، دانشنامهٔ آزاد (بازیابی در ۲ می ۲۰۱۱).