HW1_Pr.pdf

‫داوشگاٌ صىعتي شزيف‬
‫داوشکدٌ مُىدسي کامپيًتز‬
‫ًَش مصىًعي‬
‫تمزيه عملي شمارٌ ‪1‬‬
‫تًضيحات‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪1‬‬
‫ایي توزیي در هدوَع دارای ‪ً 50‬وزُ ‪ً 00 +‬وزُ اضافی است‪.‬‬
‫هَػذ تحَیل توزیي تا ساػت ‪ 42‬رٍس ‪ 01‬اسفٌذ است‪.‬‬
‫خَاب توزیي ػولی را تِ آدرس ‪ ai.sharif.92.2@gmail.com‬تا ػٌَاى ‪ HW1-StudentID‬ارسال ًوایيذ‪.‬‬
‫تِ اسای ّز رٍس تاخيز ‪ً %00‬وزُ کسز خَاّذ ضذ‪.‬‬
‫تِ توزیيّای کپی ًوزُ صفز تؼلق خَاّذ گزفت‪.‬‬
‫معزفي مسالٍ‬
‫یک صفحِ سلَل تٌذی ضذُ ‪ 40*40‬دارین‪ّ .‬ذف پيذا کزدى هسيزی اس گزُ آغاسیي تِ گزُ ّذف تا تيصتزیي اهتياس (کنتزیي خزیوِ) است‪ .‬در ایني‬
‫صفحِ چٌذ ًَع سلَل دارین‪ ،‬کِ ٍارد ضذى تِ ّز کذام ‪ً ،‬ياسهٌذ هتحول ضذى خزیوِ خاصی است‪ .‬اًنَاع سنلَل ٍ خزیونِ هتٌنادز‪ ،‬در خنذٍل سینز‬
‫خالصِ ضذُاًذ‪.‬‬
‫تًجٍ‪ :‬در تخص ‪ 4‬فزض کٌيذ کِ ًَع سلَل ‪ٍ FOOD‬خَد ًذارد‪ .‬حالتی کِ ‪ FOOD‬هَخَد است‪ً ،‬ياسهٌذ تغييزاتنی اسنت کنِ در تخنص ‪ 3‬تنِ آى‬
‫خَاّين پزداخت‪.‬‬
‫‪1‬‬
‫روگ سلًل‬
‫جزيمٍ يارد شدن‬
‫وًع سلًل‬
‫سفيد‬
‫‪1‬‬
‫‪NORMAL‬‬
‫آبي‬
‫‪-400‬‬
‫‪FOOD‬‬
‫خاکستزی ريشه‬
‫‪5‬‬
‫‪TOUGH‬‬
‫خاکستزی‬
‫‪10‬‬
‫‪VERY_TOUGH‬‬
‫‪BLOCK‬‬
‫سياٌ‬
‫سبش‬
‫‪0‬‬
‫حالت آغاسیي‬
‫قزمش‬
‫‪0‬‬
‫حالت ًْایی‬
‫جديل ‪ :1‬جزيمٍ يريد بٍ َز سلًل‬
‫‪1.1‬‬
‫ومًوٍ يريدی‬
‫فایلّای ٍرٍدی ‪ maze.grd ٍ hills.grd‬تِ ػٌَاى دٍ حالت تزای آسهَى در اختيار ضوا قزار دادُ ضذُ است‪ .‬ضوا تا اخزای ‪ GUI.java‬هیتَاًيذ ایي‬
‫فایل ّا را تخَاًيذ‪ .‬تَخِ کٌيذ کِ در تيي هتذّا فقط رٍش خستدَی *‪ A‬درختی پيادُساسی ضذُ است‪ .‬ایي رٍش تِ دليل ایٌکِ گزُّای تکزاری را‬
‫چک ًویکٌذ‪ ،‬فقط تزای حاالت سادُ قاتل استفادُ است‪.‬‬
‫شکل ‪ :1‬فايل يريدی ‪hills‬‬
‫‪2‬‬
‫شکل ‪ :2‬يکي اس مسيزَای بُيىٍ بزای يريدی ‪hills‬‬
‫شکل ‪ :3‬فايل يريدی ‪maze‬‬
‫شکل ‪ :4‬يکي اس مسيزَای بُيىٍ بزای يريدی ‪maze‬‬
‫‪3‬‬
‫‪2‬‬
‫يافته مسيز بُيىٍ بدين جزيمٍ مىفي‬
‫در ایي تخص حالتی را در ًظز هیگيزین کِ سلَلّای ًَع ‪ٍ FOOD‬خَد ًذارد‪ .‬در ایي تخص در ًْایت ضوا تایذ افشٍى تز هَارد خَاستِضذُ‪ ،‬خذٍل‬
‫سیز را ًيش رٍی دٍ ٍرٍدی ‪ hills ٍ maze‬گشارش کٌيذ‪.‬‬
‫تؼذاد گزُّای‬
‫تسط دادُضذُ‬
‫ػٌَاى رٍش‬
‫ّشیٌِ هسيز یافت‬
‫ضذُ‬
‫طَل هسيز (تؼذاد‬
‫سلَل طی ضذُ)‬
‫تؼذاد هقایسِّا در‬
‫‪MyVisitedManager‬‬
‫خستدَی اٍل سطح گزافی‬
‫خستدَی ّشیٌِ یکٌَاخت گزافی‬
‫خستدَی آ‪-‬ستارُ گزافی‬
‫‪1.2‬‬
‫تًصيف فضای مسالٍ جستجً‬
‫پيادُساسی فضای حالت در کالسّای ‪ MapProblem ٍ MapState‬اًدام ضذُ است‪ .‬در حالت تذٍى غذا هکاى ػاهل‪ ،‬تَصيف کويٌِی حالت است‪.‬‬
‫تاتغ )(‪ getID‬اس کالس ‪ MapState‬ػذد هدشایی تِ اسای ّز حالت تزهیگزداًذ‪ ،‬کِ فقط تِ هختصات ػاهل ٍاتستِ است‪.‬‬
‫‪2.2‬‬
‫طزاحي َيًريستيک‬
‫تزای پيادُساسی ّيَریستيک هَرد ًظز خَد هتذ ‪ getHeuristicStimate‬اس کنالس ‪ MapState‬را تغيينز دّينذ (‪ً 00‬ونزُ)‪ّ .‬يَریسنتيک فاصنلِ‬
‫هٌْتي تِ ػٌَاى ّيَریستيک پيصفزض پيادُساسی ضذُ است‪ّ .‬يَریستيک ضوا تایذ ساسگار تاضذ ٍ هؼيار تْثَد تؼذاد گزُّنای تسنط دادُضنذُ تنا‬
‫رسيذى تِ خَاب در رٍشّای *‪ A‬درختی ٍ گزافی است‪ .‬تِ ّيَریستيکّای کاهالً تذیْی ًوزُ ‪ 0‬تؼلق خَاّذ گزفت‪.‬‬
‫‪3.2‬‬
‫پيادٌساسی ريشَای جستجً‬
‫اضيای کالس ‪ Node‬گزُ ّای خستدَ را تَصيف هیکٌٌذ‪ .‬هتذ ‪ Search‬در کالس ‪ TreeSearch‬یک هسالِ ٍ یک استزاتژی صف خستدَ را دریافت‬
‫هیکٌذ ٍ در صَرتی کِ خَاب را پيذا کٌذ‪ ،‬گزُ (‪ )Node‬خَاب را (تَخِ کٌيذ کِ ّز گزُ خستدَ ّواى طَر کِ در کتاب راسل ّن هیتيٌيذ ضناهل‬
‫پيًَذی تِ پذر خَد است‪ ،‬تٌاتزایي تا داضتي ‪ًْ Node‬ایی کل هسيز خ َاب تا یک پيوایص در طَل پيًَنذّا قاتنل تاسیناتی اسنت)‪ ،‬تزهنیگزداًنذ‪ .‬در‬
‫صَرتی کِ صف خستدَ خالی ضَد‪ ،‬هتذ تایذ یک خطا ()"‪ )throw new Exception("failure......‬را تزگزداًذ‪ .‬تزای ارسیاتی رٍشّا تؼذاد گزُّای‬
‫تسط دادُضذُ ًيش هحاسثِ هیضَد‪ .‬تَخِ کٌيذ کِ ایي هتذ تِ صَرت ػوَهی ًَضتِ هیضَد ٍ اصالً تِ هسالِ خاظ ٍاتستِ ًيست‪.‬‬
‫ضوا تایذ هتذّای ‪ Search‬اس کالس ‪ UCS_Search ٍ GraphSearch‬را تکويل کٌيذ‪ .‬تَخِ کٌيذ کِ ًياس است تؼذاد گزُّای تسنط دادُضنذُ‪ ،‬در‬
‫ّز رٍش هحاسثِ ضَد‪ .‬اس ‪ GraphSearch‬پيادُساسی ضذُ در ًْایت تزای اخزای رٍشّای خستدَ *‪ A‬گزافی ٍ ‪ BFS‬گزافی استفادُ خَاّذ ضذ‪.‬‬
‫تَضيحات‬
‫ًام هتذ‬
‫کالس‬
‫پيادُساسی ضذُ‬
‫‪public static Node Search(Problem‬‬
‫)‪p,BaseQueue queue‬‬
‫‪Tree_Search‬‬
‫‪ً 00‬وزُ‬
‫‪public static Node Search(Problem‬‬
‫)‪p,BaseQueue queue‬‬
‫‪UCS_Search‬‬
‫‪ً 00‬وزُ‬
‫‪public static Node Search(Problem‬‬
‫)‪p,BaseQueue queue,VisitedManager visited‬‬
‫‪GraphSearch‬‬
‫‪4‬‬
‫‪4.2‬‬
‫استزاتژی صف گزٌَای حاشيٍای‬
‫ّز کذام اس رٍشّای خستدَ هی تَاًٌذ تا تَخِ تِ استزاتژی خنَد در اًتخناب ٍ حنذف اس صنف حاضنيِای خسنتدَ‪ ،‬هنذل ضنًَذ‪ .‬کنالس اًتشاػنی‬
‫‪ BaseQueue‬ایي هفَْم را ًطاى هیدّذ‪ .‬ضوا در ایي قسوت تایذ هتذّای سیز را تِ گًَِای تغييز دّيذ کِ سنزػت خسنتدَی *‪ A‬درختنی تْثنَد‬
‫یاتذ‪.‬‬
‫تَضيحات‬
‫هتذّا‬
‫ًام کالس‬
‫صف اٍلَیت تز حسة هقذار ّيَریستيک‬
‫(‪ً 00‬وزُ اضافی)‬
‫)‪public void add(Node o‬‬
‫‪AStarQueue extends BaseQueue‬‬
‫)(‪public Node remove‬‬
‫تزای پيادُساسی صف *‪ ،A‬یک راُ سادُ ایني اسنت کنِ اس رٍش ینافتي کويٌنِ در هتنذ ‪ remove‬اسنتفادُ کٌنين )‪ .O(size of queue‬ایني رٍش‬
‫پيادُساسی ضذُ است‪ .‬ضوا تایذ سؼی کٌيذ کِ تا استفادُ اس ساختار دادُّای تْتزی ّن چَى ‪( Heap‬تِ صَرت پيًَذی ًِ آرایِای) تنزای ًهْنذاری‬
‫گزُّا‪ ،‬هدوَع هزتثِ سهاًی درج ٍ حذف را تْثَد دّيذ‪ .‬فزض کٌيذ کِ ساختار آرایِای تِ خاطز پَیا تَدى طَل صف قاتلقثَل ًيست‪ .‬در هَرد رٍش‬
‫اًتخاتی ٍ هزتثِ سهاًی درج ٍ حذف در گشارش خَد تٌَیسيذ‪ .‬ضوا تا پيادُساسی ساختواى دادُ هٌاسنة قنادر خَاّينذ تنَد سنزػت *‪ A‬درختنی را‬
‫قاتلقثَل کٌيذ‪.‬‬
‫‪5.2‬‬
‫مديزيت صف گزٌَای ديدٌشدٌ در جستجًی گزافي‬
‫الهَریتنّای ‪ GraphSearch‬فقط گزُّایی را کِ قثالً تسط دادُ ًطذُاًذ تزای تسط اًتخاب هیکٌٌذ‪ .‬تِ ایي هٌظَر ًياس تِ ًهْذاری گزُّنای تسنط‬
‫دادُضذُ در یک ساختواى دادُ است‪ .‬ایي ساختواى دادُ تْتز است تِ گًَِای تاضذ کِ تزرسی دیذُ ضذى یک گزُ تِ سنزػت اًدنام ضنَد‪ .‬تنِ ایني‬
‫هٌظَر تایذ تَاتغ سیز را در کالس ‪ MyVisitedManager‬پيادُساسی کٌيذ‪.‬‬
‫تَضيحات‬
‫هتذّا‬
‫ًام کالس‬
‫‪ً 00‬وزُ‬
‫)‪public void insert(State st‬‬
‫‪MyVisitedManager extends‬‬
‫‪VisitedManager‬‬
‫)‪public boolean isInVisited(State st‬‬
‫تَخِ کٌيذ کِ ها هیداًين حالتّایی کِ تِ کالس ‪ٍ MyVisitedManager‬ارد هیضًَذ‪ ،‬تاتغ )(‪ getID‬اس راتط ‪ State‬را پيادُساسی کزدُاًذ‪ .‬هقنذار‬
‫هدشایی کِ ایي هتذ تزای ّز حالت تزهیگزداًذ‪ ،‬هؼياری تزای پيادُساسی تَاتغ درج ٍ خستدَی حاالت در ساختواى دادُ است‪ .‬هیتَاى تزای هثنال‬
‫اس یک درخت خستدَی دٍدٍیی تزای درج ٍ خستدَی گزُّا در سهاى هٌاسة استفادُ کزد (ًياس ًيست تِ تاالً تَدى درخت خستدَ تيص اس حنذ‬
‫تَخِ ضَد ٍ ضثِ تصادفی تَدى گزُّا در آى کفایت هیکٌذ)‪ .‬تا تَخِ تِ ایي تَضيحات ضوا تایذ تَاتغ خذٍل تاال را تِ گًَِای پيادُساسی کٌينذ کنِ‬
‫در سهاى کوتز اس حالت خطی تتَاًذ گزُ را خستدَ ٍ درج کٌذ‪ .‬ضوا تایذ ًحَُ کذگذاری (ًسثت دادى یک ػنذد تنِ حالنت در تناتغ ‪ ٍ )getID‬اینذُ‬
‫پيطٌْادی خَد در هَرد ساختواى دادُ را در گشارش ضزح دّيذ (تِ صَرت پيصفزض ساختواى دادُ درخت خستدَی دٍدٍیی هَرد قثَل است)‪.‬‬
‫‪3‬‬
‫صفحٍ شامل غذا‬
‫در ایي قسوت ضوا تایذ در تخص ّای هَرد ًياس تغييزاتی اػوال ًوایيذ‪ ،‬کِ رٍش خستدَی گزافی *‪ A‬تتَاًذ خَاب تْيٌِ صفحِ ضاهل غنذا را پينذا‬
‫کٌذ (‪ً 00‬وزُ)‪ .‬تَخِ کٌيذ کِ ّز غذا یک تار قاتل استفادُ است‪ .‬ضوا تایذ تزای ایي حالت ّيَریستيک هدشایی تؼزیف کٌيذ (‪ .)00‬تِ ّيَریسنتيک‬
‫تذیْی ًوزُ ‪ 0‬تؼلق خَاّذ گزفت‪.‬‬
‫‪5‬‬
‫راٌّوایی ‪ :0‬ػثَر هدذد اس یک گزُ‪ ،‬در صَرتی هداس است‪ ،‬کِ یک تغييز در تؼذاد غذاّای هصزفی صفحِ ایداد ضذُ تاضذ‪.‬‬
‫راٌّوایی ‪ : 4‬ضوا تا تَخِ تِ رٍش هَرد ًظز‪ ،‬هوکي است ًياس تِ تغييزات در تَصيف کويٌنِ حالنت ‪ ،‬تناتغ آسهنَى ّنذف اس کنالس ٍ تناتغ تخونيي‬
‫ّيَریستيک داضتِ تاضيذ‪ .‬در گشارش خَد تِ طَر خالصِ در هَرد رٍش هَرد ًظز ٍ تغييزات هَرد ًياس در فزهَلِ تٌذی هسالِ تَضيح دّينذ‪ً .‬تنایح‬
‫خَد را رٍی فایلّای ٍرٍدی ‪ mazeFood ٍ hillsFood‬گشارش کٌيذ‪ .‬تِ دليل اهکاى گذر تکزاری اس یک سلَل هسنيزّای تْيٌنِ پينذا ضنذُ را تنِ‬
‫صَرت تَالی هختصات سلَلّا در فایلّایی تا ًام ‪ hillsFood.txt ٍ mazeFood.txt‬تحَیل دّيذ‪.‬‬
‫فایل ٍرٍدی‬
‫تؼذاد گزُّای‬
‫تسط دادُضذُ‬
‫ّشیٌِ هسيز تْيٌِ‬
‫‪hillsFood‬‬
‫‪mazeFood‬‬
‫شکل ‪ :5‬فايل يريدی‪hillsFood.grd‬‬
‫‪6‬‬
‫طَل هسيز (تؼذاد‬
‫سلَل)‬
‫شکل ‪ :6‬جًاب غيزقابل قبًل بزای ‪ :hillsFood‬يک مسيز ويمٍبُيىٍ بزای مسالٍ ‪ hillsFood‬بدين تغييز فزمًالسيًن مسالٍ کٍ با جستجًی آ‪-‬‬
‫ستارٌ گزافي پيدا شدٌ است‪.‬‬
‫شکل ‪ :7‬فايل يريدی ‪mazeFood‬‬
‫‪7‬‬