HW6.pdf

‫هو العالم‬
‫هوش مصنوعی‬
‫مدرس ‪ :‬دکتر سلیمانی‬
‫تمرین شماره ‪6‬‬
‫دانشکده مهندسی کامپیوتر‬
‫موعد تحویل تمرین تئوری‪ 15 :‬اردیبهشت ساعت ‪13:30‬‬
‫موعد تحویل تمرین عملی‪ 22 :‬اردیبهشت ساعت ‪24‬‬
‫نمره‪20 + 110 :‬‬
‫تئوری ‪:‬‬
‫سوال اول (‪ 15‬نمره)‬
‫جمالت زیر را به فرم منطق گزاره ای بیان نمایید‪:‬‬
‫‪ ‬رستم ‪ ،‬هوشنگ و سهراب به جشن تولد می روند اگر و تنها اگر داوود به جشن نرود ولی در‬
‫صورتی که هوشنگ و رستم هیچ کدام به جشن نروند داوود فقط در صورتی می رود که سهراب‬
‫برود‪.‬‬
‫‪ ‬اگر رستم و هوشنگ به جشن بروند سهراب به جشن می رود فقط در صورتی که داوود نرود‪.‬‬
‫‪ ‬اگر رستم به جشن برود هوشنگ یا سهراب نیز می روند ولی اگر رستم نرود سهراب و داوود‬
‫می روند‪.‬‬
‫سوال دوم (‪ 20‬نمره)‬
‫" در جشن تولد سوال قبل رستم در نیمه های شب به قتل می رسد و هوشنگ ‪ ،‬سهراب و داوود مظنونین‬
‫اصلی هستند‪ .‬هوشنگ می گوید او مرتکب قتل نشده و سهراب دوست مقتول بوده ولی داوود از مقتول‬
‫متنفر بوده است‪ .‬سهراب می گوید در روز واقعه خارج از شهر بوده و حتی مقتول را نمی شناخته است‪.‬‬
‫داوود می گوید او مقتول را نکشته و سهراب و هوشنگ نیز داخل شهر همراه مقتول بوده اند‪".‬‬
‫با فرض این که فقط یک نفر قتل را مرتکب شده و همچنین قاتل دروغ می گوید ابتدا این مسئله را به‬
‫صورت منطق گزاره ای نشان دهید و سپس با قاعده ‪ resolution‬آن را حل نمایید (قاتل را مشخص‬
‫کنید)‪.‬‬
‫(راهنمایی‪ :‬از گزاره های )‪ Murdered(a)، Friend(a‬و )‪ OutOfTown(a‬استفاده نمایید‪).‬‬
‫سوال سوم (‪ 15‬نمره)‬
‫با استفاده از پایگاه دانش زیر موارد زیر را اثبات کنید‪:‬‬
‫‪ ‬با استفاده از ‪ backward chaining‬ثابت کنید ‪7 ≤ 3 + 9 :‬‬
‫‪ ‬با استفاده از ‪ forward chaining‬ثابت کنید ‪7 ≤ 3 + 9 :‬‬
‫فقط باید از اطالعات زیر استفاده کنید نه اطالعات دیگر‪:‬‬
‫سوال چهارم (‪ 10‬نمره)‬
‫فرض کنید پایگاه دانش زیر را داریم‪:‬‬
‫)‪Ancestor(Mother(x),x‬‬
Ancestor(x,y) ∧ Ancestor(y,z) → Ancestor(x,z)
‫ می تواند هر یک از موارد زیر را ثابت نماید؟ (اگر می توانید در‬forward chaining ‫آیا الگوریتم‬
)‫ چندم به جواب می رسد؟‬iteration
Ancestor(Mother(Mother(Mother(y))),Mother(y)) 
Ancestor(Mother(John),Mother(Mother(John)) 
: ‫عملی‬
)‫ نمره‬10( ‫سوال اول‬
:‫ تا به چپ چرخش دهد‬n ‫به زبان پرولوگ برنامه ای بنویسید که لیستی را دریافت کرده و آن را‬
?- leftRotate([a,b,c,d,e,f,g,h],3,X).
X = [d,e,f,g,h,a,b,c]
?- leftRotate([a,b,c,d,e,f,g,h],-2,X).
X = [g,h,a,b,c,d,e,f]
)‫ نمره‬10( ‫سوال دوم‬
‫ برنامه ای بنویسید که تمامی این گروه‬.‫ نفری با هم کار کنند‬4 ‫ و‬3 ، 2 ‫ گروه‬3 ‫ نفر همکار می خواهند در‬9
:‫های ممکن را چاپ کند‬
?- group ([abas,ahmad,reza,maryam,hushang,narges,sara,ali,ana],G1,G2,G3).
G1 = [ana,ali], G2 = [reza,maryam,ahmad], G3 = [narges,sara,hushang,abas]
...
‫سوال سوم (‪ 15‬نمره)‬
‫برنامه ای بنویسید که با گرفتن یک کران پایین و یک کران باال تمامی اعداد زوج بین آنها به همراه ترکیب‬
‫گلدباخ آنها را چاپ کند‪:‬‬
‫(ترکیب گلدباخ یک عدد زوج به دو عدد اولی می گویند که جمعشان عدد زوج مذکور شود)‬
‫‪?- goldbach_list(9,20).‬‬
‫‪10 = 3 + 7‬‬
‫‪12 = 5 + 7‬‬
‫‪14 = 3 + 11‬‬
‫‪16 = 3 + 13‬‬
‫‪18 = 5 + 13‬‬
‫‪20 = 3 + 17‬‬
‫سوال چهارم (‪ 15‬نمره)‬
‫در این قسمت شما باید برنامهای بنویسید که به کاربر اجازه دهد که یک درخت جستجوی دودویی را‬
‫بسازد و به آن گره اضافه نماید و در نهایت بتواند درخت را به صورت یک لیست مشاهده نماید‪.‬‬
‫کاربر برای ساخت درخت دستوری مانند زیر را وارد میکند که در آن مقدار ریشهی درخت جستجوی‬
‫دودویی داده میشود‪:‬‬
‫‪?- BST_create(6).‬‬
‫‪true.‬‬
‫سپس به تعداد دلخواه به صورت زیر گره اضافه میکند‪:‬‬
‫‪?- BST_insert(4).‬‬
‫‪true.‬‬
‫‪?- BST_insert(3).‬‬
‫‪true.‬‬
‫‪?- BST_insert(5).‬‬
‫‪true.‬‬
‫‪?- BST_insert(9).‬‬
‫‪true.‬‬
‫‪?- BST_insert(7).‬‬
‫‪true.‬‬
‫در نهایت باید بتوان درخت را در لیستی به صورت زیر دریافت کرد‪:‬‬
‫‪?- BST_show(T).‬‬
‫]]][‪T = [6,[4,[3,[],[]],[5,[],[]]],[9,[7,[],[]],‬‬
‫خروجی‪ ،‬لیستِ راسِ ریشه است‪ .‬لیستِ یک راس شامل مقدار آن راس‪ ،‬لیستِ فرزند سمت چپش و‬
‫لیستِ فرزند سمت راستش است‪ .‬اگر راسی فرزند سمت چپ یا راست نداشت بهجای آن یک لیست‬
‫خالی قرار میگیرد‪.‬‬
‫سوال پنجم (‪ 20‬نمره ‪ -‬اختیاری)‬
‫برنامه ای بنویسید که راه حلی برای مسئله ‪ 8‬وزیر ارائه دهد‪:‬‬
‫خروجی به صورت ]‪ [4,2,7,3,6,8,5,1‬باشد به این معنا که وزیری که در ستون اول است در رودیف ‪ 4‬و‬
‫دومی در ردیف ‪ 2‬و ‪ ...‬می باشد‪.‬‬
‫در صورت وجود ابهام یا سوال با ایمیل ‪ [email protected]‬تماس بگیرید‪.‬‬
‫در صورت مشاهده هر گونه تقلب نمره تقلب کننده و گیرنده ‪ -100‬منظور شده و به استاد‬
‫معرفی می شوند‪.‬‬
‫موفق باشید‬