نظریه زبانها و ماشینها چیست؟
زبان، مجموعهای از رشتههایی از نمادهای متوالی است که این نمادها خود از یک مجموعه الفبای متناهی گرفته شدهاند. یک زبان رسمی مانند زبان فارسی یا انگلیسی یا حتی زبان برنامهنویسی را میتوان قوانینی تولید نمود که این قوانین در قالب ابزارها یا تعاریفی قابل بیان هستند. گرامر زبان، عباراتی با نشانگذاری خاص، تعریف بازگشتی یا حتی یک ماشین (آتوماتون) همگی نمونهای از این ابزارها برای تولید رشتههای یک زبان میباشند.
آتوماتا (جمع آتوماتون) مدلهای انتزاعی از ماشینهایی هستند که با حرکت در یک سری حالتها یا پیکربندیها، محاسباتی را روی یک ورودی انجام میدهند تا یک خروجی را تولید نمایند. در هر حالت از محاسبات، یک تابع انتقال، پیکربندی بعدی را براساس بخش محدودی از پیکربندی فعلی تعیین میکند تا جایی که خروجی نهایی حاصل شده و توقف صورت پذیرد. یک ماشین علاوه بر انجام محاسبات، قادر به تعیین تعلق یا عدم تعلق رشتههای ورودی به یک زبان نیز میباشند. بدین ترتیب که اگر با یک سلسله از محاسبات باتوجه به ورودی، به پیکربندی پذیرندش رسید، آن ورودی را میپذیرد. عمومیترین و قویترین آتوماتای شناخته شده، ماشین تورینگ (Turing Machine) است که به نوعی بهعنوان یک مدل محاسباتی از یک محاسبهگر همهمنظوره یا کامپیوتر امروزی شناخته میشود.
آموزش درس نظریه زبانها و ماشینها
درس نظریه زبانها و ماشینها جز دروس مهم و امتیاز آور کنکور ارشد کامپیوتر محسوب میشود به این معنا که میتوان با تلاشی مناسب قبل از کنکور به درصد مناسب و بالایی در این درس دست یافت، اما متاسفانه مشکلاتی در نحوه آموزش نظریه زبانها و ماشینها در دانشگاههای کشور وجود دارد که باعث شده دانشجویان این درس را به خوبی فرا نگیرند و در نتیجه پایه ضعیفی در آن داشته باشند، همچنین برخی کتب ضعیف و نحوه ارائه ضعیف و بد این درس باعث شده برخی از دانشجویان احساس کنند درس نظریه زبانها و ماشینها درس سختی است و سراغ این درس نروند، در صورتی که درس نظریه زبانها و ماشینها از دروس بسیار شیرین رشته مهندسی کامپیوتر محسوب میشود. آموزش ساده و پایهای نظریه زبانها و ماشینها باعث میشود دانشجویان رشته کامپیوتر علاقه بسیاری به این درس پیدا کنند.
متاسفانه به علت پایه ضعیفی که اکثر دانشجویان کامپیوتر کشور دارند هنگامیکه با کتاب های کنکور شروع به مطالعه این درس میکنند چون کتاب های کنکور همه چیز را از پایه درس نداده اند شروع به مطالعه برایشان سخت است، به همین علت در راستای کمک به دانشجویان فیلم های مباحث پیش نیاز و جلسات ابتدایی درس مهم نظریه زبانها و ماشینها را تحت اختیار دانشجویان کشور قرار داده ایم تا دانشجویان کشور بتوانند شروعی مناسب و حرفه ای داشته باشند، سعی کنید قبل از شروع درس نظریه زبانها و ماشینها ابتدا جلسه رایگان زیر را تماشا کنید و بعد از روی کتاب ها مطالعه تان را شروع کنید و یا فیلم ها را بطور کامل تهیه کنید و از روی فیلم ها ادامه دهید. این فیلم ها را میتوانید براحتی در زیر مشاهده کنید
تاریخچه نظریه زبانها و ماشینها
نظریه زبانها و ماشینها یک شاخه نظری و هیجان انگیز از علوم کامپیوتر است که ریشههای خود را در قرن بیستم ایجاد کرد، زیرا ریاضیدانان شروع به توسعه نظری و عملی ماشینهایی کردند که ویژگی های خاصی از انسان را تقلید نموده و محاسبات را سریعتر و قابل اطمینانتر انجام دهد. کلمه automaton که ارتباط نزدیکی با کلمه "automation" دارد، به روالهای خودکاری که تولید فرآیندهای خاص را انجام میدهند، اشاره دارد. از طریق آتوماتا، دانشمندان عرصه کامپیوتر میتوانند بفهمند که ماشینها چگونه توابع را محاسبه و مسائل را حل میکنند. مهمتر از آن، تعریف یک تابع به عنوان قابل محاسبه یا توصیف یک سوال به عنوان قابل تصمیمگیری به چه معناست. اولین افرادی که از مفهوم آتوماتای متناهی استفاده کردند، زیستشناسان، روانشناسان، ریاضیدانان، مهندسان و برخی از اولین دانشمندان کامپیوتر بودند. همه آنها یک علاقه مشترک داشتند: مدلسازی فرآیند تفکر انسان، چه در مغز و چه در رایانه! وارن مک کالوچ (Warren McCulloch) و والتر پیتس (Walter Pitts)، دو نوروفیزیولوژیست، اولین کسانی بودند که در سال 1943 توصیفی از آتوماتای متناهی را ارائه کردند. مقاله آنها با عنوان "حساب منطقی ماندگار در فعالیت عصبی" کمک قابل توجهی به مطالعه نظریه شبکه عصبی، نظریه آتوماتا، نظریه محاسبات و سایبرنتیک داشت. بعدها، دو دانشمند کامپیوتر، G.H. Mealy و E.F. Moore در مقالات جداگانهای که در سالهای 1955-1956 منتشر نمودند، این نظریه را به ماشینهای بسیار قویتر تعمیم دادند. ماشینهای حالت متناهی، ماشین Mealy و ماشین Moore، برای شناخت کار آنها نامگذاری شده اند. در حالی که ماشین Mealy خروجی های خود را از طریق وضعیت فعلی و ورودی تعیین میکرد، خروجی ماشین مور تنها بر اساس وضعیت فعلی بود.
در سال 1936، آلن تورینگ (Alan Turing)، دانشمند کامپیوتر مشهور جهان، اولین مدل محاسباتی "بی نهایت" (یا نامحدود) را ابداع کرد: بنابراین ماشین تورینگ، برای حل مشکل مسئله تصمیم یا به زبان آلمانی Entscheindungs معرفی شد. ماشین تورینگ را می توان بهعنوان یک اتومات محدود یا واحد کنترل مجهز به یک حافظه بینهایت در نظر گرفت. "حافظه" ماشین از تعداد بی نهایت سلول آرایه یک بعدی تشکیل شده است. ماشین تورینگ اساساً یک مدل انتزاعی از اجرا و ذخیره سازی رایانه مدرن است که به منظور ارائه یک تعریف ریاضی دقیق از یک الگوریتم یا روش مکانیکی توسعه یافته است.
درس نظریه زبانها و ماشینها
نظریه زبانها و ماشینها، به بررسی انواع زبانها و طبقهبندیآنها میپردازد و براساس سلسله مراتب چامسکی (Chomsky) ویژگیهای زبان را در کلاسهای منظم (Regular)، مستقل از متن (Context-free)، حساس به متن (Context sensitive) و بدون محدودیت (Un restricted) بررسی میکند. همچنین تعاریف و خصوصیات انواع مدلهای محاسباتی که نقش مهمی در چندین زمینه کاربردی علوم کامپیوتر ایفا میکنند نیز مورد بررسی قرار میگیرد. زبان یک مدل انتزاعی از ویژگیهای کلی یک زبان برنامهسازی است. برای مدلسازی چگونگی تولید رشتههای موجود در یک زبان، از گرامر استفاده خواهد شد که دارای انواع مختلف است. بهعنوان نمونه گرامر مستقل از متن (Context-free Grammar)، در بیان ساختار نحو (Syntax) یک زبان برنامهنویسی و ساختار یک زبان طبیعی در هوش مصنوعی کاربرد دارد یا مدل دیگر که عبارات منظم (Regular Expression) نامیده میشود، در بیان الگوهای متنی در سیستمعامل لینوکس یا انواع ساده در شمای XML کاربرد دارد. در این درس همچنین آتوماتا یا ماشینها نیز به عنوان یک مدل ریاضی برای انجام محاسبات تعریف شده و به توصیف اجزا و قابلیتهای آن، خواهد پرداخت. بهعنوان نمونه آتوماتون متناهی یا پذیرنده حالت متناهی (Finite State Automata)، در پردازش متن، طراحی کامپایلرها و نیز طراحی سختافزار استفاده میشود. بنابراین نظریه زبانها آتوماتا با ارائه تعاریف رسمی محاسبه، مفاهیم مرتبط با سایر حوزههای غیر نظری علوم کامپیوتر را معرفی میکند و از این جهت، بهترین نقطه شروع برای مطالعه نظریه محاسبه (Computation Theory) است.
نظریه محاسبه، برمبنای قابل حل نبودن برخی مسئلهها با استفاده از محاسبهگرها شکل میگیرد. بهعنوان نمونه مسئله تعیین درستی یا نادرستی یک گزاره ریاضی، که برای ریاضیدانان امری بسیار پیشپا افتاده است، با هیچ الگوریتمی محاسباتی قابل انجام نیست. از جمله پیامدهای این عدم محاسبهپذیری، توسعه ایدههایی در مورد مدلهای نظری محاسبهگرها بود که در نهایت به ساخت محاسبهگرهای عملیاتی کمک خواهد کرد. نظریه محاسبه همچنین روی طبقهبندی مسئلهها به مسئلههای قابلحل و غیرقابلحل، تمرکز دارد و با ارائه یک تعریف دقیق از الگوریتم، مفهوم یک محاسبه مکانیکی تدوین شده و وجود یا عدم وجود الگوریتم برای مسئلههای مختلف را مورد بررسی قرار میدهد.
چرا درس نظریه زبانها و ماشینها مهم است؟
دانشجویان رشته مهندسی کامپیوتر در دوران لیسانس درسی سه واحدی به نام نظریه زبانها و ماشینها را می گذرانند که از دورس پایهای رشته مهندسی کامپیوتر و علوم کامپیوتر است. تسلط بر این درس برای دانشجویانی که میخواهند در رشته کامپیوتر در حوزههای برنامهنویسی، تحلیل نرم افزار، طراحی سخت افزار، مدیریت سیستمعامل و هوش مصنوعی فعالیت نمایند از اهمیت ویژهای برخوردار است. شایان ذکر است که این درس از جمله دروس امتیاز آور در کنکور ارشد مهندسی کامپیوتر و علوم کامپیوتر می باشد.
اهمیت درس نظریه زبانها در کنکور ارشد کامپیوتر
درس نظریه زبانها و ماشینها یکی از دروس تخصصی کنکور ارشد مهندسی کامپیوتر و یکی از دروس امتیاز آور و تاثیر گذار در آزمون کارشناسی ارشد کامپیوتر و علوم کامپیوتر است. اگر بتوانید در این درس به تسلط برسید می توانید درصد بالایی در این درس کسب کنید.
با توجه به امن بودن سوالات نظریه زبانها و ماشینها و همچنین ضریب بالایی که این درس در اکثر گرایش ها دارد توصیه ما به داوطلبان کنکور ارشد کامپیوتر تمامی گرایش ها این است که حتما این درس را مطالعه کنند و به هیچ عنوان این درس بسیار مهم را کنار نگذارند. حتی اگر در دوره کارشناسی موفق به گذراندن درس نظریه زبانها و ماشینها نشده اید، با صرف کمترین هزینه می توانید به کمک فیلم های آموزشی نظریه زبانها و ماشینها، سطح خود را بالا برده و این درس را با موفقیت پشت سر بگذارید.
در کنکور مهندسی کامپیوتر، تعداد تستهای درس نظریه زبانها و ماشینها 5 تست بوده و ضریب این درس در گرایش های معماری، شبکه های کامپیوتری، رایانش امن، نرم افزار، بیوانفورماتیک، علوم داده، الگوریتم و محاسبات و علوم و فناوری شبکه سه-2 و در گرایش هوش مصنوعی و قرآن کاوی رایانشی سه-3 است. همچنین در کنکور علوم کامپیوتر، تعداد تستهای درس نظریه زبانها و ماشینها 10 تست بوده و ضریب این درس در کلیه گرایشها چهار-4 است. درباره دروس و ضرایب دروس در کنکور ارشد کامپیوتر بیشتر بدانید.
مراجع درس نظریه زبانها و ماشینها:
مرجع اصلی درس نظریه زبانها و ماشینها در دانشگاههای معتبر کتاب سیپسر است. همچنین کتاب لینز نیز که در بسیاری از دانشگاههای ایران بعنوان مرجع درس نظریه زبانها و ماشینها درس داده میشود، مرجع مناسبی برای این درس است. در ادامه امکان دانلود رایگان کتابهای مرجع نظریه زبانها و ماشینها فراهم شده است، امکان دانلود دیگر کتاب های مرجع رشته کامپیوتر نیز روی سایت فراهم شده است، البته خواندن کتاب مرجع به دانشجویان سالهای پایینتر توصیه میشود و به دانشجویانی که قصد شرکت در کنکور ارشد را دارند زیاد توصیه نمیشود. دانشجویانی که قصد دارند برای کنکور ارشد کامپیوتر این درس را بخوانند میتوانند از منابعی که در قسمت معرفی بهترین منابع کنکور ارشد کامپیوتر معرفی شده استفاده کنند، البته توصیه میشود حتما تمامی تمرینهای کتاب لینز را نیز حل کنید.
دانلود کتاب های مرجع درس نظریه زبان ها و ماشین ها
ریز موادی که در هر فصل درس نظریه زبانها و ماشینها تدریس میشود
- فصل اول: مقدمهای بر نظریه محاسبات، مباحث پیشنیاز و مفاهیم اولیه
نظریهی مجموعهها، اصول منطق، روشهای اثبات، رابطه و تابع، مجموعههای شمارا و ناشمارا، مفاهیم پایه گراف و درخت، روابط بازگشتی، نمادهای مجانبی، الفبا، رشته، زبان، عملیات روی رشتهها و زبانها، مدل بازگشتی، مختصری بر گرامرها، آتوماتا
- فصل دوم: ماشینهای حالت متناهی
ماشین پذیرنده متناهی قطعی، ماشین پذیرنده متناهی غیرقطعی، تبدیل بین DFA وNFA ، ماشین DFA کمینه، ماشین مترجم متناهی
- فصل سوم: زبانهای منظم
عبارتهای منظم، گرامرهای منظم، زبانهای منظم و ارتباط بین این مدلها
- فصل چهارم: ویژگیهای زبانهای منظم
خصوصیات بستاری زبانهای منظم، تصمیم پذیری و خواص الگوریتمیک زبانهای منظم، زبانهای نامنظم، لم تزریق زبانهای منظم، قضیه Myhill–Nerode، دیگر روشهای تشخیص یک زبان منظم و خانوادههای زبانهای زیرمجموعه زبانهای منظم
- فصل پنجم: زبانهای مستقل از متن
گرامرهای مستقل از متن، زبانهای مستقل از متن، اشتقاق، اشتقاق چپگرد و راستگرد، پارس یا تجزیه، مسئله عضویت، ابهام در گرامرهای مستقل از متن و زبانها
- فصل ششم: سادهسازی گرامرهای مستقل از متن
تبدیلات روی گرامرهای مستقل از متن، فرمهای نرمال چامسکی و گریباخ، الگوریتم عضویت CYK
- فصل هفتم: ماشینهای پشتهای PDA
ماشین پشتهای غیرقطعی، ارتباط بین زبانهای مستقل از متن و ماشینهای پشتهای، ماشین پشتهای قطعی و گرامرهای معادل آنها
- فصل هشتم: ویژگیهای زبانهای مستقل از متن
خصوصیات بستاری زبانهای مستقل از متن، تصمیم پذیری و خواص الگوریتمیک در زبانهای مستقل از متن، لم تزریق زبانهای مستقل از متن قطعی و خطی و روشهای تشخیص یک زبان مستقل از متن
- فصل نهم: ماشینهای تورینگ
ماشین تورینگ استاندارد، ماشین تورینگ پذیرنده و محاسبهگر، ترکیب ماشینهای تورینگ، تز تورینگ
- فصل دهم: انواع مدلهای ماشین تورینگ
نسخههای مختلف از ماشین تورینگ، تورینگ قطعی و غیرقطعی، تورینگ Universal، ماشین کراندار خطی
- فصل یازدهم: دستهبندی زبانهای صوری و آتوماتا
زبانهای بازگشتیREC و بازگشتی شمارشپذیر RE، مسئله توقف، گرامرهای بدون محدودیت و گرامرهای حساس به متن و زبانهای مرتبط، سلسله مراتب چامسکی، خصوصیات بستاری، تصمیم پذیری و خواص الگوریتمیک زبانهای REC وRE و CS،
- فصل دوازدهم: محاسبهپذیری
محاسبه پذیری و محاسبه ناپذیری، کاهشپذیری، قضیه رایس، کلاسهای پیچیدگی محاسباتی
برای مشاهده اهمیت هر فصل و اینکه در سالهای اخیر از هر فصل چه تعداد تست مطرح شده به قسمت بودجهبندی سوالات کنکور ارشد مهندسی کامپیوتر مراجعه کنید.