تالار گفتمان مانشت
گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند - نسخه‌ی قابل چاپ

گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند - sajad2010 - 02 دى ۱۳۹۱ ۰۴:۳۶ ب.ظ

گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند رو میخواستم!
ممنون!

گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند - Jooybari - 02 دى ۱۳۹۱ ۱۱:۵۲ ب.ظ

سلام. یکم روش کار کنید. abbba و bbaaabb رو قبول نمیکنه.

RE: گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند - Somayeh_Y - 03 دى ۱۳۹۱ ۰۹:۴۰ ق.ظ

سلام
اینم گرامری هست که من برای این زبان نوشتم

[tex]S\rightarrow ASB/a/b[/tex]
[tex]A\rightarrow abA/baA/aA/BA/\lambda[/tex]
[tex]B\rightarrow bB/AB/\lambda[/tex]

توضیحات
-اگر در رشته نهایی تعداد a بیشتر بود، در خط اول برای برداشتن S و رفتن به خط های بعدی گرامر از a استفاده می کنیم اگر b بیشتر بود از b
-متغییر A برای تولید a در نظر گرفته شده و متغییر B برای تولید b ( حالاتی که تعدادی ab و یا ba پشت سرهم در رشته نهایی داریم، از متغییر A برای تولید این حالات استفاده می شود)

-با قواعد
[tex]A\rightarrow BA[/tex]
و
[tex]B\rightarrow AB[/tex]

بین دو خط آخر گرامر سوئیچ می کنیم و هرجانیاز باشه a کوچک یا b کوچک تولید می کنیم.

RE: گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند - azad_ahmadi - 03 دى ۱۳۹۱ ۰۱:۳۹ ب.ظ

(۰۲ دى ۱۳۹۱ ۱۱:۵۲ ب.ظ)Jooybari نوشته شده توسط:  سلام. یکم روش کار کنید. abbba و bbaaabb رو قبول نمیکنه.

abbba رو قبول می کنه. اما دومی رو نه.
فعلا پاک می کنم تا بعد دوباره ویرایش کنم.
ممنون.

گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند - Jooybari - 03 دى ۱۳۹۱ ۰۷:۴۸ ب.ظ

روش آقای احمدی درست بود ولی یکم توی پیاده سازی روش مشکل داشت.

[tex]S\to AaA|BbB[/tex]
[tex]A\to AA|aAb|bAa|aA|\lambda[/tex]
[tex]B\to BB|aBb|bBa|bB|\lambda[/tex]


گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند - azad_ahmadi - 04 دى ۱۳۹۱ ۱۰:۴۱ ب.ظ

سلام.

ممنون. اول فکر می کردم bbaaabb رو تولید نمی کنه، اما روش تولیدش ۸ خان رستمه.Big Grin
s---> BbB ---> bB ---> bBB ---> bbBaB ---> bbaB ---> bbaaBb ---> bbaaaBbb ---> bbaaabb

دمت گرم، اینو از کجا آوردی SmileSmile

گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند - Jooybari - 05 دى ۱۳۹۱ ۰۳:۰۰ ق.ظ

چون قرار بود تعداد a و b حداقل یکی اختلاف داشته باشن، دوتا غیرپایانه A و B تعریف کردم. توی A تعداد a ها کمتر از b ها نیست و B هم تعداد b ها کمتر از a ها نیست. اون a یا b اضافه هم برای اون حداقل اختلافه. و باید درنظر بگیرید که اگه از A->AA استفاده نکنید توی تولید رشته هایی که هم با b شروع میشن و هم به b ختم میشن به مشکل میخورید. درضمن اگه تعداد a ها با b های A و B نتونن برابر باشن، وقتی از A->AA استفاده میکنید توی پذیرش رشته های با اختلاف ۱ به مشکل میخورید.

گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند - csharpisatechnology - 30 دى ۱۳۹۱ ۰۳:۰۹ ب.ظ

من فکر می کنم اگه a ها و b ها برابر نباشند و w عضو *(a,b) باشه، L نه منظم هست نه مستقل از متن.
DFA که نمیشه رسم کرد مشخصه.
PDA رو واسه این شک دارم که نمیشه رسم کرد که برای بررسی بزرگتر یا کوچکتر بودن تعداد a و b نسبت به هم باید حافظه ی بی شمار داشت.
زیرا مثلا ممکنه بشه گفت تعداد a ها یکی بیشتر از b ها باشه ولی وقتی تعداد a و b متغیر هست ممکنه مثلا ۲ یا ۳ یا ۴ یا .... تا a از b بیشتر داشته باشیم یا برعکس.
و چون شرط ثابتی نداریم کار شدنی نیست.البته به نظر من با یک پشته این کار امکان پذیر نیست.
به نظرم متناقض هست و مثال های جزئی ای که دوستان میزنند به کل مقدم نیست.

گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند - Jooybari - 30 دى ۱۳۹۱ ۰۵:۳۷ ب.ظ

به نظر من مستقل از متنه. یه گرامر براش نوشتم. اگه گرامرش رشته ای رو تولید نمیکنه یا اشتباه تولید میکنه بگید.

گرامر مستقل از متن برای رشته هایی از a و b که تعداد a و b ها در آن برابر نباشند - equilibrium - 30 دى ۱۳۹۱ ۰۸:۲۱ ب.ظ

یه راه اینه که دو حالت بشه؛ یکی n_a>n_b و یکی بالعکس؛ بعد میشه واسه هر حالت جداگونه یه مستقل از متن نوشت؛ مثلا برای اولی:
[tex]S1\rightarrow aS_1|aS|SS_1[/tex]
که S همون n_a=n_b رو تولید میکنه:
[tex]S\rightarrow aSb|bSa|SS|\lambda[/tex]
برای دومی هم کافیه تو خط اول به جای S_1 بزارید S_2 و به جای a هم b؛
جواب نهایی اجتماع این دو حالت میشه:
[tex]A\rightarrow S_1|S_2[/tex]

(۳۰ دى ۱۳۹۱ ۰۳:۰۹ ب.ظ)csharpisatechnology نوشته شده توسط:  PDA رو واسه این شک دارم که نمیشه رسم کرد که برای بررسی بزرگتر یا کوچکتر بودن تعداد a و b نسبت به هم باید حافظه ی بی شمار داشت.
چک کردن این حالت کارو سخت میکنه؛ بهتره فقط مراقب حالت تساوی باشید؛ یعنی اگه بالای پشته z بود و ورودی تا آخر پردازش شده، ماشین در حالت غیر پایانی قرار داشته باشه؛ مثلا از q0 و z بالای پشته شروع کنید و اولین سمبل ورودی رو پوش کنید؛ بعد از اون به ازای سمبلهای یکسان در ورودی و بالای پشته، یکی به اون سمبل در پشته اضافه، و به ازای سمبل ورودی و پشته مخالف، landa پوش کنید؛ در آخر اگه ورودی تموم بشه (لاندا) و بالای پشته a یا b باشه، برید به qf، در غیر اینصورت (یعنی بالای پشته نه a و نه b یعنی لاندا باشه) در همون q0 که غیر نهاییه میمونه؛