نظریه اتوماتا
در علوم نظری رایانه، نظریهٔ اتوماتا (به انگلیسی: Automata theory) یا نظریهٔ ماشینها عبارت است از بررسی ریاضی ماشینهای محاسبهگر انتزاعی و تواناییهای آنها برای حل مسایل. به این ماشینهای انتزاعی اتوماتا گفته می شود. این نظریه بسیار نزدیک به نظریه زبانهای فرمال است. به طوری که اتوماتا اغلب توسط دستهٔ زبانهای رسمی قابل تشخیص دسته بندی می شوند. اتوماتا نقش اساسی در طراحی کامپایلر و تجزیه کردن (parsing) ایفا می کند. زبانهایی که توسط این ماشینها بررسی میشوند زبانهای فرمال هستند.
محتویات |
توضیحات پایه [ویرایش]
یک ماشین، یک مدل ریاضی از ماشین با حالات متناهی (FSM) است. یک ماشین شامل مجموعهای متناهی از حالات است که بر اساس ورودی و تابع گذار خود (که میتواند به صورت جدول باشد)، از یک حالت به حالت دیگر، تغییر وضعیت میدهد. این تابع انتقال به ماشین خودکار میگوید که به کدام حالت بعدی با توجه به حالت فعلی و نماد داده شده، برود.
به صورت کلی، یک ماشین شامل مجموعهای متناهی یا شمارا از حالات مختلف است.
در ادامه تعریفی مقدماتی از یک نوع اتوماتا ارایه میشود که به فهم مفاهیم ضروری مورد بحث در نظریهٔ ماشینها کمک میکند.
تعاریف پایه نظریه ماشینها [ویرایش]
شرح غیر قراردادی [ویرایش]
یک ماشین خودکار قرار است که بر روی تعدادی ورودی از دنباله یا رشته در مراحل زمانی گسسته اجرا شود. در هر مرحله از زمان، ماشین یک ورودی که از مجموعهای از نمادها یا حرفها برداشته شدهاست را، میگیرد که به آن الفبا (Alphabet) گفته میشود. یک ماشین حاوی مجموعهٔ متناهی از حالتهاست. در هر لحظه از اجرا بسته به نوع ماشین، میتواند در یکی یا چند تا از حالتهایش باشد. در هر مرحلهٔ زمانی، هنگامی که ماشین یک نماد را میخواند، بر اساس حالت فعلی و نماد خوانده شده به حالت بعدی پرش یا گذر میکند. این تابع روی حالت فعلی و نماد ورودی تابع گذار گفته میشود. ماشین تا زمانی که یک ورودی کامل خوانده شود ورودی را نماد به نماد در دنبالهای میخواند و از حالتی به حالت دیگر بر اساس تابع گذار، گذر میکند. زمانی که ورودی نهایی خوانده میشود، اصطلاحاً ماشین متوقف شدهاست و به این حالت، حالت نهایی میگویند. بر اساس حالت نهایی گفته میشود که ماشین یک ورودی را قبول یا رد کردهاست. زیر مجموعهای از حالتهای ماشین وجود دارد که به عنوان مجموعهٔ حالتهای مورد قبول تعریف میشود. اگر حالت نهایی یک حالت مورد قبول باشد ماشین ورودی را پذیرفتهاست. در غیر این صورت ورودی رد میشود. به مجموعهای از ورودیها که توسط ماشین پذیرفته میشود زبان قابل تشخیص ماشین میگویند.
شرح قراردادی [ویرایش]
واژگان [ویرایش]
- نماد: کوچکترین و بنیادیترین موجودیتی که دارای معنی یا تأثیری بر ماشین است. برخی مواقع به نمادها حرف هم گفته میشود.
- الفبا: یک مجموعه غیر تهی و متناهی از نمادها که در یک زبان تعریف شدهاند. الفبای زبان توسط Σ نشان داده میشود.
همچنین به هر نماد الفبا یک حرف گفته میشود. به عنوان مثال،الفبای لاتین {a,b,c,...,z}=∑ و الفبای باینری {0و1}=∑ مثالهایی از الفبا هستند که بیشترین کاربرد را برای ما دارند.
- کلمه یا رشته: دنبالهای متناهی از نمادهای یک الفباست که با عمل الحاق به هم پیوستهاند. به عنوان مثال english یک رشته روی الفبای زبان انگلیسی است. یک مثال از رشته به صورت مقابل است: w=aabc
طول رشته با علامت |w| نمایش داده میشود و به تعداد نمادهای موجود در رشته گفته میشود. رشتهی تهی با نماد ε یا ℷ نمایش داده میشودو طول آن برابر صفر در نظر گرفته میشود. به عنوان مثال اگر w=abcc آنگاه: 4=|w|
- زبان: مجموعهای از رشتهها است. این مجموعه میتواند متناهی یا نامتناهی باشد.
ماشین [ویرایش]
۵ تایی
نمایندهٔ یک ماشین خودکار است که در آن:
- Q مجموعهای از حالات است.
- ∑ یک مجموعهٔ کراندار از نمادهاست که ما آن را الفبای زبانی که ماشین خودکار میپذیرد، مینامیم.
- δ تابع گذار است که
-
- (برای ماشین خودکار غیر قطعی[۱]، یک رشتهٔ خالی نیز یک ورودی قابل قبول است)
حالت شروع است، یعنی حالتی از ماشین خودکار که در آن، هیچ یک از ورودیها هنوز پردازش نشدهاست (بدیهی است که
)- F مجموعهای از حالات Q است (برای مثال F⊆Q) که وضعیتهای قبول نامیده میشوند.
با داشتن حرف ورودی
که
میتوان تابع گذار را به صورت
نوشت. که این کار با استفاده از ترفند سادهٔ مالش[۲] صورت میگیرد (ترفند مالش عبارت است از نوشتن
به ازای همهٔ
). با این روش، تابع گذار به فرم ساده تری تبدیل میشود. ترکیب تابع تکرار شده یک مونوئید[۳] را تشکیل میدهد. برای توابع گذار، این مونوئید تحت نام مونوئید گذار[۴] یا در بعضی مواقع نیم گروه دگرسازی[۵] شناخته میشود.
کلمهٔ ورودی [ویرایش]
ماشین یک رشتهٔ متناهی از نمادهای
را که
میخواند که کلمهٔ ورودی گفته میشود. مجموعهٔ تمام کلمات با *Σ مشخص میشود. گاهی اوقات یک کاراکتر خاص برای مشخص کردن انتهای یک رشته به کار میرود (بعضی اوقات با λ نمایش داده میشود) که همچنین در الفبا نیز موجود است.
اجرا [ویرایش]
یک اجرا ماشین بر روی یک کلمهٔ ورودی
، یک دنباله از حالت های
است که
، به طوری که q0 حالت شروع است و برای
داریم
. به عبارت دیگر در ابتدا ماشین در حالت شروع q0 است و بعد ماشین دنباله وار نمادهای کلمهٔ ورودی را می خواند. وقتی ماشین نماد
را می خواند به حالت
جهش می کند.
حالت نهایی اجرا گفته می شود.
کلمهٔ مورد قبول [ویرایش]
یک کلمه
توسط ماشین مورد قبول است اگر
.
زبان شناخته شده [ویرایش]
یک ماشین می تواند یک زبان رسمی(formal language) را تشخیص دهد. یک زبان شناخته شده
توسط یک ماشین مجموعه ای از کلمات است که برای ماشین پذیرفته باشد.
زبانهای قابل تشخیص [ویرایش]
زبانهای قابل تشخیص مجموعه ای از زبانها هستند که برای برخی از ماشینها شناخته شده باشند. برای تعریف بالا از ماشین زبانهای قابل تشخیص زبانهای با قاعده هستند. برای تعاریف متفاوت از ماشین، زبانها قابل تشخیص متفاوت هستند.
با داشتن یک جفت از حروف
تابع جدید
به صورت
تعریف میشود که
نشان دهندهٔ ترکیب توابع است. طبیعتا، این فرایند میتواند بطور بازگشتی ادامه یابد و بنابراین یک تعریف بازگشتی از تابع
داریم که برای تمام کلمات
تعریف شده است و به شرح زیر است
این ساختار میتواند معکوس هم بشود، با داشتن
، میتوان دوباره
را ساخت و بنابراین، این دو توصیف هم ارزند.
سه تایی
تحت نام ماشین نیمه خودکار شناخته میشود. ماشین نیمه خودکار همان ماشین خودکار است با این تفاوت که وضعیت شروع و مجموعهٔ وضعیتهای قبول آن نادیده گرفته شده اند. مفهومهای افزودهٔ وضعیت اولیه و وضعیت قبول باعث میشوند تا توانائی ماشین خودکار بیش از توانائی ماشین نیمه خودکار باشد، بدین شرح که ماشین نیمه خودکار نمیتواند یک زبانهای فرمال را شناسائی کند. زبان
که توسط ماشین خودکار قطعی کراندار[۶] پذیرفته شده است، این گونه تعریف میشود:
توضیح اینکه، زبان پذیرفته شدهٔ ماشین خودکار(یعنی
) مجموعهای از کلمات
است که با الفبای
ساخته شده اند و وقتی به عنوان ورودی به ماشین خودکار داده میشوند، نهایتا یکی از وضعیتهای
را نتیجه میدهند. زبانهایی را که توسط ماشین خودکار پذیرفته شده اند، زبانهای قابل تشخیص می نامند.
وقتی مجموعهٔ وضعیتهای Q کراندار است، ماشین خودکار به عنوان ماشین خودکار وضعیت محدود شناخته میشود و مجموعهٔ همهٔ زبانهای قابل تشخیص آن را، زبانهای باقاعده[۷] می نامیم. در واقع یک هم ارزی قوی وجود دارد: به ازای هر زبان باقاعده یک ماشین خودکار وضعیت محدود وجود دارد.
انواع ماشینهای خودکار کراندار [ویرایش]
در زیر، سه نوع از ماشینهای خودکار کراندار ذکر شده است
- ماشینهای خودکار کراندار قطعی[۸]
- هر وضعیت از یک ماشین خودکار از این نوع، یک گذار برای هر نشانه دارد.
- ماشینهای خودکار کراندار غیر قطعی[۹]
- وضعیتهای یک ماشین خودکار کراندار غیر قطعی، ممکن است برای هر نشانه یک گذار داشته باشد و یا اصلا انتقالی نداشته باشد و یا حتی میتواند برای یک نشانه، گذارهای متعددی داشته باشد. این ماشین خودکار، کلمه را در صورتی می پذیرد که حداقل یک مسیر از q0 به وضعیتی از F وجود داشته باشد. اگر گذار تعریف نشده باشد، ماشین نمیداند که چگونه به خواندن ورودی ادامه دهد و در نتیجه کلمه پذیرفته نمیشود.
- ماشینهای خودکار کراندار غیر قطعی با ε-گذار[۱۰]
- علاوه بر اینکه میتوانند با هر نشانهای به وضعیتهای بیشتری( یا هیچ وضعیتی) پرش کنند، این ماشینها میتوانند که به روی هیچ نشانهای پرش نکنند. به این معنا که، اگر یک وضعیت گذارهای نامگذاری شده با ε را دارد، این ماشین میتواند در هر وضعیتی که به وسیلهٔ ε-گذار بدست آمده قرار گیرد که این کار میتواند با واسطه یا بدون واسطهٔ وضعیتهای دیگر صورت گیرد. مجموعهٔ وضعیت هایی که میتوان به وسیلهٔ این شیوه از وضعیت q بدست آورد، ε-بستار برای q[۱۱] نامیده میشود.
با این وجود میتوان نشان داد که تمام این ماشین ها، میتوانند زبانهای مشابهی را بپذیرند.
گسترهٔ ماشینهای متناهی [ویرایش]
خانوادهٔ زبان هایی که با ماشینهای توصیف شده در بالا پذیرفته میشوند، خانوادهٔ زبانهای باقاعده نامیده میشوند. هر چه یک ماشین قوی تر باشد، میتواند زبانهای پیچیده تری را بپذیرد. ماشینهای خودکار این چنینی عبارتند از:
- ماشینهای خودکار پائین فشردنی[۱۲]
- این ماشینها همانند ماشینهای خودکار کراندار قطعی (یا ماشینهای خودکار کراندار غیر قطعی) هستند با این تفاوت که حافظه را به صورت پشته[۱۳] به دوش میکشند. و بنابراین تابع گذار
نیز به نشانهای که در بالای پشته قرار دارد وابسته است و همین تابع مشخص میکند که در هر گذار، پشته چگونه باید تغییر داده شود. ماشینهای پائین فشردنی غیر قطعی[۱۴]، زبانهای مستقل از متن[۱۵] را می پذیرند. - ماشینهای خودکار کراندار خطی[۱۶]
- یک ماشین خودکار کراندار خطی، یک ماشین تورینگ[۱۷] محدود شده است که در آن، به جای یک نوار نامتناهی، فضایی متناسب با اندازهٔ رشتهٔ وارد شده، بر روی نوار وجود دارد. این ماشینها زبانهای حساس به متن[۱۸] را می پذیرند.
- ماشینهای تورینگ
- این ماشین ها، قدرتمندترین ماشینهای محاسباتی هستند. این ماشینها دارای یک حافظهٔ نامتناهی (به شکل یک نوار) و یک هد (که میتواند نوار را بخواند و تغییر دهد و در سرتاسر نوار در هر جهتی جابجا شود) هستند. ماشینهای تورینگ با الگوریتمها هم ارزند و پایهٔ نظری برای کامپیوترهای جدید میباشند. ماشینهای تورینگ زبانهای بازگشتی را می پذیرند و زبانهای بازگشت شمارش پذیر[۱۹] را شناسایی میکنند.
پانوشتهها [ویرایش]
- ↑ non-deteministic automaton
- ↑ currying
- ↑ monoid
- ↑ transition monoid
- ↑ transformation semigroup
- ↑ deterministic finite automaton
- ↑ regular languages
- ↑ deterministic finite automata (DFA)
- ↑ nondeterministic finite automata (NFA)
- ↑ nondeterministic finite state machine|Nondeterministic finite automata, with ε transitions (FND-ε or ε-NFA)
- ↑ ε-closure of q
- ↑ pushdown automata(PDA)
- ↑ stack
- ↑ non-deterministic PDA
- ↑ context-free languages
- ↑ Linear Bounded Automata (LBA)
- ↑ Turing machine
- ↑ context-sensitive languages
- ↑ 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»، ویکیپدیای انگلیسی، دانشنامهٔ آزاد (بازیابی در ۲ می ۲۰۱۱).

حالت شروع است، یعنی حالتی از ماشین خودکار که در آن، هیچ یک از ورودیها هنوز پردازش نشدهاست (بدیهی است که
)
