تالار گفتمان مانشت
یکسان سازی - IT89 - نسخه‌ی قابل چاپ

یکسان سازی - IT89 - MSZ - 24 شهریور ۱۳۹۱ ۱۱:۱۶ ق.ظ

در کدام یک از گزینه های زیر، یکسان سازی (Unification) با شکست روبرو می شود؟ (فناوری اطلاعات - ۸۹)

۱) [tex]friends(x,y,z), friends(Ali,Ali,Ali)[/tex]
۲) [tex]knows(y,mother(y)),knows(Ali,x)[/tex]
۳) [tex]group(x,y,mother(x)),group(Ali,Ali,Alice)[/tex]
۴) هیچ کدام

کلید سنجش: گزینه ۴ (هیچ کدام)
یه عده از کتابا: گزینه ۴ (هیچ کدام)
یه عده دیگه از کتابا: گزینه ۳ (دلایل مختلف!)

جواب درست چیه و چرا؟

یکسان سازی - IT89 - MSZ - 24 شهریور ۱۳۹۱ ۰۹:۵۹ ب.ظ

پاسخی نیست آیا؟!!!

RE: یکسان سازی - IT89 - sherkat - 24 شهریور ۱۳۹۱ ۱۱:۰۳ ب.ظ

منم میگم گزینه ۴ .

RE: یکسان سازی - IT89 - equilibrium - 25 شهریور ۱۳۹۱ ۱۲:۴۱ ق.ظ

[tex]friends(x,y,z), friends(Ali,Ali,Ali)[/tex]
[tex]\Theta = \{x/Ali, y/Ali, z/Ali\}[/tex]

[tex]knows(y,mother(y)),knows(Ali,x)[/tex]
[tex]\Theta =\{y/Ali, x/mother(Ali)\}[/tex]

[tex]group(x,y,mother(x)),group(Ali,Ali,Alice)[/tex]
[tex]\Theta =\{x/Ali, y/Ali, mother(Ali)/Alice=fail\}[/tex]
(fail = سمت چپ فقط متغیر)

(۲۴ شهریور ۱۳۹۱ ۱۱:۱۶ ق.ظ)MSZ نوشته شده توسط:  سنجش ...
یه عده از کتابا ...
یه عده دیگه از کتابا ...
کارت درسته !

یکسان سازی - IT89 - MSZ - 25 شهریور ۱۳۹۱ ۰۴:۰۹ ق.ظ

(۲۵ شهریور ۱۳۹۱ ۱۲:۴۱ ق.ظ)Ghiasoddin نوشته شده توسط:  (fail = سمت چپ فقط متغیر)
خوب دلیلش چی هست حالا؟!

(۲۵ شهریور ۱۳۹۱ ۱۲:۴۱ ق.ظ)Ghiasoddin نوشته شده توسط:  کارت درسته !
کوچیکتم داداش...

RE: یکسان سازی - IT89 - Mohammad-A - 25 شهریور ۱۳۹۱ ۱۰:۳۴ ب.ظ

برای این سوال یک ابهام اساسی که وجود داره اینه که آیا [tex]mother(x),\ \ \ x|Ali, \ \ \ mother(Ali)[/tex] تابع هست، متغیر هست یا ثابت؟
مشخصاً ابهام اصلی همینجاست و این حل بشه، تست مشکلش حل میشه.
به نظر من هم (طبق نظر دوستان)، این یه ثابت هست چون قاعدتاً یه خروجی داره، بنابراین میخواهیم یکسان ساز ثابت به ثابت رو انجام بدیم در حالیکه این دوتا یکی نیستند، در نتیجه شکست میخوره...
یه دلیل دیگه هم فکر کنم بشه آورد، در گزینه‌ی دوم که ما گفتیم مشکلی نداره، طبق الگوریتم یکسان‌سازی ابتدا [tex]mother(Ali)|x[/tex] بررسی میشه و چون شکست میخوره، از طرف دیگه چک میکنه که منجر به شکست نمیشه.

حالا درباره ابهامهای این تست امیدوارم بیشتر صحبت بشه

پ.ن: باز ما موندیم و هوش مصنوعی و کلید سنجش!!!
(نظر خود شما درباره‌ی این تست چیه؟)

یکسان سازی - IT89 - MSZ - 25 شهریور ۱۳۹۱ ۱۰:۴۰ ب.ظ

من باز نفهمیدم منظورتون رو!
اصلا دلیل اینکه این شکست میخوره چیه؟

یه مقدار step به step تر بگین معلوم شه. هر سه تا رو یه جا نوشتین من درست متوجه نشدم
سپاس

RE: یکسان سازی - IT89 - equilibrium - 25 شهریور ۱۳۹۱ ۱۱:۳۷ ب.ظ

(۲۵ شهریور ۱۳۹۱ ۰۴:۰۹ ق.ظ)MSZ نوشته شده توسط:  
(25 شهریور ۱۳۹۱ ۱۲:۴۱ ق.ظ)Ghiasoddin نوشته شده توسط:  (fail = سمت چپ فقط متغیر)
خوب دلیلش چی هست حالا؟!
[tex]group(x,y,mother(x)),group(Ali,Ali,Alice)[/tex]
برای یکسان کردن predicate اول و دوم باید هم x و هم y رو با Ali جایگزین کنیم؛ در واقع این تنها راهه چراکه Ali ثابته و نمیتونه با چیزی جایگزین بشه؛ در اینصورت هر دو predicate در دو آرگومان اول مثل هم میشن؛ چون در آرگومان سوم هم یکی نیستند باید [tex]mother(x)[/tex] رو با Alice یکی کنیم که نمیشه؛ چون Alice ثابته و طیق قانون یکسان سازی نمیتونه با چیزی جایگزین بشه؛ از طرفی [tex]mother(Ali)[/tex] (x قبلا با Ali جایگزین شده) یه تابعه که خروجیش یه آبجکته (مادر Ali) و متغیر نیست؛ بنابراین دو تا predicate داده شده نمیتونن یکی بشن؛ اگه مثلا به جای Alice داشتیم z، در اونصورت کافی بود z رو که یه متغیره با [tex]mother(Ali)[/tex] جایگزین کنیم تا هر دو predicate یکی بشن؛

وقتی یکسان سازی مثل [tex]\Theta[/tex] رو تشکیل میدید (پست ۴) سه تا قانون ساده رو باید تست کنید:
- در سمت چپ هر اسلش فقط میتونه متغیر قرار بگیره؛
- یک متغیر در سمت چپ بیش از دو تا اسلش قرار نگیره؛ یعنی یه متغیر بیش از یه مقدار نمیتونه بگیره؛
- و اگه متغیری سمت چپ یه اسلش بود، در سمت راست هیچ اسلشی نباید ظاهر بشه؛ یعنی یه متعیر یا باید مقدار بگیره و یا به متغیری دیگه ای نسبت داده بشه؛ همزمان هردوش نمیشه؛

یکسان سازی - IT89 - MSZ - 26 شهریور ۱۳۹۱ ۰۵:۱۹ ق.ظ

پس الان یه سوال دارم:
بعضی از کتابا گفتن یه تابع رو با یه ثابت نمیشه یکسان سازی کرد
که تو این مورد [tex]mother(x)[/tex] تابع هست و با Alice نمیتونه یکسان سازی بشه.
این حرف درستیه؟
اگر x مقدار نگرفته بود و [tex]mother(x)[/tex] رو فقط داشتیم و [tex]mother(Ali)[/tex] رو دیگه نداشتیم، باز هم این حرف درست بود؟
الان با توجه به این سه تا نکته ای که گفتین، با توجه به کدومش این یکسان سازی شکست خورده؟
(شرمنده همه سوالا رو تو همین یه پست زدم)
(۲۵ شهریور ۱۳۹۱ ۱۱:۳۷ ب.ظ)Ghiasoddin نوشته شده توسط:  
(25 شهریور ۱۳۹۱ ۰۴:۰۹ ق.ظ)MSZ نوشته شده توسط:  
(25 شهریور ۱۳۹۱ ۱۲:۴۱ ق.ظ)Ghiasoddin نوشته شده توسط:  (fail = سمت چپ فقط متغیر)
خوب دلیلش چی هست حالا؟!
[tex]group(x,y,mother(x)),group(Ali,Ali,Alice)[/tex]
برای یکسان کردن predicate اول و دوم باید هم x و هم y رو با Ali جایگزین کنیم؛ در واقع این تنها راهه چراکه Ali ثابته و نمیتونه با چیزی جایگزین بشه؛ در اینصورت هر دو predicate در دو آرگومان اول مثل هم میشن؛ چون در آرگومان سوم هم یکی نیستند باید [tex]mother(x)[/tex] رو با Alice یکی کنیم که نمیشه؛ چون Alice ثابته و طیق قانون یکسان سازی نمیتونه با چیزی جایگزین بشه؛ از طرفی [tex]mother(Ali)[/tex] (x قبلا با Ali جایگزین شده) یه تابعه که خروجیش یه آبجکته (مادر Ali) و متغیر نیست؛ بنابراین دو تا predicate داده شده نمیتونن یکی بشن؛ اگه مثلا به جای Alice داشتیم z، در اونصورت کافی بود z رو که یه متغیره با [tex]mother(Ali)[/tex] جایگزین کنیم تا هر دو predicate یکی بشن؛

وقتی یکسان سازی مثل [tex]Theta[/tex] رو تشکیل میدید (پست ۴) سه تا قانون ساده رو باید تست کنید:
- در سمت چپ هر اسلش فقط میتونه متغیر قرار بگیره؛
- یک متغیر در سمت چپ بیش از دو تا اسلش قرار نگیره؛ یعنی یه متغیر بیش از یه مقدار نمیتونه بگیره؛
- و اگه متغیری سمت چپ یه اسلش بود، در سمت راست هیچ اسلشی نباید ظاهر بشه؛ یعنی یه متعیر یا باید مقدار بگیره و یا به متغیری دیگه ای نسبت داده بشه؛ همزمان هردوش نمیشه؛


RE: یکسان سازی - IT89 - equilibrium - 27 شهریور ۱۳۹۱ ۰۱:۱۲ ق.ظ

(۲۶ شهریور ۱۳۹۱ ۰۵:۱۹ ق.ظ)MSZ نوشته شده توسط:  پس الان یه سوال دارم:
بعضی از کتابا گفتن یه تابع رو با یه ثابت نمیشه یکسان سازی کرد
که تو این مورد [tex]mother(x)[/tex] تابع هست و با Alice نمیتونه یکسان سازی بشه.
این حرف درستیه؟
تا جائیکه یادمه "فقط متغیرها" رو میشه با یه ثابت، یه تابع، یا یه متغیر دیگه جایگزین کرد؛ بنابراین اگه دو تا predicate بدن که یکیش همه آرگومانهاش ثابت یا تابع باشه، نمیشه تغییرش داد؛ مثل predicate سمت راست عبارت اولی؛ اما سمت چپی آرگومانهاش سه تا متغیره که میشه با جایگزینی با Ali هر دو تا predicate رو مثل هم کرد؛
در عبارت دومی، آرگومان اول predicate سمت راست یه ثابته، پس کاریش نمیشه کرد؛ باید برید سراغ سمت چپی که متغیر داره و y رو با Ali جایگزین کنید؛ از طرفی آرگومان دومی سمت چپی یه "تابعه" که نمیشه اونو برداشت و جاش چیز دیگه ای گذاشت؛ باید متغیر سمت راستی رو با اون تابع یعنی mother(Ali) جایگزین کنید؛

(۲۶ شهریور ۱۳۹۱ ۰۵:۱۹ ق.ظ)MSZ نوشته شده توسط:  الان با توجه به این سه تا نکته ای که گفتین، با توجه به کدومش این یکسان سازی شکست خورده؟
(شرمنده همه سوالا رو تو همین یه پست زدم)
خودتون باید بتونید بگید سومی چرا یکسان نمیشه؟ (آرگومان سوم سمت راستی یه "ثابت" و سمت چپی یه "تابعه"؛)

پ.ن. یکسان سازی یه الگوریتم داره، اما این مبحث راحت تر از اونیه که نیاز به الگوریتم داشته باشه؛
تنها نکته ای که ممکنه کمی این مبحثو بپیچونه متغیرهای داخل توابع هستند که باید دقت کنید اگه اون متغیرها مقدار گرفتند در این توابع هم اونها رو اعمال کنید؛ توی لینکهای زیر هم مثالهایی خوبی هست که شاید مفید باشه؛

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


یکسان سازی - IT89 - MSZ - 27 شهریور ۱۳۹۱ ۰۸:۰۸ ق.ظ

ممنونم
پس نتیجه میگیریم که گزینه ۳ جواب این سوال هست و دلیلش هم اینه که ما نمیتونیم یک تابع رو با یک مقدار ثابت یکسان سازی کنیم.

امیدوارم درست نتیجه گیری کرده باشم.