راهنمایی در مورد حل گرامر ها - نسخهی قابل چاپ |
راهنمایی در مورد حل گرامر ها - jafar.sh - 05 آذر ۱۳۹۱ ۰۹:۳۴ ب.ظ
با سلام بر دوستان عزیز من ۲ تا سئوال داشتم در مورد گرامر ها: لطفا به صورت خیلی ابتدائی و ساده توضیح بدید؟؟؟ سئوال ۱ گرامر مستقل از متنی بنویسید که زبان *(ab) را تولید کند؟؟ سئوال ۲ برای زبان زیر یک گرامر بنویسید؟؟ L=((ab)^+) a^*+ landa هر کدام را که بلد بودید لطفا به صورت صفر کیلومتری راهنمایی کنید؟ در ضمن اگر جای بدی تایپیک زدم:به من بگید که دقیقا کجا باید سئوالم را مطرح کنم(لینک بدید!) سپاس |
RE: راهنمایی در مورد حل گرامر ها - nasi1391 - 05 آذر ۱۳۹۱ ۰۹:۴۵ ب.ظ
[tex](ab)^ a^* \lambda[/tex] (۰۵ آذر ۱۳۹۱ ۰۹:۳۴ ب.ظ)jafar.sh نوشته شده توسط: با سلام بر دوستان عزیز سوال شماره دوم شما اینه ؟ [tex](ab)^ a^* \lambda[/tex] |
راهنمایی در مورد حل گرامر ها - jafar.sh - 05 آذر ۱۳۹۱ ۰۹:۴۸ ب.ظ
بله:هیمنه:لطفا یکم ساده توضیح بده!! سپاس |
RE: راهنمایی در مورد حل گرامر ها - javadem - 05 آذر ۱۳۹۱ ۱۰:۱۱ ب.ظ
(۰۵ آذر ۱۳۹۱ ۰۹:۳۴ ب.ظ)jafar.sh نوشته شده توسط: با سلام بر دوستان عزیزببینید خیلی ساده اند! سوال اول باید به تعداد نا مشخص ab رو تولید کنه! پس مینویسیم [tex]S\rightarrow Sab[/tex] این یعنی اینکه هر بار یه ab به تعداد نا مشخص تکرار کن! S سمت چپ برای ایجاد حلقه است! و از اونجایی که به دلیل وجود استار میشه رشته تهی هم داشت پس یه قانون [tex]S\rightarrow \lambda[/tex] هم اضافه میکنیم که در کل میشه : [tex]S\rightarrow Sab | \lambda[/tex] و اما سوال دوم : خوب حالا واسه گرامر ما باید ۲ فاز جدا داشته باشیم که یکی abها رو تولید کنه و یکی هم aها رو(که هر دو اینها به تعداد نا مشخصند فقط abها نمیتونن خالی باشند) برای اینکار مینویسیم [tex]S\rightarrow AB|\lambda[/tex] که در واقع A و B دو فاز فوق الذکرند . حالا قسمت A (به دلیل اون که اولین قسمت رو تولید میکنه باید [tex](ab)^ [/tex] رو تولید کنه که دقیقا همون سوال اوله با این تفاوت که S رو با A جایگذین میکنیم و به جای لامبدا ab قرار میدیم یعنی : [tex]A\rightarrow Aab |ab[/tex]. حالا میریم سراغ قسمت B که باید [tex]a^*[/tex] رو تولید کنه اینم شبیه قسمت A است فقط به جای ab باید a خالی رو بذاریم چون a به تعداد نا مشخص تکرار میشه پ اینم میشه : [tex]B\rightarrow Ba | \lambda[/tex] که در کل گرامر میشه : [tex]S\rightarrow AB|\lambda [/tex] [tex]A\rightarrow Aab |ab[/tex] [tex]B\rightarrow Ba | \lambda[/tex] |
راهنمایی در مورد حل گرامر ها - jafar.sh - 05 آذر ۱۳۹۱ ۱۱:۵۰ ب.ظ
متشکر دوست عزیز: من جواب این سوال هایی را که گذاشتم را دارم: یکم جواب ها مغایرت دارند!! دوستان دیگر اگه نظری دارند لطف کنند بگویند! در ضمن من کتاب سودکمپ را دارم ولی خیلی بد توضیح داده و چیزی نمی فهمم!! ایا شما کتابی دیده ای که روان و ساده همه چیز هایی را که گفته اید: مثل گفتار شما گفته باشد!!! سپاس |
راهنمایی در مورد حل گرامر ها - jafar.sh - 06 آذر ۱۳۹۱ ۱۰:۲۸ ق.ظ
دوستان لطفا تصحیح بفرمائید جواب غلط را!!! |
راهنمایی در مورد حل گرامر ها - jafar.sh - 23 آذر ۱۳۹۱ ۰۴:۳۸ ب.ظ
با سلام بر دوستان عزیز: من دوباره بازگشتم یک سئوال خیلی ساده برای شما دوستان!! فرق *(a+b) با +(a+b) چی هست؟؟ فرق بین [tex]a^{ }b^{ }[/tex] و [tex]a^{*}b^{*}[/tex] چی هست؟؟ سپاس |
راهنمایی در مورد حل گرامر ها - javadem - 23 آذر ۱۳۹۱ ۰۶:۱۷ ب.ظ
*(a+b) میتونه هیچی تولید نکنه اما +(a+b) حداقل باید یا یک a یا یک b تولید کرده باشه(دیگه بعد از این شرط هر تعداد a و b با هر ترتیبی میتونن بیان). اما *a*b میتونه هر تعداد a و b ( حتی هیچی) تولید کنه که aها اول و b ها آخر باشند +a+ b مثل قبلیه فقط حداقل باید یک ab داشته باشیم و دیگه بعد از این شرط تعداد a و b ها هر چیزی میتونه باشه(به صورت مستقل از هم یعنی تعدادشون به هم هیچ ربطی نداره) |
راهنمایی در مورد حل گرامر ها - jafar.sh - 23 آذر ۱۳۹۱ ۰۷:۳۷ ب.ظ
متشکر : من یک چیز هایی فهمیدم ولی لطف کنید یک مثال عددی بزنید تا ابهام از بین بره!! مثلا در مورد +(a+b) : ایا این عبارت میتونه ab را در کنار هم بزاره؟؟؟ یا به صورت جدا میگذارد aو b را: یعنی یا a یا b فقط!!! یا در مورد a+b+ : ایا اگر a^2 b^2 باشد :ایا جواب aabb می شود؟؟؟ سپاس |
راهنمایی در مورد حل گرامر ها - javadem - 24 آذر ۱۳۹۱ ۰۱:۵۰ ق.ظ
ببینید بله کنار هم میزاره. +(a+b) یعنی چسباندن ۱ تا بینهایت a یا b یا هر ۲ بهم بدون رعایت هیچ ترتیبی یعنی تمام شکل های ممکن که میشه a و b به هر تعداد کنار هم بچینیم اما حداقل باید یک a یا یک b رو داشته باشیم(به دلیل +) +a+b به دو قسمت +a و +b تقسیم میشه که +a یعنی هر تعداد a از یک تا بینهایت و +b هم به همین صورت برای b هاست که این مثال برعکس قبلی ترتیبی باید رعایت شه اونم اینه که تمام a ها باید قبل از b ها بیاد. ببین در کل هر جا + یا * بود عبارتی که زیر قلمرو این علامت هست رو بدون توجه به این که دفعه قبلی چه چیزی رو تولید کرده میتونی تولید کنی مثلا *(a+ab+bb) میتونی به هر تعداد که لازم بود a , ab ,bb رو به هر تعداد که لازم باشه استفاده کنی. مثلا تمام رشته های زیر میتونه با این عبارت منظم تولید بشه : (فاصله بین هر زیر رشته واسه اینه که بهتر متوجه شی که کدوم انتخاب شدن) a a a a a a ab bb bb bb ab a bb ab bb a a a bb ab و هر شکلی از که از تر کیب a و ab و bb بشه تولید کرد جزء این زبانه! |
راهنمایی در مورد حل گرامر ها - jafar.sh - 24 آذر ۱۳۹۱ ۱۱:۵۳ ق.ظ
متشکر دوست عزیز: حالا اگه به این صورت باشه چی ؟؟؟ [tex](\left ( a b \right )\left ( a b \right ))^{2} \rightarrow or\rightarrow *[/tex] |
راهنمایی در مورد حل گرامر ها - javadem - 24 آذر ۱۳۹۱ ۰۱:۱۵ ب.ظ
منظورت اینه که یا ۲ یا *؟ اگه اینطوره از اونجایی که ۲ زیر مجموعه * هست پس ۲ رو در نظر نمیگیریم. حالا چون a+b ها ۲تا هستند و به ازای هر کدوم باید حتما یک a یا یک b در نظر بگیریم. از اونجا گه * بالاشونه میشه لاندا رو هم پذیرفت. پس در کل این عبارت تمام ترکیب های زوج از a و b رو میپذیره مثلا رشته های زیر همه مال این زبانند : لاندا aa bb aa ab ab ba aa ba bb bb bb bb و کلا هر ترکیبی که تعداد کل زوج باشه دیگه! اگه منظورتون چیز دیگه ایه روشن کنید اگه بدونم کمک میکنم! |
راهنمایی در مورد حل گرامر ها - jafar.sh - 24 آذر ۱۳۹۱ ۱۱:۲۲ ب.ظ
متشکر : منظور من این بود که روی ان عبارت داخل پرانتز یا ۲ باشد یا * ؟؟؟ فرقی نداره کدام باشد یعنی هر کدامش را جدا تست کنیم !!! |
راهنمایی در مورد حل گرامر ها - javadem - 25 آذر ۱۳۹۱ ۰۳:۵۷ ب.ظ
ببینید اگه ۲ باشه رشته هایی که دقیقا ۲ بار عبارت داخل پرانتز رو داخل خودش داشته باشه حالا عبارت داخل پرانتز میگه انتخاب یک a یا یک b و دوباره انتخاب یک a یا یک b که در کل میشه رشته های با طول فقط چهار که از هر ترکیبی از a, b ساخته شده باشند. یعنی مثلا : aaaa bbbb abab baba bbba abba و ... حالا اگه * بود عبارت داخل پرانتز از صفر یا بیشتر بار باید تکرار شه که میشه همونی که تو پست قبلی توضیح دادم. |