HW2.pdf

‫تمرین سری دوم درس هوش مصنوعی‬
‫مدرس‪ :‬دکتر سلیمانی‬
‫ترم دوم سال تحصیلی ‪1394-95‬‬
‫دانشکده مهندسی کامپیوتر‬
‫دانشگاه صنعتی شریف‬
‫موعد تحویل تمرین نظری‪ :‬یکشنبه ‪ 16‬اسفند ساعت ‪24‬‬
‫موعد تحویل تمرین عملی‪ :‬پنجشنبه ‪ 20‬اسفند ساعت ‪24‬‬
‫نمره‪5+100 :‬‬
‫بخش اول( سواالت نظری‬
‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ‬
‫‪ 15( .1‬نمره) به سواالت زیر پاسخ دهید‪.‬‬
‫الف) در روش جستجوی ‪ ،UCS‬چه نکاتی باید لحاظ شود که در جستجوی گرافی هر گاه یک ‪ state‬به باالی صف اولویت‬
‫رسید‪ ،‬بعد از آن دیگر نیاز به بررسی و به روز رسانی آن ‪ state‬نباشد؟ توضیح دهید‪.‬‬
‫ب) بخش الف را برای الگوریتم *‪ A‬حل کنید‪ ،‬یعنی بیان کنید که چه شرطی باید برقرار باشد تا اولین مسیری که به هر گره‬
‫پیدا می کنیم‪ ،‬کوتاهترین مسیر به آن گره باشد؟ توضیح دهید‪.‬‬
‫ج) فرض کنید تابع هزینهی *‪ A‬به صورت زیر باشد‪:‬‬
‫)‪f(s) = αg(s) + (1-α)h(s‬‬
‫که ‪ α‬بین ‪ 0‬و ‪ 1‬است‪ .‬بررسی کنید که در حاالت حدی‪ A* ،‬با استفاده از تابع باال به چه الگوریتمی تبدیل میشود‪.‬‬
‫د) فرض کنید قصد داریم از تعدادی تابع هیوریستیک 𝑛‪ ℎ1 , . . , ℎ‬که همگی سازگار‪ 1‬و قابلقبول‪ 2‬میباشند‪ ،‬یک هیوریستیک ترکیبی‬
‫‪1‬‬
‫تهیه کنیم‪ .‬در مورد سازگاری و قابلقبول بودن تابع هیوریستیک ) 𝑖‪ 𝑛 (∑𝑛𝑖=1 ℎ‬توضیح دهید‪.‬‬
‫‪.2‬‬
‫(‪ 15‬نمره) افرادی قصد دارند به مهمانی بروند‪ .‬هوا تاریک است و یک پل باریک در سر راه وجود دارد‪ .‬عبور از پل فقط با تنها چراغقوه‬
‫موجود ممکن است‪ .‬این افراد بسیار عجله دارند‪ .‬در نهایت همه افراد باید در کمترین زمان ممکن از پل عبور کرده باشند‪ .‬هر فرد یک‬
‫سرعت حداکثر دارد‪ .‬شرایط زیر در مساله وجود دارد‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫در یک زمان حداکثر دو نفر میتوانند از پل عبور کنند‪.‬‬
‫یک نفر باید چراغقوه را برای استفاده از بازماندگانی که از پل عبور نکردهاند برگرداند‪.‬‬
‫اگر دو نفر به طور همزمان حرکت کنند سرعت آنها حداکثر به اندازه کم سرعتترین فرد است‪.‬‬
‫الف‪ .‬این مساله را به صورت یک مساله جستجو فرموله کنید‪ .‬تعداد حاالت فضای حالت را محاسبه کنید‪.‬‬
‫ب‪ .‬یک تابع هیوریستیک مناسب برای این مساله پیدا کنید‪.‬‬
‫مثال‪ :‬گروهی شامل ‪ 4‬فرد که هر کدام به ترتیب در ‪ 5 ،2 ،1‬و ‪ 10‬دقیقه از پل عبور میکنند‪ ،‬در نظر بگیرید‪ .‬جواب بهینه برای این گروه‬
‫‪ 17‬دقیقه است که شامل قدمهای زیر است‪.‬‬
‫‪ )1‬فرد ‪ 1‬و ‪ 2‬از پل عبور میکنند (‪ 2‬دقیقه)‪.‬‬
‫‪ )2‬فرد ‪ 1‬برمیگردد (‪ 1‬دقیقه)‪.‬‬
‫‪ )3‬فرد ‪ 3‬و ‪ 4‬از پل عبور میکنند (‪ 10‬دقیقه)‪.‬‬
‫‪ )4‬فرد ‪ 2‬برمیگردد (‪ 2‬دقیقه)‪.‬‬
‫‪ )5‬فرد ‪ 1‬و ‪ 2‬از پل عبور میکنند (‪ 2‬دقیقه)‪.‬‬
‫توجه شود که این جواب بهینه ممکن است تنها جواب بهینه نباشد‪.‬‬
‫‪consistency‬‬
‫‪admissible‬‬
‫‪1‬‬
‫‪2‬‬
‫‪ 15( .3‬نمره) فرض کنید فضای حالت مسئلهای به صورت زیر است و مقادیر هزینهی کنشها روی یالهای مربطه مشخص شده‬
‫است‪ .‬همینطور مقدار تابع ‪ heuristic‬داخل هر گره نشان داده شده است‪:‬‬
‫‪start‬‬
‫‪h = 10‬‬
‫‪4‬‬
‫‪4‬‬
‫‪A‬‬
‫‪10‬‬
‫‪B‬‬
‫‪h= 8‬‬
‫‪h= 7‬‬
‫‪4‬‬
‫‪4‬‬
‫‪D‬‬
‫‪5‬‬
‫‪h= 4‬‬
‫‪E‬‬
‫‪C‬‬
‫‪3‬‬
‫‪h=5‬‬
‫‪h= 3‬‬
‫‪1‬‬
‫‪5‬‬
‫‪Goal‬‬
‫‪h= 0‬‬
‫الف) (‪ 5‬نمره) مسیر بدست آمده و دنبالهی حاالت گسترش یافته با استفاده از الگوریتم ‪ UCS‬را بنویسید‪.‬‬
‫ب) (‪ 10‬نمره) مسیر بدست آمده و دنبالهی حاالت گسترش یافته با استفاده از الگوریتم *‪ A‬را مشخص کنید‪ .‬آیا *‪ A‬جواب‬
‫بهینه را میدهد؟ اگر نه‪ ،‬دلیل چیست و چه تغییراتی باید اعمال شود؟‬
‫‪ 30( .4‬نمره) فرض کنید یک گراف داریم که هر گره آن‪ ،‬یکی از ‪ 3‬نوع دشت‪ ،‬جنگل‪ ،‬و آب است‪ .‬شخصی میخواهد از نقطهی‬
‫جنوب غربی نقشه به دوستش در نقطهی شمال شرقی برسد‪ .‬او از آب نمیتواند عبور کند و سرعت حرکت او در دشت دو برابر‬
‫سرعت حرکتش در جنگل است و میخواهد در کمترین زمان ممکن به مقصد برسد‪ .‬وزن یالها بدین صورتند که اگر دو سر‬
‫یک یال‪ ،‬دشت باشند‪ ،‬وزن یال ‪ ،1‬اگر یک سرش دشت و سر دیگرش جنگل باشد ‪ 2‬و اگر هر دو سرش جنگل باشد‪ 4 ،‬است‪.‬‬
‫وزن یالی که یک سرش آب است‪ ،‬برای این شخص بینهایت است‪ .‬نقطهی ‪ ،S‬محل شروع و ‪ G‬هدف است‪.‬‬
‫فرض کنید قرار است با *‪ A‬مسئله را حل کنیم‪ .‬تابع هزینه را بدین صورت تعریف کردهایم‪:‬‬
‫)‪f(s) = αg(s) + (1-α)h(s‬‬
‫‪ 5( )1.4‬نمره) چه مقداری را برای پارامتر ‪ α‬پیشنهاد میکنید؟ آیا بهتر است این پارامتر ثابت باشد یا متغیر؟ اگر متغیر باشد‪،‬‬
‫بهتر است تغییرات آن به چه شکل باشد؟ توضیح دهید‪.‬‬
‫‪ )2.4‬فرض کنید نقشه به صورتی باشد که در صفحهی بعد آمده (زرد‪ :‬دشت‪ ،‬سبز‪ :‬جنگل‪ ،‬آبی‪ :‬دریاچه)‪:‬‬
‫‪G‬‬
‫‪S‬‬
‫الف) (‪ 5‬نمره) الگوریتم ‪( IDS‬الگوریتم ‪ DFS‬عمیق شوندهی تکراری) را تا ‪ 4‬دور (‪ )iteration‬اجرا کنید و دنبالهی حاالت‬
‫بررسی شده را گزارش کنید‪.‬‬
‫ب) (‪ 5‬نمره) الگوریتم *‪ IDA‬را (از بخش ‪ 3.5.3‬کتاب آقای راسل و نرویگ) مطالعه کنید و نحوه عملکرد این الگوریتم را‬
‫توضیح دهید‪.‬‬
‫ج) (‪ 5‬نمره) یک تابع هیوریستیک برای این مسئله ارائه دهید‪( .‬راهنمایی‪ :‬فرض کنید فاصلهی گرهها را با فرض ‪ 1‬بودن‬
‫وزن همهی یالها داریم‪).‬‬
‫د) (‪ 10‬نمره) روی همان نقشهی بخش الف‪ ،‬الگوریتم *‪ IDA‬را تا ‪ 4‬مرحله (یعنی ‪ 4‬بار تمام شدن گرههای قابل گسترش‬
‫با ‪ upper bound‬فعلی) پیاده کنید و دنبالهی حاالت بررسی شده در هر مرحله و ‪ upper bound‬هر مرحله را بنویسید‪.‬‬
‫بخش دوم) سوال عملی (‪ 30‬نمره)‬
‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ‬
‫شخصی در منهتن یک پیتزافروشی با دو شعبه تاسیس کرده و دو نفر را برای تحویل غذا استخدام کرده است‪ .‬امروز او ‪ k‬سفارش‬
‫تحویلی داشته و قرار است این دو نفر‪ ،‬غذاها را تحویل دهند به طوری که این کار در کمترین زمان انجام شود‪ .‬متاسفانه‪ ،‬در منهتن‬
‫کارگران مشغول کارند و خیابان هست‪ ،‬ولی کم است‪:( .‬دی)‬
‫فرض کنید هر کدام از دو نفر با خود به تعداد سفارش کل مقصدها‪ ،‬پیتزا همراه دارند (یعنی هر کدام به تنهایی قادر است کل‬
‫سفارشها را جوابگو باشد)‪ .‬منهتن به صورت یک صفحه مربعی است (که به مربعهای ‪ 1*1‬تقسیم شده)‪ .‬در نقشهی داده شده به شما‬
‫که در فایلی به نام ‪ map.txt‬آمده‪ ،‬دو شعبهی رستوران با ‪ ،R‬خیابانها با ‪ ،S‬خیابانهای بسته شده با ‪ B‬و مقاصد با ‪ D‬مشخص‬
‫شدهاند‪ .‬در هر یک دقیقه‪ ،‬هر کدام از این دو نفر به اندازهی یک مربع ‪( 1*1‬به چپ‪ ،‬راست‪ ،‬باال یا پایین) حرکت میکند یا سر جایش‬
‫میماند‪.‬‬
‫الف) فرض کنید خیابانهای منهتن عریض است و این دو نفر می توانند همزمان در یک خیابان باشند‪ .‬با استفاده از الگوریتم‬
‫*‪ ،A‬بهترین مسیر ممکن برای این دو نفر و زمان پایان تحویل سفارشها را پیدا کنید‪ .‬انتخاب تابع هیوریستیک به عهدهی‬
‫خودتان است و مناسب بودن این تابع نیز قطعا اهمیت دارد!‬
‫ب) در این بخش فرض کنید خیابانها تنگ است و این دو نفر نمی توانند همزمان وارد یک خانه از نقشه شوند‪ .‬در این حالت‬
‫مسئله را با *‪ A‬حل کنید و بهترین مسیر و بهترین زمان را گزارش دهید‪.‬‬
‫موفق باشید ‪‬‬