نظریه زبان ها و ماشین ها Theory of Languages & Automatas سید سجاد ائم ی زمستان 94
به نام خدا پیش گفتار جزوه پیش رو جهت استفاده دانشجویان عزیز در درس نظریه زبانها و ماشینها تهیه شده است. در این جزوه با تمام سر فصلهای درس نظریه آشنا شده و در هر مبحث تمرینات بسیاری را مشاهده میکنید. سعی شده نمونه سواالت کوییزها و امتحانات میان ترم و پایان ترم اساتید محترم در ترمهای گذشته در این جزوه گنجانده شود. مطالب این جزوه همچنین از منابع گوناگونی جمع آوری شده و یا توسط اینجانب تالیف شده است. اگر ایرادی در این جزوه مشاهده میکنید در صورت تمایل بنده را از طریق زیر مطلع نمایید. با تشکر از دوست عزیزم احمدرضا غدیرزاده استاد بختیاری استاد امینیان و سرکار خانم الهام کلهر فهرست sajjadaemmi@gmail.com فصل اول: مقدمه )Introduction(... - 3 - فصل دوم: زبان ه یا منظم Languages(...)Regular - 7 - بخش اول: گرامر منظم Grammer(...)Regular - 7 - بخش دوم: پذیرنده متناهی DFA( و )NFA... - 7 - بخش سوم: عبارت منظم Expression( )Regular... - 12 - بخش چهارم: تبدیل )Convert(... - 13 - بخش پنجم: ویژگی ه یا منظم languages( )Properties of Regular... - 15 - زبان ه یا بخش ششم: تصمیم پذیری و لم تزریق Lemma( )Decidable Problems & Pumping... - 17 - سواالت چهار گزینه ای... - 19 - فصل سوم: زبان ه یا مستقل از متن Languages( )Context Free... - 22 - بخش اول: گرامر مستقل از متن...)CFG( - 22 - بخش دوم: پذیرنده پشته ای غیر قطعی )NPDA(... - 25 - بخش سوم: تصمیم پذیری Problems( )Decidable... - 28 - فصل چهارم: زبان ه یا بازگشتی و بازگشتی شمارا Languages( )Recursively Enumerable and Recursive... - 30 - بخش اول: ماشین تورینگ Machine( )Turing... - 30 - بخش دوم: تصمیم پذیری Problems( )Decidable... - 31 - فصل پنجم: نکته ه یا کلیدی Points( )Important... - 33 - الگوریتم کمینه سازی...DFA - 33 - الگوریتم تبدیل NFA به...DFA - 35 - الگوریتم اشتراک دو زبان منظم... - 36 - الگوریتم تبدیل گرامر مستقل از متن به... NPDA - 38 - سلسله مراتب چامسکی... - 40 - - 2 -
فصل اول: مقدمه )Introduction( 1- کدام یک از مجموعه های زیر می تواند یک الفبا باشد در هر مورد دلیل خود را بیان کنید. A = {a, b, c,, z} B = {1, 2, 3,,26 } C = {1, 2, 3, } D = {α, β, γ, δ, ε, ζ, η, θ, θ, λ, μ, ξ} E = {a, b, c, d, 1, 2, 3, λ} B = {0, 01} B 2 = B. C. B = C 3. B = X = {aa, ba} X Y = X. Y = Y. X = حاصل الحاق مجموعه های خواسته شده را بنویسید. C = {0, λ} با توجه به مجموعه های داده شده حاصل های خواسته شده را بدست آورید. Y = {baa, a} با توجه به مجموعه های داده شده حاصل الحاق زیر را بدست آورید. -2-3 -4 X = {λ} X. Y = Y = {aa, bb, λ} -5 با فرض a} Σ = {0, 1, مطلوبست: الف( مجموعه ای از رشته ها به طول 3. ب( مجموعه ای از رشته های به طول 2 یا 3. ج( مجموعه ای از رشته ها که طول آن ها مخالف 2 و 3 است. د( مجموعه ای از رشته های به طول زوج. - 3 -
ه( مجموعه ای از رشته های به طول فرد. 6- برای زبان های زیر گرامر بنویسید. L1 = {w {a, b} n a (w)mod 3 = 2} L2 = {w {a, b} n a (w) = n b (w)} L3 = {w {a, b} n a (w) = n b (w) + 1} L4 = {ww R w {a, b} + } L5 = {w = w R w {a, b} + } L6 = {w {a} w mod 3 w mod 2} L7 = {w {a, b} n a (w) n b (w) = 1} L8 = {w {a, b} atleast 3 a} L9 = {w {a, b} maximum 3 a} L10 = {w {a, b} w mod 2 = 1} L11 = {0 n 1 m 0 m 1 n m, n 1} L12 = {a n b m m n 1} L13 = {a n b 2n n 0} L14 = {(ab) cd(aa) + } L15 = {a n b m m = n mod 3} L16 = {a n b m 2n m 3n} L17 = {a n b n 3 n 3} L18 = {a k b n c m k n + m} L19 = {a n b n+m c m n, m 0} L20 = {a k b c m 0 n m} L21 = {vwv v, w {a, b}, v = 2} L22 = {w {a, b} w = 2k + 1, bb w} L23 = {w {a, b} n a (w) mod 2 = 0, n b (w) mod 3 = 0} L24 = {w {a, b} n a (w) mod 2 = 0, n b (w) mod 2 = 0} - 4 -
L25 = {w {a, b} n b (w) = 2} L26 = {w {a, b} w mod 2 = 0} L27 = {w {a, b} w mod 3 > 0} L28 = {a n b 2n c m n, m 0} L29 = {(ab) n n 0} L30 = {a n b m c 2n+m n, m 0} L31 = {a n b n a m b m n, m 0} L32 = {(ab) cd(aa) + } = L33 بر روی {1,3,8} = Σ تمام اعدادی را تولید کند که بر 3 بخش پذیرند. L34 = {a 2n b 2n n 0} = L35 تمام اعداد 3 رقمی را تولید کند. L36 = {a n b m c n+m n, m 0} 7- گرامر های زیر چه زبانی را تولید میکنند 1) S SS 2) S asc A A aab 3) S B 4) BaB ab bb S A AbbA aaa aab baa bab 5) S asa bsb aa bb - 5 -
6) S asbb A A bac bc 7) S aa A B B 8) S Aa ASB A aab B abb 9) S bs aa A bba a 10) S A 11) AaA aab baa S 0S1 0A1 A 1A0 10 8- آیا دو گرامر زیر با هم معادل اند چرا 1) S aab ab A aab 2) S asb ab - 6 -
فصل دوم: زبان های منظم Languages( )Regular بخش اول: گرامر منظم Grammer( )Regular 1- برای زبان های زیر گرامر منظم بنویسید. L1 = {w {a, b} (n a (w) n b (w)) mod 3 > 0} {زوج = (w), n b زوج = (w) L2 = {w {a, b} n a {فرد = n L3 = {a n b m m + {زوج = n L4 = {a n b m m + L5 = {a n b m n, m 0} L6 = {a 2n b 2m n, m 0} L7 = {a n b m n 2, m 3} {زوج = (w), n c زوج = (w), n b زوج = (w) L8 = {w {a, b, c} n a {فرد = (w), n b زوج = (w) L9 = {w {a, b} n a L10 = {u w v u, w, v {a, b}, u = v = 2} {فرد = (w) L11 = {w {a, b} n a (w) + n b بخش دوم: پذیرنده متناهی DFA( و )NFA 1- DFA طراحی کنید. رشته هایی که زیر رشته abab داشته باشند. رشته هایی که زیر رشته aaba داشته باشند. رشته هایی که تعداد a ها مضرب 3 باشد. رشته هایی که تعداد زوجی a و تعداد زوجی b داشته باشد. رشته هایی که دارای aa باشد یا دارای bb نباشد. رشته هایی که طولشان فرد و دارای ab نباشد. )1 )2 )3 )4 )5 )6-7 -
7( رشته هایی که در صورتی که دومین نماد رشته از سمت چپ a باشد طول رشته زوج و در صورتی که دومین نماد b باشد حتما زیر رشته aa داشته باشد. 8( رشته هایی که در آن ها bb باشد و طول رشته زوج باشد. 9( رشته هایی که در صورت وجود ab طول رشته زوج باشد. 10( رشته هایی با دقیقا 2 تا a و بیشتر از 2 تا b. 11( رشته هایی که در آن ها اگر تعداد a ها زوج بود تعداد b ها مضرب 3 باشد. 12( تعداد baa در آن ها زوج باشد. {vwv v, w {a, b}, v = 2} )13 14( رشته هایی که در صورت وجود bb طول رشته زوج وگرنه شامل ba باشد. 15( رشته هایی که تعداد زوجی صفر یا دقیقا 2 تا یک داشته باشند. 16( رشته هایی که تعداد baa در آن ها زوج باشد. 17( رشته هایی که تعداد aab در آن ها زوج باشد. 18( رشته هایی که حداقل 2 تا a و تعداد زوجی b داشته باشد. 19( رشته هایی که دقیقا 4 تا صفر و حداقل 2 تا یک داشته باشند. {w {a, b} n a (w) mod 2 > n a (w) mod 3} )20 21( رشته هایی که اگر تعداد a ها در رشته فرد بود به b ختم شود. 22( طول رشته فرد باشد و تعداد زوجی a داشته باشد. 23( طول رشته زوج باشد و تعداد b مضرب 3 باشد داشته باشد. {w {a, b} n a (w) mod 3 > n b (w) mod 3} )24 {w {a, b} (n a (w) n b (w)) mod 3 > 0} )25 26( رشته هایی که تعداد aba در آن ها زوج باشد. الف( با در نظر گرفتن هم پوشانی. ب( بدون در نظر گرفتن هم پوشانی. 27( رشته هایی که در آن ها تعداد a ها زوج و تعداد b ها زوج و تعداد c ها زوج باشد. {w {a, b} n a (w) + 2n b (w) mod 3 < 2} )28-8 -
29( رشته هایی که در آن ها طول هر دنباله از a ها 2 و یا 3 باشد. 30( رشته هایی که در آن ها حداکثر دو دنباله از a به طول 3 وجود داشته باشد. 31( رشته هایی شامل a و b که در آنها سمت چپ ترین عالمت با سمت راست ترین عالمت متفاوت باشد. 32( رشته هایی که در صورت زوج بودن دارای ab باشند و در صورت فرد بودن bb نداشته باشند. 33( رشته هایی که به 1101 ختم شوند. 2- NFA طراحی کنید. 1( رشته هایی که تعداد ab و ba در آن ها زوج باشد. )با در نظر گرفتن هم پوشانی( 2( رشته هایی که در آن ها دو نماد سمت چپ با دو نماد سمت راست یکسان باشد. 3( رشته هایی که در صورت وجود aa دارای bb هم باشد. 4( رشته هایی که شامل aa و bb باشد یا شامل هیچ یک نباشد. 5( رشته هایی که سومین حرف از اول و آخر رشته b باشد. 6( رشته هایی که در آن ها سه نماد سمت راست رشته یکسان باشد و با چپ ترین نماد متفاوت باشند. 7( رشته هایی که در آن ها سومین نماد از سمت چپ با سومین نماد از سمت راست متفاوت باشد. 8( رشته هایی که در هر زیر رشته به طول 4 دقیقا یک b داشته باشد. {c Σ =,a},b 9( رشته هایی که در هر زیر رشته به طول 4 حداقل یک b داشته باشد. {c Σ =,a},b 10( رشته هایی که سومین حرف از انتهای رشته a باشد. 11( رشته هایی که با ab شروع یا با ba پایان یابند. 3- NFA را به DFA تبدیل کنید. )1-9 -
)2 )3 )4 4- DFA را به DFA مینیمال تبدیل کنید. )1-10 -
)2 )3 )4-11 -
)5 4- DFA زیر چه زبانی را پذیرش می کند بخش سوم: عبارت منظم Expression( )Regular برای زبان های زیر عبارت منظم بنویسید. تعداد زوج a و تعداد زوج b داشته باشد. -1 )1 2( تعداد زوج a یا تعداد فرد b داشته باشد. 3( تعداد زوج a و تعداد فرد b داشته باشد. 4( طول رشته زوج و دارای دقیقا یک a. )5 تعداد فردی زیر رشته ab رخ دهد. c} Σ = {a, b, 6( رشته هایی که aab داشته باشد و طول رشته زوج باشد. 7( طول رشته زوج و دارای دقیقا 3 تا b. 8( رشته هایی که دقیقا دو تا b دارند. - 12 -
9( رشته هایی که تعداد زوج b دارند. 10( رشته هایی که با aaa شروع نشود. 11( رشته هایی که شامل aaa نباشد. 12( رشته هایی که شامل aa نباشد. 13( رشته هایی که در آن زیر رشته aa دقیقا یک بار رخ دهد. 14( رشته هایی که شامل aba باشد و طول رشته فرد باشد. 15( رشته هایی که در هر زیر رشته به طول 4 دقیقا یک b وجود داشته باشد. رشته هایی که در هر زیر رشته به طول 4 حداقل یک b وجود داشته باشد. )16 17( رشته هایی که در هر زیر رشته به طول 4 حداکثر یک b وجود داشته باشد. 18( رشته هایی که در آن سه نماد سمت راست یکی باشند و با نماد سمت چپ تفاوت داشته باشند. 19( طول رشته فرد و دارای دقیقا 2 تا b. 20( تعداد a ها زوج و تعداد b ها زوج. )21 بر روی )}, (,.,, +, {a Σ = عبارت منظمی بنویسید که تمام زبان های منظم متناهی قابل تعریف بر روی {a} را تولید نماید. )در عبارت منظمی که می نویسید دور عملگر ها خط بکشید تا با اشتباه نشود( بخش چهارم: تبدیل )Convert( 1- گرامر های منظم را به DFA تبدیل کنید. 1) S aba A bab B aa bb 2) S ab bc B as bb C ab bs - 13 -
2- NFA های زیر را به عبارت منظم تبدیل کنید. )1 )2 )3 3- یک گرامر خطی راست برای زبان های زیر بنویسید. L1 = (aab* ab)* L2 = (aaa*b + b)* - 14 -
4- DFA زیر را به گرامر منظم تبدیل کنید. 5- عبارت های منظم را به NFA تبدیل کنید. (ab*aa + bba*ab) )1 (aa* + aba*b*) )2 (ab(a+ab)* (a+aa)) )3 ((a+b)* b (a+bb)*) )4 ((abab)* + (aaa*+b)*) )5 (((aa*)* b)*) )6 ((ab*a*) + ((ab)*ba)) )7 ((aa)* b(bb)* aab) )8 بخش پنجم: ویژگی های زبان های منظم languages( )Properties of Regular اگر زبان L1 نا منظم باشد و L1 L2 منظم باشد آیا الزاما L2 منظم است اگر زبان L1 منظم باشد و L1 L2 منظم باشد آیا می توان گفت L2 نا منظم است زبان L1 و L2 را طوری مثال بزنید که L1 منظم و L2 نا منظم و اجتماع آن ها منظم باشد. برای زبان L3 پذیرنده متناهی قطعی )DFA( طراحی کنید. -1-2 -3-4 L3 = L1 - L2 L1 = ((a* b a*)*) L2 = ((aa)* (bb)* b)* - 15 -
اگر دو زبان L1 و L2 به صورت زیر تعریف شده باشند حاصل L1 L2 را بدست آورید. -5 L1: L2: زبان منظم زبانی است که بتوان برای آن DFA طراحی نمود. هر زبان متناهی یک زبان منظم است زیرا میتوان برای تمام حاالت آن یک NFA طراحی نمود. 6- مشخص کنید کدام یک از زبان های زیر منظم است L1 = {a n b n n > 0} L2 = {w {a, b} n a (w) < n b (w) } L3 = {ww R w {a, b} } L4 = {a n! n 0} - 16 -
L5 = {a n2 n > 0} L6 = {a n عدد اول باشد n} L7 = {a n b m c k k = n + m} L8 = {a n b m c k k > n + m, k 100} L9 = {a n b m c k n + m = 2k + 1, k > 0} L10 = {a n b m n < km, k > 0} L11 = {a n b m c n d k m > k} L12 = {a n ww R b n n 0, w {a, b} } L13 = {u ww R v u, v, w {a, b} + } L14 = {u ww R v u, v, w {a, b} +, u v } L15 = {u ww R v u, v, w {a, b}, u v } L16 = {u w v w R u {a, b} +, v, w {a, b}, u v } L17 = {u w v w R u, w {a, b} +, v {a, b}, u v } L18 = {ww R v v, w {a, b} } L19 = {ww R v v, w {a, b}, w v } L20 = {ww R v v, w {a, b}, w v } L21 = {ww R v v, w {a, b} + } بخش ششم: تصمیم پذیری و لم تزریق Lemma( )Decidable Problems & Pumping 1- با استفاده از لم تزریق ثابت کنید زبان های زیر نا منظم اند. L1 = {ww R w {a, b} } L2 = {a n b m n m Z} L3 = {ww w {a, b} } L4 = {a n2 n > 0} L5 = {a n b m n m} - 17 -
L6 = {a n b n n 0} L7 = {a n! n > 0} L8 = {a n b m n m} L9 = {w {a, b} n a (w) n b (w)} L10 = {a n b m a k k n + m} L11 = {a 2n n > 0} 2- نشان دهید زبان های زیر منظم هستند. L1 = {v w v v, w {a, b}, v = 2} L2 = {a n n 0, n 4} نشان دهید اگر L منظم باشد آنگاه {λ} L نیز منظم است. آیا زبان زیر منظم است چرا -3-4 L = {ww R v v, w {a, b} + } الگوریتمی شرح دهید که با توجه به گرامر منظم G بتواند تشخیص دهد که L(G)= * می باشد یا خیر. زبان منظم L مفروض است. الگوریتمی برای ساخت زبان L2 ارائه دهید. به طوری که L2 تمام پیشوند های ممکن از رشته های زبان L را داشته باشد. زبان های منظم L1 و L2 را داریم. آیا می توان بررسی کرد که رشته ای در L2 وجود دارد که پیشوندی از حداقل یکی از رشته های L1 است آیا می توان بررسی کرد که در L1 رشته ای هست که پیشوند آن در L2 باشد الگوریتم تساوی دو زبان را بیان کنید. الگوریتمی ارائه دهید که تشخیص دهد آیا یک زبان دلخواه منظم بر روی {b Σ{a, دارای رشته ای به طول زوج می باشد یا خیر. -5-6 -7-8 -9 و L2 الگوریتمی برای تعیین اینکه آیا w L1 L2 10 -نشان دهید برای هر w هست یا خیر وجود دارد. و هر زبان منظم L1 نشان دهید برای هر زبان منظم و L1 الگوریتمی برای تعیین اینکه آیا L2 L2 هست وجود L1-11 دارد. - 18 -
λ L نشان دهید برای هر w و هر زبان منظم L الگوریتمی برای تعیین اینکه آیا هست یا خیر -12 وجود دارد. L = L R هست یا خیر ارائه دهید. 13 -الگوریتمی برای اینکه برای هر زبان منظم آیا L1=L2.L3 14 -الگوریتمی ارائه دهید که با داشتن سه زبان منظم L1 و L2 و L3 تعیین کند آیا هست یا خیر. سواالت چهار گزینه ای 1- پذیرنده قطعی متناهی مطابق شکل زیر مفروض است. گرامر هم ارز این پذیرنده کدام است 1) A ba ab B bb ac C bc aa a 2) A ba ab B bb ac C bc aa 3) A abacaa b B acaaab b C aaabac b 4) A ba ab B bb ac C bc aa زبان } bbb, L = {λ, a, aa, aaa,, b, bb, معادل کدام یک از عبارت های منظم زیر است -2 (ab)* )4 (a*+b*)* )3 a*+b* )2 (a+b)* )1-19 -
3- گرامر زیر را در نظر بگیرید کدام یک از رشته های زیر توسط این گرامر تولید میشود S 1A A 0B 1 B 0 1S 10110100 101101101111 1010010100 101101101100 )1 )2 )3 )4 1) L = {a n b m n, m 1} 2) L = {a 2n b 2m+1 n, m 0} 3) L = {a 2n b 2n+1 n 1 } 4) L = {a n b 2n n 1 } کدام زبان زیر معادل عبارت منظم (aa)* (bb)* b میباشد کدام یک از گزاره های زیر همواره صحیح نیست اگر G یک گرامر خطی باشد L(G) یک زبان منظم است. هر عبارت منظم را میتوان به کمک یک DFA نشان داد. زبان پذیرفته شده توسط یک NFA یک زبان منظم است. یک زبان منظم را میتوان همواره به کمک عبارت منظم نمایش داد. -4-5 )1 )2 )3 )4 L1 L2 فرض کنید {01,1} = L1 و {011,11,01} = L2 باشند در این صورت تعداد اعضای کدام -6 است 6 )4 5 )3 4 )2 3 )1 گرامر زیر را در نظر بگیرید کدام یک از عبارت های منظم زیر زبان تولید شده توسط این گرامر را نشان میدهد -7 S as ba A ba b aa bb )4 a bbb )3 a + b + )2 a b )1-20 -
8- اشتراک زبان های (a+b)* a و (a+b)* b برابر است با: ab (a+b)* )4 b (a+b)* a )3 (a+b)* ab )2 a (a+b)* b )1 پذیرنده متناهی نا معین زیر را در نظر بگیرید. کدام میشود یک از رشته های زیر توسط این ماشین پذیرش -9 01110 )4 10010 )3 01001 )2 00 )1 (0+01)* 10- کدام عبارت منظم همه رشته هایی که شامل تعداد زوجی 0 باشند را تولید میکند )4 (1+01*0)* )3 (0+010)* )2 (1+00)* )1 4( هر سه مورد 11- کدام گزینه معادل با عبارت منظم (ab)* a میباشد a* (ba)* )3 a* (ba) )2 a (ba)* )1 12- فرض کنید x و y و z و u چهار رشته متعلق به مجموعه {c,a},b باشند. کدام گزینه غلط است (ax) R = x R a )2 (xy) R = x R y R )1 (uxyz) R = (yz) R (ux) R )4 (xyz) R = z R y R x R )3 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12-21 -
فصل سوم: زبان های مستقل از متن Languages( )Context Free بخش اول: گرامر مستقل از متن )CFG( 1- برای زبان های زیر گرامر مستقل از متن بنویسید. L1 = {a n b m n m 1} L2 = {a n b m n m + 3} L3 = {a n b m n 2m} L4 = {a n b m 2n m 3n} L5 = {vwv v, w Σ = {a, b}, v = 2} L6 = {w {a, b} w = 2k + 1, bb w} L7 = {w {a, b} n a (w) n b (w)} L8 = {w {a, b} n a (w) = 2 n b (w) + 1} L9 = {w {a, b, c} w = 3 n a (w) } L10 = {a n b m c k n + 2m = k} L11 = {a n b m c k n + m = k} L11 =? L12 = {a n ww R b n w {a, b}, n 1} L13 = {w R w w {a b}} L14 = {ww w {a b}} L15 = {u v w v R u, v, w {a, b}, u = w = 2} L16 = {ww R w {a, b} } L16 =? L17 = {a n b n a m b m n, m 0} L18 = {(ab) n (cd) n n 0} L19 = {a i b j c j+2 d k e i+k i, j, k 0} L20 = {a n b j a k b l n k, j l} L21 = {a n b n a m b m n, m 0} L22 = {a n b m c k k = n m } - 22 -
L23 = {a n ww R b n n 0, w {a, b} } L24 = {a n b j a k b l n + j k + l} 2- تمامی مراحل ساده سازی گرامر را روی گرامر زیر انجام دهید. S abcd DDa bbd A aac AcA AD B BC AaB CAaa C CC Cc ABA BC D adad baba baba 3- قوانین نا مطلوب را از گرامر های زیر حذف کرده و سپس به فرم نرمال چامسکی تبدیل کنید. 1) S a aa B C A ab B Aa C ccd D ddd 2) S A B BS a A AaB AF B bb B F af FD D add Fa 3) S asaa A ba b A 4) S abs b - 23 -
5) S abab A bab B BAa A 6) S ABa A aab B Ac 7) S Aa B A a bc B A bb B 4- قوانین نا مطلوب را از گرامر های زیر حذف کرده و سپس به فرم نرمال چامسکی و گرینباخ تبدیل کنید. 1) S aa abb A aaa B bb bbc C B 2) S Aa BaC DS da A BCA aa cd B cd BSc A a C ca DSa bbc D ad bd cd dd E ca ce b - 24 -
3) S asb 4) S B bba ab AB ab A aab 5- قوانین نا مطلوب را از گرامر های زیر حذف کرده و سپس به فرم نرمال گرینباخ تبدیل کنید. 1) S absb 2) S ABb a A aaa B B bab 3) aa S asb as aas bb 4) S asb bsa a b بخش دوم: پذیرنده پشته ای غیر قطعی )NPDA( 1- مشخص کنید کدام یک از زبان های زیر مستقل از متن هستند. سپس برای آن ها NPDA بکشید. L1 = {a n b n n 0} L2 = {ww R w {a, b} } L3 = {a n b n+m c m n, m 0} L4 = {a n+m b n c m n, m 0} L5 = {a n b 2n n 0} - 25 -
L6 = {a 2n b n n 0} L7 = {a n b m n > m} L8 = {a n b m n < m} L9 = {a n b m n m} L10 = {a n b m c 2n+m n, m 0} L11 = {a m b k c n n + m > k} L12 = {a n b j c m n > m, j < m} L13 = {a 3n b 2n n 0} L14 = {w {a, b} n a (w) = n b (w)} L15 = {w {a, b} n a (w) = 2 n b (w)} L16 = {w 1 cw 2 w 1, w 2 {a, b} R, w 1 w 2 } L17 = {w {a, b} 2 n a (w) = 3 n b (w)} L18 = {w {a, b, c} n a (w) + n c (w) = n b (w)} L19 = {ab (ab) n b (ba) n n 0} L20 = {w {a, b} n a (w) n b (w) mod 3 < 2} L21 = {a 3n b 2n a 5n n 0} L22 = {a n b m b k c q n > m, k < q} L23 = {a n b m c k d q n < m, k q} L24 = {a n b n c n n 0} L25 = {a j b i c j i i, j 0, j > i} L26 = {w c w R w {a, b} } L27 = {a n b m n m 3n} L28 = {w {a, b} n a (w) < n b (w)} L29 = {w 1 c w 2 w 1, w 2 {a, b}, w 1 w R 2 } L30 = {(a 2n b 2n ) m c m n, m 0} L31 = {a n b n a m b m n, m 0} - 26 -
L32 = {(ab) n (cd) n n 0} L33 = {a n b 2n c n n 0} L34 = {a i b j c j+2 d k e i+k i, j, k 0} L35 = {a n b j a k b l n k, j l} L36 = {a n b n a m b m n, m 0} L37 = {a n b m c k k = n m } L38 = {a n ww R b n n 0, w {a, b} } L39 = {a n b j a k b l n + j k + l} L40 = {u v w v R u, v, w {a, b}, u = w = 2} L41 = {a n b m a m b n n, m 0} L42 = {a n b m a n b m n, m 0} 2- برای زبان گرامرهای زیر NPDA بکشید. 1) S ABb a A aaa B B bab 2) S aab A bbb B 3) B A S aab A bbb Aa - 27 -
4) S AB aab A a Aa B b بخش سوم: تصمیم پذیری Problems( )Decidable 1- آیا تست تساوی دو زبان مستقل از متن تصمیم پذیر است 2- آیا الگوریتمی وجود دارد که بررسی کند دو زبان مستقل از متن دارای رشته ای به طول K هستند یا خیر 3- آیا الگوریتمی وجود دارد که بررسی کند دو زبان مستقل از متن دارای رشته ای به طول 8 هستند یا خیر 4- آیا الگوریتمی وجود دارد که بررسی کند در یک زبان مستقل از متن رشته ای به طول K وجود دارد یا خیر 5- فرض کنید L1 یک زبان مستقل از متن و L2 یک زبان منظم باشد آیا الگوریتمی وجود دارد که بررسی کند L1 و L2 عضو مشترک دارند یا خیر 6- آیا الگوریتمی وجود دارد که مشخص کند زبان تولید شده توسط یک گرامر مستقل از متن شامل کلماتی با طول کمتر از n می باشد یا خیر 7- نشان دهید خانواده ی زبان های مستقل از متن قطعی تحت اجتماع و اشتراک بسته نیستند. 8- زبان مستقل از متنی مثال بزنید که متمم آن مستقل از متن نیست. 9- دو زبان منظم L1 و L2 مفروض است. الگوریتمی ارائه دهید تا تشخیص دهد آیا بی نهایت رشته وجود دارد به نحوی که هر رشته فقط عضو یکی از زبان ها باشد 10- الگوریتمی ارائه دهید تا تشخیص دهد آیا رشته ای در زبان منظم L2 وجود دارد که متقارن باشد و طول زوج داشته باشد به نحوی که همه prefix های آن رشته در زبان منظم L1 موجود است. 11- آیا الگوریتمی وجود دارد که بررسی کند دو زبان مستقل از متن دارای رشته ای به طول یکسان هستند یا خیر 12- اگر L1 زبانی مستقل از متن و L2 زبانی منظم باشد آیا الگوریتمی وجود دارد که تشخیص دهد 1 L = 2 L می باشد یا خیر 13- اگر G گرامر مستقل از متن باشد آیا الگوریتمی وجود دارد که تشخیص دهد هست یا خیر - 28 -
14- اگر G1 و G2 گرامرهای مستقل از متن باشند آیا الگوریتمی وجود دارد که تشخیص دهد L(G1)=L(G2) میباشد یا خیر زبان مستقل از متن زبانی است که بتوان برای آن گرامر مستقل از متن نوشت. 15- نوع زبان های زیر را مشخص کنید. )منظم مستقل از متن هیچکدام( L1 = {a n b n 0 n 100} L2 = {w {a, b} n a (w) < n b (w) } L3 = {a n! n 0} L4 = {a n عدد اول باشد n} L5 = {a n b m c k k = n + m} L6 = {a n b m c k k > n + m, k 100} L7 = {a n b m c k d n m > k} L8 = {a n b m c n d k m > k} L9 = {a n ww R b n n 0, w {a, b} } L10 = {a n b j a k b m n + j k + m} L11 = {ww R v v, w {a, b} } L12 = {ww R v v, w {a, b}, w v } L13 = {ww R v v, w {a, b}, w v } L14 = {ww R v v, w {a, b} + } L15 = {u w v w R u {a, b} +, v, w {a, b}, u v } L16 = {u w v w R u, w {a, b} +, v {a, b}, u v } L17 = {a n b m a m b n n, m 0} L18 = {a n b m a n b m n, m 0} L19 = {a n b m b n c m n, m 0} L20 = {a n b m d m c n n, m 0} - 29 -
فصل چهارم: زبان های بازگشتی و بازگشتی شمارا )Recursively Enumerable and Recursive Languages( بخش اول: ماشین تورینگ Machine( )Turing 1- برای زبان های زیر ماشین تورینگ بکشید. L1 = (a b a* b) {زوج = w L2 = {w {a, b} L3 = {a n b n c n n 0} L4 = {ww R w {a, b} } L5 = {w {a, b} n a (w) = n b (w)} L6 = {w {a, b} n a (w) = 2 n b (w)} L7 = {ww w {a, b} + } L8 = {w c w w {a, b} + } L9 = {w {a, b} n a (w) n b (w)} L10 = {a n b n+m c m n, m 0} L11 = {a n b m c n+m n, m 0} L12 = {a n b m c n m n, m 0} L13 = {a n b m c k k = n } m L14 = {a n2 b n n 0} L15 = {a n b n2 n 0} L16 = {a n b m n, m > 0, n m } L17 = {a 2n n 0} L18 = {a n b 2n n 0} L19 = {a 2n b n n 0} L20 = {a 2n b 2n n 0} - 30 -
L21 = {a 2n b n c 2n n 0} L22 = {a 2n b n n > 0} L23 = {a n b 2n n > 0} L24 = {a n b n c n d n n 0} L25 = {a n! n 0} 2- ماشین تورینگی طراحی کنید که بتواند به یک عدد باینری مثبت که روی نوار آن ذخیره شده است یک واحد اضافه کند. ماشین باید بتواند در صورت نیاز طول قالب را افزایش دهد به عنوان مثال اگر رشته ورودی 111 باشد خروجی 1000 را تولید کند. بخش دوم: تصمیم پذیری Problems( )Decidable 1( اگر M ماشین تورینگ باشد آیا الگوریتمی وجود دارد که تشخیص دهد = L(M) میباشد یا خیر و )2 اگر M 1 M 2 ماشین تورینگ باشند آیا الگوریتمی وجود دارد که تشخیص دهد ) 2 L(M 1 ) = L(M میباشد یا خیر 3( اگر M ماشین تورینگ باشد آیا الگوریتمی وجود دارد که تشخیص دهد L(M) منظم میباشد یا خیر 4( اگر L زبانی بازگشتی باشد آیا الگوریتمی وجود دارد که تشخیص دهد = L میباشد یا خیر 5( اگر L زبانی بازگشتی باشد آیا الگوریتمی وجود دارد که تشخیص دهد w L میباشد یا خیر 6( آیا شمارا بودن اعضای یک زبان به معنی بازگشتی شمارا بودن آن است 7( آیا میتوان برای پذیرش هر زبان منظم یک NPDA با حداکثر دو حالت طراحی نمود 8( آیا مجموعه همه زبان های مستقل از متن قابل تعریف بر روی یک الفبا شماراست 9( آیا مسئله توقف تورینگ تصمیم پذیر است 10( آیا زبان هر NPDA با حداکثر دو حالت زبان منظم است 11( آیا مجموعه همه زبان هایی که برای پذیرش آن ها تورینگی وجود ندارد شماراست 12( آیا تعداد NPDA های قابل ساخت بر روی یک الفبای مشخص شماراست 13( آیا متمم هر زبان بازگشتی شمارا یک زبان بازگشتی شماراست 14( آیا هر زیر مجموعه دلخواه از مجموعه توانی یک مجموعه نامتناهی شمارا شماراست 15( آیا مجموعه همه زبان های منظم قابل تعریف بر روی یک الفبا شماراست 16( آیا مسئله تست تساوی دو زبان مستقل از متن تصمیم پذیر است - 31 -
نوع زبان هر یک از موارد زیر را مشخص کنید. )17 {مجموعه همه زبانهای منظم} = L1 {مجموعه همه تورینگ های قابل تعریف} = L2 L3 = {a n b m c k n < k < m} L4 = {a n b m c k k = n } m L5 = {a n b n n 0}. L(a+b)* L6 = {ww R w mod 3 = 0} L7 = {ww R w R w w {a, b} + } L8 = {ww w = uu R, u, w {a, b} } L9= {a n b m n < km, k > 10} - 32 -
پنجم: فصل نکته های کلیدی Points( )Important الگوریتم کمینه سازی DFA 1- حذف State هایی که از آن ها به q0 مسیر وجود ندارد. مجموعه ای به اسم S ایجاد میکنیم که دو عضو دارد که هر کدام یک مجموعه هستند. یک مجموعه شامل State های پذیرش و دیگری شامل State های غیر پذیرش. -2 S پر میکنیم. S = {{q 0, q 1, q 2, q 3 }, { q 4 } S 0 S 1 } 3- برای هر مجموعه جدولی میکشیم. ستون های خاکستری رنگ را با توجه به مجموعه S 0 a b a b q 0 q 1 q 3 S 0 S 0 q 1 q 2 q 4 S 0 S 1 q 2 q 1 q 4 S 0 S 1 q 3 q 2 q 4 S 0 S 1 S 1 a b a b q 4 q 4 q 4 S 1 S 1 4- با توجه به ستون های خاکستری مشاهده میشود که سه حالت مختلف )سه زوج مرتب منحصر بفرد( به وجود میآید. - 33 -
حال اعضای هریک از سه دسته باال تبدیل به یک عضو از مجموعه S ما خواهد شد. S = {{ q 0 }, {q 1, q 2, q 3 }, { q 4 } S 0 S 1 S 2 } مرحله 3 5- را برای اعضای مجموعه جدید تکرار میکنیم. S 1 a b a b q 0 q 1 q 3 S 1 S 1 S 0 a b a b q 1 q 2 q 4 S 1 S 2 q 2 q 1 q 4 S 1 S 2 q 3 q 2 q 4 S 1 S 2 S 1 a b a b q 4 q 4 q 4 S 2 S 2 S = {{ q 0 }, {q 1, q 2, q 3 }, { q 4 } S 0 S 1 S 2 } این کار را تا جایی ادامه میدهیم که دیگر مجموعه ها قابل تجزیه نباشند. سپس به تعداد اعضای مجموعه S باید State بکشیم. State شروع در هر مجموعه باشد آن را شروع میکنیم. و همین طور در مورد State پذیرش. -6-34 -
الگوریتم تبدیل NFA به DFA 1- ابتدا برای NFA جدول transition های آن را مینویسیم. q 0 q 1 q 2 q 3 a q 0, q 1 q 2, q 3 q 2, q 3 b q 0 q 3 q 1, q 2, q 3 q 3 سپس از q0 2- شروع کرده به ازای هر transition یک State ایجاد میکنیم. 3- سپس State هایی که در آن ها State پذیرش وجود دارد را پذیرش میکنیم. - 35 -
الگوریتم اشتراک دو زبان منظم 1- برای بدست آوردن اشتراک دو زبان منظم L1 و L2 برای آن ها DFA میکشیم. سپس باید DFA متمم زبان های L1 و L2 را بدست آوریم. به این منظور جای State های پذیرش و -2 غیر پذیرش را عوض میکنیم. 3- سپس اجتماع دو DFA را بدست میآوریم. - 36 -
4- سپس NFA بدست آمده را تبدیل به DFA کرده: 5- و در آخر متمم آن را بدست میآوریم: به طور خالصه برای محاسبه اشتراک دو زبان منظم طبق قانون دمورگان داریم: L 1 L 2 = (L 1 L ) 2-37 -
الگوریتم تبدیل گرامر مستقل از متن به NPDA 1- یک NPDA با سه State به شکل زیر میکشیم. با توجه به گرامر مورد نظر به ازای هر قانون در گرامر یک transition مینویسیم که با خواندن λ از رشته ورودی متغیر سمت چپ گرامر را از باالی پشته pop کند و قانون سمت راست آن را در پشته push کند. -2 S asa A A aab 3- با توجه به گرامر مورد نظر به ازای هر پایانه موجود در الفبای زبان گرامر یک transition مینویسیم که با خواندن کاراکتر از رشته ورودی آن کاراکتر را از باالی پشته pop کند و λ را در پشته push کند. - 38 -
- 39 -
سلسله مراتب چامسکی - 40 -