ماشین تورینگ (به انگلیسی: Turing machine) یک دستگاه فرضی است که روی نشانهای روی یک قطعه نوار بر اساس جدول قوانین دستکاری انجام میدهد. با وجود اینکه مکانیزم ماشین تورینگ مقدماتی است، مفهومش برای پوشش عملکردهای بسیار پیچیده کافی و گستردهاست. ماشین تورینگ میتواند برای شبیهسازی هر الگوریتم کامپیوتری و توضیح نحوه عملکرد یک واحد پردازشگر مرکزی به کار آید. حافظه این ماشین ساختاری بسیار ساده دارد. یعنی میتواند بصورت یک آرایه یک بعدی از عناصر (سلولها) باشد که هر یک میتوانند حافظ تنها یک نماد باشند. این آرایه از هر دو طرف باز و نامحدود است (حافظه بینهایت) و اطلاعات آن میتوانند به هر ترتیبی فراخوانی شوند.
نمایش هنری یک ماشین تورینگ
ماشینهای تورینگ
|
- ماشین محاسبه تورینگ
- ماشین تورینگ متناوب
- ماشین تورینگ کوانتومی
- ماشین تورینگ غیرقطعی
- ماشین خواندنی تورینگ
- ماشین راستگرد خواندنی تورینگ
- ماشین تورینگ احتمالی
- ماشین تورینگ چندمسیره
- ماشینهای همارز با ماشین تورینگ
|
تاریخچه
زمینههای تاریخی:ماشین محاسباتی
معرفی ماشین تورینگ توسط دانشمند انگلیسی آلن تورینگ در سال ۱۹۳۶ میلادی، گام دیگری را در مسیر ایجاد و پیدایش ماشینهای محاسباتی حالات متناهی به نمایش میگذارد. رابین گندی یکی از دانشجویان آلن تورینگ و دوست صمیمی تمام عمرش، ریشههای نظریه ماشین محاسباتی بابیج(۱۸۳۴) را کاوش کرد و در حقیقت نظریه بابیج را دوباره ارائه کرد:
آنالیز گندی در مورد ماشین تحلیلی بابیج پنج عملیات زیر را توضیح میدهد:
۱-عملگرهای ریاضی + و – و *
۲-هر ترتیبی از عملگرها قابل قبول است
۳-تکرار عملگر
۴-تکرار شرطی
۵-انتقال شرطی
تعریف منطقی (انتزاع ذهنی مفاهیم کلی)
ماشین تورینگ عبارت است از یک پنج-تاپل (پنجتایی) بهصورت ، که در اینجا:
- برای نمایش مفهوم ماشین انتخاب شده است.
- مجموعهای است متناهی، از حالات داخلی.
- مجموعهای متناهی موسوم به الفبای نوار و حاوی نمادی مخصوص برای نمایش یک فاصلهٔ خالی روی نوار ماشین است.
- زیرمجموعهای است از و موسوم به الفبای ورودی. یعنی الفبای ورودی زیر مجموعهای از الفبای نوار است که شامل خالی نیست. نوارهای خالی نمیتوانند بعنوان ورودی استفاده شوند.
- عبارت است از یک تابع جزئی، موسوم به تابع انتقال از دامنهٔ به برد .
- حالت شروع نام دارد، یعنی، حالتی از ماشین است که محاسبه را درآن آغاز میکنیم.
بطور کلی یک تابع جزئی روی است و تفسیرش عملکرد ماشین تورینگ را بیان میکند.
تعریف وصفی (عملی دنیای خارج از ذهن)
ماشین تورینگ به صورت ریاضی، ماشینی است که روی یک نوار عمل میکند. روی این نوار، نمادهایی است که ماشین هم میتواند بخواند و هم میتواند بنویسد و همزمان از آنها استفاده میکند. این عمل به طور کامل با یک سری دستورالعمل ساده و محدود تعریف شده است. ماشین تورینگ از موارد زیر تشکیل شده است:
۱. یک نوار، به سلولهایی تقسیمبندی شده است و هر سلول شامل نمادهایی است. الفبا شامل نماد تهی خاصی و یک یا تعداد دیگری نماد است. فرض میشود که این نوار خودسرانه به چپ و راست رسانده شود. ماشین تورینگ از نوارهایی تأمین میشود که برای محاسبه لازم است.
۲. یک کلاهک وجود دارد که قادر به خواندن و نوشتن نمادهایی است که روی نوار قرار گرفتهاند و بطور همزمان نوار را به سمت چپ و راست یکی از (و تنها یک) سلولها حرکت میدهد. در بضی مدلها، کلاهک حرکت میکند و نوار ثابت میماند.
۳. یک دستگاه ثبت حالت وجود دارد که حالتهای ماشین تورینگ را ذخیره میکند (یکی از تعداد زیادی حالت متناهی). یک حالت شروع وجود دارد که همراه با مقدار دهی اولیه است. این حالتها، حالت ذهن شخصی را که محاسبات را انجام میدهد، جایگزین میکنند.
۴. یک جدول محدود (که گاهی جدول عمل یا تابع انتقال نامیده میشود)، از دستورالعملها وجود دارد که در حال حاضر، حالت (q_i) و نماد (a_j) به ماشین داده میشود (برای مدلهای ۵تایی و گاهی ۴تایی) که روی نوار خوانده میشود و میگوید که ماشین، این موارد را به تزتیب زیر برای مدلهای ۵تایی انجام دهد:
- یا پاک کردن یا نوشتن یک نماد (بصورت جایگزین کردن a_i با a_j۱)
- حرکت کردن کلاهک نوار (که توسط d_k مشخص میشود و میتواند مقادیر L برای حرکت به چپ و R برای حرکت به سمت راست به خود بگیرد. همچنین مقدار N نشان دهنده ساکن بودن نوار است).
- فرض کنید یک حالت مشابه یا یک حالت جدید مشخص شده است (رفتن به وضعیت q_i۱)
در مدلهای ۴تایی پاک کردن یا نوشتن یک نماد (a_j۱) و حرکت کلاهک نوار به سمت چپ یا راست (d_k) بصورت دستورالعملهای جداگانه مشخص شدهاند. بطور خاص، جدول به ماشین میگوید که چیزی را پاک کند یا یک نماد را بنویسد (ia) یا کلاهک نوار به سمت چپ و راست حرکت کند (ib). فرض کنید که حالتهای مشابه یا حالتهای جدیدی مشخص شدهاند. اما عملیاتهای (ia) و (ib) دستورالعملهای یکسانی ندارند. در برخی از مدلها، اگر در جدول، ورودی از نمادها و حالتها نداشته باشیم، ماشین متوقف خواهد شد. سایر مدلها، نیاز به همه ورودیها دارند تا پر شوند. توجه داشته باشید که هر بخش از ماشین- حالتها و نمادها، مجموعهها، اقدامات، چاپ کردن، پاک کردن و حرکت نوار- محدود، گسسته و تشخیص پذیر است. این، پتانسیل نامحدود نوارهاست که خود مقدار نامحدودی از یک فضای ذخیرهسازی است.
مقایسه با ماشینهای واقعی
اغلب گفته میشود که ماشین تورینگ، بر خلاف ماشینهای اتومات، به اندازه ماشینهای واقعی قدرتمند هستند و قادر به انجام هر عملیاتی که ماشین واقعی میتواند بکند هستند. چیزی که در این مطلب جا ماند این است که یک ماشین واقعی تنها میتواند در بسیاری از تنظیمات متناهی باشد؛ در واقع ماشین واقعی چیزی نیست جز یک ماشین اتوماتیک محدود خطی. از طرف دیگر ماشین تورینگ با ماشینهایی که دارای ظرفیت حافظههای نامحدود محاسباتی هستند، معادل است. از نظر تاریخی رایانههایی که محاسبات را در حافظه داخلی شان انجام میدادند، بعدها توسعه داده شدهاند.
چرا ماشینهای تورینگ مدلهای مناسبی برای رایانههای واقعی هستند؟
۱. هرچیزی که ماشین واقعی میتواند محاسبه کند، ماشین تورینگ هم میتواند. برای مثال ماشین تورینگ، میتواند هرچیز طبق روالی که در زبانهای برنامهنویسی پیدا میشود شبیهسازی کند. همچنین میتواند فرایندهای بازگشتی و هریک از پارامترهای مکانیسم شناخته شده را شبیهسازی کند.
۲. تفاوت، تنها در قابلیت ماشین تورینگ برای دخالت در مقدار محدودی اطلاعات نهفته است؛ بنابراین، ماشین تورینگ میتواند در مدت زمان محدودی، در اطلاعات دخالت داشته باشد.
۳. ماشین واقعی همانند ماشینهای تورینگ میتوانند حافظه مورد نیازش را به کمک دیسکهای بیشتر، بزرگ کند. اما حقیقت این است که هم ماشین تورینگ و هم ماشین واقعی، برای محاسبات نیازی به فضا در حافظهشان ندارند.
۴. شرح برنامههای ماشین واقعی که از مدل سادهتر انتزاعی استفاده میکنند، پیچیدهتر از شرح برنامههای ماشین تورینگ است.
۵. ماشین تورینگ الگوریتمهای مستقل را که چقدر از حافظه استفاده میکنند، توصیف میکند. در دارایی حافظه همهٔ ماشینها، محدودیتی وجود دارد؛ ولی این محدودیت میتواند خود سرانه در طول زمان افزایش یابد.
ماشین تورینگ به ما اجازه میدهد دربارهٔ الگوریتمهایی که برای همیشه نگه داشته میشوند، توصیفاتی ارائه دهیم؛ بدون در نظر گرفتن پیش رفت در معماری محاسبات با ماشین معمولی.
۶. ماشین تورینگ جملات الگوریتم را ساده میکند. الگوریتمهای در حال اجرا در ماشین آلات انتزاعی معادل تورینگ، معمولاً نسبت به همتایان خود که در ماشینهای واقعی در حال اجرا هستند عمومی ترند. زیرا آنها دارای دقت دلخواه در انواع اطلاعات قابل دسترس هستند و هیچوقت با شرایط غیرمنتظره روبرو نمیشوند. یکی از نقطه ضعفهای ماشین تورینگ این است که برنامههای واقعی که نوشته میشوند ورودیهای نامحدودی را در طول زمان دریافت میکنند؛ در نتیجه هرگز متوقف نمیشوند.
محدودیتهای ماشین تورینگ
نظریه پیچیدگی محاسباتی
یکی از محدودیتهاو معایب ماشینهای تورینگ این است که آنها توانایی چیدمان خوب را ندارند. برای مثال کامپیوترهای برنامهای با ذخیره مدرن، نمونههایی از یک مدل خاص ماشین انتزاعی که به نام ماشین برنامه دسترسی رندم یا مدل ماشین RASP میباشند.
همزمانی
یکی دیگر از محدودیتهای ماشین تورینگ این است که همزمانی را خوب ارئه نمیدهد. برای مثال برای اندازه عدد صحیحی که میتواند توسط «متوقف کننده غیر قطعی دایمی» محاسبه شود، محدودیت وجود دارد. ماشین تورینگ روی یک نوار خالی شروع میکند. در مقابل، ماشینهای «همیشه متوقف» همزمان هستند که بدون ورودی میتوانند عدد صحیح نامتناهی را محاسبه کنند.
منبع
ایده ماشین تورینگ چگونه مطرح شد و چه چیزی را دنبال میکرد؟
بخش اول
ماشین تورینگ! مفهومی که به اندازه فرد مطرح کننده خود از اهمیت ویژهای برخوردار است و نقش مهمی در رسیدن علوم کامپیوتر و همچنین فناوری محاسبات به مقطع کنونی دارد. اگرچه به سادگی میتوان بدون داشتن اطلاعاتی حتی جزئی در رابطه با ماشین تورینگ، به خوبی از نحوه کارکرد كامپيوترها و سازوكار محاسبات در ماشینها مطلع شد اما در این حالت، قطعاً کلید اصلی مسئله در نظر گرفته نشده است. درک ماشین تورینگ، درک روح محاسبات ماشینی و شناخت تولد و تکامل ماشینهای محاسبهگر است. اما به راستی، تورینگ چگونه و با چه هدفی چنین ایدهای را مطرح کرد؟
سرآغاز
تاریخچه محاسبات دیجیتال به دو بخش عهد عتیق و عهد جدید قابل تقسیم است. پیشوایان عهد قدیم به سرپرستی لایبنیتز (Gottfreid Wilhelm Leibniz) در سال 1670 میلادی منطق مورد نیاز ماشینهای محاسباتی دیجیتال را فراهم کرده و پیشروان عهد جدید به سرپرستی فون نویمان (John von Neumann) در سال 1940 خود این ماشینها را ساختند. آلن تورینگ، که در سال 1912 متولد شده است، جایی در میان این دو عصر مهم قرار گرفته و شاید بتوان وی را به نوعی پیوند دهنده این دو عهد مهم به شمار آورد. وی در سال 1936، درست در زمانی که به تازگی از کالج کینگ در دانشگاه کمبریج فارغالتحصیل شده و به دانشگاه پرینستون در نیوجرسی امریکا رفته بود، با نگارش و انتشار مقالهای با عنوان «درباره اعداد رایانشپذیر، با کاربردی بر مسئله تصمیمگیری» (On Computable Numbers, with an application to the Entscheidungs problem )، راهنمای پیادهسازی ماشینهای با منطق ریاضی شد.
در این مقاله، تورینگ قصد داشت تا مسئله Entscheidungs problem ریاضیدان آلمانی، دیوید هیلبرت (David Hilbert) را که در سال 1928 طرح کرده بود، حل کند. موضوع نهایی مسئله فوق، تصمیمگیری درباره این بود که آیا یک روال مکانیکی میتواند صحت یک عبارت منطقی را در تعداد محدودی حرکت تعیین کند یا خیر؟ تورینگ در این مقاله، ایده و تصور رایج در دهه 1930 از یک کامپیوتر (یک شخص مجهز به یک مداد، کاغذ و دستورالعملهای مشخص) را در نظر گرفته و با حذف تمام رگههای هوشمندی (Intelligence) از آن به غیر از امکان پیروی از دستورالعملها و امکان خواندن و نوشتن علامتهایی از یک الفبای خاص روی یک رول کاغذ با طول بی نهایت، ماشینی را معرفی کرد که بعدها به ماشین تورینگ معروف شد و سرآغاز طلوع ماشینهای محاسباتی دیجیتال امروزی شد.
ماشین تورینگ، یک جعبه سیاه ریاضیاتی بود که از یک سری دستورالعمل از پیش تعیین شده پیروی میکرد. این دستورالعملها با استفاده از علامتهايي مشخص که روی کاغذ یا نوع خاصی از حافظه نوشته میشد به ماشین تحویل داده میشد. این ماشین میتوانست در هر لحظه، یک علامت را از روی یک خانه خوانده، نوشته یا پاک کند و خانه مذکور را که یک واحد کوچک موجود روی رول کاغذ است به سمت چپ یا راست هدایت کند. علامتهای پیچیده میتوانند بهصورت دنبالهای از علامتهای سادهتر پیادهسازی شوند و در این حالت، پیچیدگی احتمالی، تشخیص تفاوت بین دو علامت مختلف و وجود یا نبود فاصلههای خالی روی نوار است. «بیت»های اطلاعاتی در این ماشین میتوانند دو فرم مختلف داشته باشند: الگوهایی در فضا که در طول زمان ارسال میشوند و حافظه مدتدار خوانده میشوند یا الگوهایی در زمان که در فضا ارسال شده و کد نامیده میشوند. در ماشین تورینگ، زمان بهصورت رشتهای از اتفاقات یکسان نیست، بلکه به صورت دنبالهای از تغییر حالات در ماشین مذکور قابل تصور خواهد بود.
ایده ماشینهای بدون قطعیتِ پیشگو، به اساس کار هوش نزدیکتر بود؛ شهود و بینش، پرکننده فاصله میان عبارات منطقی است.
در ادامه مقاله، تورینگ امکان وجود ماشین منفردی را مطرح کرد که میتواند هر توالی محاسباتی را محاسبه کند. «چنین ماشین محاسباتی جامعی میتواند رفتار هر ماشین دیگری را با استفاده از شرح کار کد شده آن تقلید کند.» بنابراین، با ذکر این عبارت، تورینگ ایده «نرمافزار» را در حدود 76 سال قبل پیشگویی کرده بود. در پایان، تورینگ مسئله پیچیده هیلبرت را به روشی جالب پاسخ داده است. او عبارتی را یافته بود که در تعداد گامهای محاسباتی محدود، توسط هیچ ماشینی قابل محاسبه نبود: آیا شرح کار کد شده یک ماشین که توسط ماشین محاسباتی جامع تورینگ اجرا میشود، در نهایت به پایان میرسد یا برای همیشه اجرا میشود؟
بر همین اساس، وی پاسخ مسئلهEntscheidungs problem را منفی دانسته و از این طریق، پايهگذار طراحی ماشینهای محاسباتی دیجیتال شد. در سال 1949، فوننویمان در یک سخنرانی با اشاره به این مفهوم مطرح شده توسط تورینگ عنوان کرد: «شما میتوانید چیزی بسازید که کاری را که میشود انجام داد، انجام دهد. اما نمیتوانید نمونهای بسازید که به شما بگوید که آیا آن کار انجامپذیر است یا خیر؟»
تورینگ با درک محدودیتهای ماشینهای با قطعیت مشخص، شروع به جستوجو در زمینه محاسبات غیرقطعی با ماشینهای پیشگو کرد. از نظر او، این نوع ماشینها، همان روال گام به گام را مورد استفاده قرار میدهند اما با استفاده از نوعی پیشگویی، گاهی جهشهایی غیرقابل پیشبینی نیز انجام میدهند.
پس از پایان تحصیلات در دوره دکترا، تورینگ در سال 1938 به انگلیس بازگشت و گسترش جنگ جهانی دوم منجر به بروز نیاز هرچه بیشتر به ایدههای وی شد. به همین دلیل، وی در مدرسه رمز و کدهای محرمانه دولت به خدمت گرفته شد. در آنجا، تورینگ و همکارانش به همراه استادش، ماکسول نیومن (Maxwell Newman) ارتباطات دشمن را، از جمله پیامهای کدگذاری شده توسط ماشین آلمانی انيگما، رمزگشایی کردند. انیگما، ماشینی شبیه به ماشین تورینگ بود که امکان کدگذاری متن ورودی خود را با مکانیزمی مکانیکی فراهم میکرد. آنها کار کدگشایی رمزهای انیگما را با مجموعهای از دستگاههای الکترومکانیکی که بمب (bombe) نامیده میشدند، شروع کردند که هر کدام میتوانست در هر لحظه 36 حالت احتمالی پیکربندی انیگما را شبیهسازی کند.
از این طریق، آنها توانستند با همکاری افرادی دیگر، کامپیوتری بسیار پیچیده و دیجیتال با نام Clossus بسازند که از یک حافظه داخلی ساخته شده با 1500 لامپ خلاء بهره میبرد که وضعیت حافظه برنامهپذیری را برای جستوجوی کدها فراهم میکرد. این مدل بعدها با نسل دوم خود با 2400 لامپ خلاء جایگزین شد که علاوه بر تأثیر اساسی بر نتیجه جنگ، تحولی شگرف در تکامل رایانههای دیجیتال به شمار میآمد. اسرار مربوط به ساخت این ماشین برای حدود 30 سال از طرف سازمانهای اطلاعاتی انگلیس بهصورت محرمانه نگهداری میشد.
پس از پایان جنگ، نیاز به کامپیوترهای پیشرفتهتر، از کاربردهای رمزگشایی به سمت طراحی بمبهای اتمی پیش رفت. در سال 1946 ایالاتمتحده با داشتن کامپیوتر زمان جنگ خود، یعنی ENIAC (سرنام Electronic Numerical Integrator and Computer)، کار روی طراحی سلاحهای اتمی را در پیش گرفت. در انستیتو مطالعات پیشرفته پرینستون و با حمایت مالی ارتش ایالاتمتحده، دفتر تحقیقات نیروی دریایی و همچنین کمیسیون انرژی اتمی امریکا، فوننویمان موظف شد تا نمونه الکترونیکی ماشین جامع تورینگ را بسازد. در آن زمان، هدف او ساخت ماشین تورینگی بود که حافظه آن با سرعت نور قابل دسترسی بوده و به پردازش در زمینههای مختلف میپرداخت. اما هدف دولت ایالات متحده امریکا از سرمایهگذاری روی چنین ماشینی تعیین امکان ساخت بمب هیدروژنی بود و به همین دلیل، فون نویمان قول داد که ماشین مذکور که از 5 کیلوبایت فضای ذخیرهسازی بهره میبرد، امکان اجرای کدهای داینامیک مذکور را داشته باشد.
بعدها، طراحی کامپیوتر مذکور در اختیار همگان گذارده شد و آيبيام آن را تجاری کرد. در نخستین جلسه هماهنگی برای اجرای پروژه مذکور در سال 1945، فون نویمان اعلام کرد که قصد دارد پیادهسازی دستورات را نیز همانند اعداد در حافظه انجام دهد و این ترکیب دادهها و دستورالعملها کاملاً براساس مدل تورینگ بود.
ماشین تورینگ چیست ؟ قسمت 1
ماشین تورینگ چیست ؟ قسمت 2
ماشین تورینگ چیست ؟ قسمت 3