ﺑﺎﺳﻤﻪ ﺗﻌﺎﻟ ﻫﻮش ﻣﺼﻨﻮﻋ Artificial Intelligence داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﺪرس :دﮐﺘﺮ ﺳﻠﯿﻤﺎﻧ ﻣﻮﻋﺪ ﺗﺤﻮﯾﻞ ١٣ :اﺳﻔﻨﺪ ١٣٩١ ﺗﻤﺮﯾﻦ ﻋﻤﻠ ‐ ﺷﻤﺎرهی ١ • ﺑﻪ ازای ﻫﺮ روز ﺗﺎﺧﯿﺮ در ﺗﺤﻮﯾﻞ ﺗﻤﺮﯾﻦ )ﺣﺪاﮐﺜﺮ ٣روز( ١٠٪از ﻧﻤﺮهی آن ﮐﺎﺳﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ. • ﺟﻮاب ﺗﻤﺮﯾﻦﻫﺎی ﻋﻤﻠ ﺧﻮد را ﻣ ﺑﺎﯾﺴﺖ از ﻃﺮﯾﻖ اﯾﻤﯿﻞ ﺑﺎ ﻣﻮﺿﻮع ]HW1-[STUDENT-ID ﺑﻪ sharif.ai.91@gmail.comارﺳﺎل ﮐﻨﯿﺪ. • اﯾﻦ ﺗﻤﺮﯾﻦ در ﻣﺠﻤﻮع ١٣۵ﻧﻤﺮه ) ۶۵ﻧﻤﺮه ﺗﺌﻮری ٧٠ﻧﻤﺮه ﻋﻤﻠ ( اﺳﺖ ،ﻧﻤﺮهی اﻣﺘﯿﺎزی آن ﻓﻘﻂ ﺑﺮای ﻫﻤﯿﻦ ﺗﻤﺮﯾﻦ اﺳﺖ و اﺛﺮ ﻣﺜﺒﺘ در ﺳﺎﯾﺮ ﻗﺴﻤﺖﻫﺎی درس ﻧﺪارد. از ٢زﺑﺎن Pythonﯾﺎ Javaﺑﺎﺷﻨﺪ .دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ ﻓﻘﻂ ﻓﺎﯾﻞﻫﺎی ﺧﻮاﺳﺘﻪ ﺷﺪه را • ﺑﺮﻧﺎﻣﻪﻫﺎی ارﺳﺎﻟ ﻣ ﺑﺎﯾﺴﺖ ﺑﻪ ﯾ ارﺳﺎل ﮐﻨﯿﺪ. • در ﺻﻮرت ﻣﺸﺎﻫﺪهی ﺗﻘﻠﺐ ﺑﺮای ﻫﺮ دو ﻃﺮف ﻧﻤﺮهی ٠در اﯾﻦ ﺗﻤﺮﯾﻦ ﻣﻨﻈﻮر ﺧﻮاﻫﺪ ﺷﺪ. • ﺣﺘﻤﺎ در ﺟﻠﺴﻪی ﺣﻞﺗﻤﺮﯾﻦ اﯾﻦ ﺗﻤﺮﯾﻦ ﺑﺮای رﻓ اﺑﻬﺎم ﺷﺮﮐﺖ ﮐﻨﯿﺪ! ﺷ ﻞ :١ﺑﺎزی ﭘ ﺗﻌﺮﯾﻒ در اﯾﻦ ﭘﺮوژه ﺷﻤﺎ ﺑﺮای ﯾ ﻫﺮ ﺣﺮﮐﺖ در ﯾ ﻣﻦ ﺑﺎ ﮔﺮاﻓﯿ ﭘﺎﯾﺘﻮن ﻋﺎﻣﻞ PacManﺑﺎﯾﺪ ﺑﺮﻧﺎﻣﻪ ﺑﻨﻮﯾﺴﯿﺪ. واﺣﺪ زﻣﺎﻧ اﻧﺠﺎم ﻣ ﺷﻮد .ﭘ ﻣﻦ ﻧﻤ ﺗﻮاﻧﺪ ﺑﻪ ﺧﺎﻧﻪﻫﺎﯾﯽ ﮐﻪ دﯾﻮار ﻗﺮار دارد ﺑﺮود .ﺧﻮردن ﻫﺮ ﻏﺬا ۵٠٠+ اﻣﺘﯿﺎز دارد و ﻫﺮ واﺣﺪ زﻣﺎﻧ ﮐﻪ ﺑ ﺬرد ‐ ١اﻣﺘﯿﺎز ﺑﻪ ﺷﻤﺎ اﺿﺎﻓﻪ ﻣ ﺷﻮد .زﻧﺪه ﺑﻮدن ﺷﻤﺎ در اﻧﺘﻬﺎ ﻫﻢ ١٠+اﻣﺘﯿﺎز دارد! ﺑﺮای ﺷﺮوع ﮐﺎﻓﯿﺴﺖ Main.javaرا اﺟﺮا ﮐﻨﯿﺪ. ١ ١ ﺟﺴﺘﺠﻮی ﻣ ﺎﻧ ٣٠) ١ﻧﻤﺮه ﻫﺮ ﻣﻮرد ١٠ﻧﻤﺮه( در اﯾﻦ ﻣﺴﺌﻠﻪ ﻫﺪف رﺳﯿﺪن ﺑﻪ ﯾ ﺧﺎﻧﻪی ﻣﺸﺨﺺ اﺳﺖ ﮐﻪ ﻏﺬا در آن وﺟﻮد دارد .در اﯾﻦ ﺳﻮال ﺷﻤﺎ ﺑﺎﯾﺪ ﺗﻮاﺑﻊ ﻣﻮﺟﻮد در ﻓﺎﯾﻞ Search.javaرا ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ .اﯾﻦ ﺗﻮاﺑﻊ ﺟﺴﺘﺠﻮ ،ﻫﻤ ﯾ SearchProblem را ﺑﻪ ﻋﻨﻮان ورودی درﯾﺎﻓﺖ ﻣ ﮐﻨﻨﺪ .ﺷﻤﺎ ﺑﺎﯾﺪ دﻧﺒﺎﻟﻪای از ﺣﺮﮐﺎت را اراﺋﻪ دﻫﯿﺪ ﮐﻪ از وﺿﻌﯿﺖ اوﻟﯿﻪ ﺑﻪ وﺿﻌﯿﺖ ﻫﺪف ﺑﺮﺳﺪ. ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺟﺴﺘﺠﻮی ﺧﻮد را ﺑﻪ ﺻﻮرت Graph Searchاﻧﺠﺎم دﻫﯿﺪ. Stateﯾ واﺳﻂ ٢اﺳﺖ ﮐﻪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﻨﺪ. ; ) ( 1 p u b l i c i n t getID ; ) ( 2 public Point getPos ﺷ ﻞ :٢ﺗﻮاﺑﻊ ﻣﻮﺟﻮد در ﯾ وﺿﻌﯿﺖ ﮐﻪ ﺗﺎﺑﻊ ،١ﻋﺪدی ﯾ ﺘﺎ ﺑﻪ ازای ﻫﺮ وﺿﻌﯿﺖ ﺑﺮ ﻣ ﮔﺮداﻧﺪ .ﯾﻌﻨ idدو وﺿﻌﯿﺖ ﯾ ﺴﺎن اﺳﺖ اﮔﺮ و ﻓﻘﻂ اﮔﺮ ﺧﻮد دو وﺿﻌﯿﺖ ﯾ ﺴﺎن ﺑﺎﺷﻨﺪ .ﺗﺎﺑﻊ ،٢ﻣﺨﺘﺼﺎت ﭘ ﻣﻦ را ﺑﺮ ﻣ ﮔﺮداﻧﺪ. راﻫﻨﻤﺎﯾﯽ :ﮐﺎرﻫﺎی ﺧﻮد را ﺑﺎ idﯾ stateاﻧﺠﺎم دﻫﯿﺪ! SearchProblemﯾ ﮐﻼس اﻧﺘﺰاﻋ اﺳﺖ ،ﮐﻪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﻨﺪ. ; )( 1 public abstract State getStartState ; ) 2 public a b s t r a c t boolean isGoalState ( State s t a t e ; ) 3 p u b l i c a b s t r a c t A r r a y L i s t <T r i p l e > g e t S u c c e s s o r s ( S t a t e s t a t e ﺷ ﻞ :٣ﺗﻮاﺑﻊ ﻣﻮﺟﻮد در ﯾ ﺗﺎﺑﻊ ،١وﺿﻌﯿﺖ اوﻟﯿﻪ را ﺑﺮ ﻣ ﮔﺮداﻧﺪ .ﺗﺎﺑﻊ ،٢ﻫﺪف ﺑﻮدن ﯾ ﻣﺴﺌﻠﻪی ﺟﺴﺘﺠﻮ وﺿﻌﯿﺖ را ﻧﺸﺎن ﻣ دﻫﺪ .ﺗﺎﺑﻊ ،٣در ورودی ﯾ ﻣ ﮔﯿﺮد و ﺗﻤﺎم وﺿﻌﯿﺖﻫﺎﯾﯽ ﮐﻪ از اﯾﻦ راس ﻣ ﺗﻮان ﺧﺎرج ﺷﺪ را ﺑﺮ ﻣ ﮔﺮداﻧﺪ .اﯾﻦ ﺧﺮوﺟ ﺑﻪ ﺻﻮرت ﯾ ﯾ وﺿﻌﯿﺖ Tripleاﺳﺖ ﮐﻪ ﺳﻪﺗﺎﯾﯽ )وﺿﻌﯿﺖ ﺟﺪﯾﺪ ،ﺣﺮﮐﺖ ]ﺟﻬﺖ[ ﺑﺮای رﺳﯿﺪن ﺑﻪ اﯾﻦ وﺿﻌﯿﺖ ﺟﺪﯾﺪ و ﻫﺰﯾﻨﻪی ﻋﻤﻞ( اﺳﺖ. راﻫﻨﻤﺎﯾﯽ :ﺗﺎ ﺣﺪ اﻣ ﺎن وارد ﺟﺰﺋﯿﺎت ﭘﯿﺎدهﺳﺎزی ﯾ SearchProblemﻧﺸﻮﯾﺪ و ﺑﻪ ﺻﻮرت ﮐﺎﻣﻠﻦ اﻧﺘﺰاﻋ ﺑﺎ آن ﮐﺎر ﮐﻨﯿﺪ! راﻫﻨﻤﺎﯾﯽ :٢ﺑﺮای اﻃﻼﻋﺎت ﺑﯿﺸﺘﺮ ﺑﻪ Search.javaو SearchProblem.javaو Triple.javaﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ. در ﮐﻠﯿﻪ اﻟ ﻮرﯾﺘﻢﻫﺎی زﯾﺮ ﺗﺎﺑﻌ را ﭘﯿﺎدهﺳﺎزی ﻣ ﮐﻨﯿﺪ ﮐﻪ ﯾ ﯾ دﻧﺒﺎﻟﻪ از ﺣﺮﮐﺎت ،ﮐﻪ ﻫﺮ ﺣﺮﮐﺖ ﯾ SearchProblemرا ﺑﻪ ﻋﻨﻮان ورودی درﯾﺎﻓﺖ ﻣ ﮐﻨﻨﺪ و ﺟﻬﺖ اﺳﺖ ]> [ArrayList<Directionﺑﺎز ﻣ ﮔﺮداﻧﺪ .ﺑﻪ ﮔﻮﻧﻪای ﮐﻪ ﭘ ﻣﻦ ﺑﺎ دﻧﺒﺎل ﮐﺮدن اﯾﻦ ﺣﺮﮐﺎت ﺑﻪ ﺗﮏ ﻏﺬای ﻣﻮﺟﻮد در ﺻﻔﺤﻪ ﺑﺮﺳﺪ. Search Problem ١ Positional ٢ Interface ٢ ﺟﺴﺘﺠﻮی ﻋﻤﻖ اول ١.١ . ﺑﺎﯾﺪ ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﺪSearch.java را در ﻓﺎﯾﻞdepthFirstSearch ﺗﺎﺑﻊ٣ . اﺟﺮا ﮐﻨﯿﺪMain.java ﺑﺎزی را ﺑﺎ ﭘﺎراﻣﺘﺮﻫﺎی ورودی زﯾﺮ در ﻓﺎﯾﻞ 1 p u b l i c s t a t i c S t r i n g mapName = ” t i n y M a z e ” ; / / t i n y M a z e , mediumMaze , bigMaze 2 p u b l i c s t a t i c S t r i n g s e a r c h P r o b l e m = Game . POSITIONAL ; 3 p u b l i c s t a t i c S t r i n g s e a r c h A l g o r i t h m = Game . DFS ; 4 p u b l i c s t a t i c S t r i n g h e u r i s t i c F u n c t i o n = Game . H n u l l ; ١-١ ﭘﺎراﻣﺘﺮﻫﺎی ورودی ﺑﺮای:۴ ﺷ ﻞ ﺟﺴﺘﺠﻮی ﺳﻄ اول ٢.١ . ﺑﺎﯾﺪ ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﺪSearch.java را در ﻓﺎﯾﻞbreadthFirstSearch ﺗﺎﺑﻊ۴ 1 p u b l i c s t a t i c S t r i n g mapName = ” mediumMaze ” ; / / t i n y M a z e , mediumMaze , bigMaze 2 p u b l i c s t a t i c S t r i n g s e a r c h P r o b l e m = Game . POSITIONAL ; 3 p u b l i c s t a t i c S t r i n g s e a r c h A l g o r i t h m = Game . BFS ; 4 p u b l i c s t a t i c S t r i n g h e u r i s t i c F u n c t i o n = Game . H n u l l ; ٢-١ ﭘﺎراﻣﺘﺮﻫﺎی ورودی ﺑﺮای:۵ ﺷ ﻞ اﻟﻒ ﺳﺘﺎره ٣.١ ManhatanHeuristic.java ﺗﺎﺑﻊ اﺑﺘﮑﺎری ﺑﺮای ﺷﻤﺎ در ﻓﺎﯾﻞ. ﺑﺎﯾﺪ ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﺪSearch.java را در ﻓﺎﯾﻞaStarSearch ﺗﺎﺑﻊ۵ ﻣﻦ از ﺧﺎﻧﻪی ﻫﺪف راﺑﻪ ﻋﻨﻮان ﺗﺎﺑﻊ ی ﭘmanhatan ﻓﺎﺻﻠﻪی،وﺿﻌﯿﺖ ﻣﺴﺌﻠﻪ و ﯾ ﺑﺎ ﮔﺮﻓﺘﻦ ﯾ.ﭘﯿﺎدهﺳﺎزی ﺷﺪه اﺳﺖ . ﺑﺮﻣ ﮔﺮداﻧﺪ۶ اﺑﺘﮑﺎری ﻗﺎﺑﻞ ﻗﺒﻮل 1 p u b l i c s t a t i c S t r i n g mapName = ” bigMaze ” ; / / t i n y M a z e , mediumMaze , bigMaze 2 p u b l i c s t a t i c S t r i n g s e a r c h P r o b l e m = Game . POSITIONAL ; 3 p u b l i c s t a t i c S t r i n g s e a r c h A l g o r i t h m = Game . ASTAR ; 4 p u b l i c s t a t i c S t r i n g h e u r i s t i c F u n c t i o n = Game . H manhatan ; ٣-١ ﭘﺎراﻣﺘﺮﻫﺎی ورودی ﺑﺮای:۶ ﺷ ﻞ ٣ DFS ۴ BFS ۵ A* ۶ Admissible Heuristic Function ٣ ٢ ﺟﺴﺘﺠﻮی ﮔﻮﺷﻪﻫﺎ ٢۵) ٧ﻧﻤﺮه ،ﻣﻮرد اول ١٠ﻧﻤﺮه ،ﻣﻮرد دوم ١۵ﻧﻤﺮه( در اﯾﻦ ﻣﺴﺌﻠﻪ ﻫﺪف ﺧﻮردن ۴ﻏﺬا ﮐﻪ در ۴ﮔﻮﺷﻪی ﻧﻘﺸﻪ ﻗﺮار دارد ،در ﮐﻢﺗﺮﯾﻦ زﻣﺎن اﺳﺖ .در اﺑﺘﺪا ﺷﻤﺎ ﻣ ﺎن ﻏﺬاﻫﺎ و ﭘ ١.٢ ﻣﻦ را در اﺧﺘﯿﺎر دارﯾﺪ. ﻧﻤﺎﯾﺶ وﺿﻌﯿﺖ ﮐﻤﯿﻨﻪ در اﯾﻦ ﻗﺴﻤﺖ ﺑﺎﯾﺪ ﺗﻮاﺑﻊ ﻣﻮﺟﻮد در CornersSearchProblem.javaرا ﮐﺎﻣﻞ ﮐﻨﯿﺪ و ﺳﭙﺲ ﺑﻪ وﺳﯿﻠﻪی ﺗﺎﺑﻊ bfsای ﮐﻪ در ﺗﻤﺮﯾﻦ ١ﻧﻮﺷﺘﯿﺪ اﯾﻦ ﻣﺴﺌﻠﻪ را ﺣﻞ ﮐﻨﯿﺪ. اﺑﺘﺪا ﺑﺎﯾﺪ ﻫﺮ وﺿﻌﯿﺖ ﺑﺎزی را ﺑﺎ ﮐﻼس CornersSearchStateﻧﻤﺎﯾﺶ دﻫﯿﺪ .ﻧﻤﺎﯾﺶ وﺿﻌﯿﺖ ٨ی را اﻧﺘﺨﺎب ﮐﻨﯿﺪ ﮐﻪ ﻣﯿﻨﯿﻤﺎل ﺑﺎﺷﺪ .ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ getIDﺑﺎﯾﺪ ﻣﺎﻧﻨﺪ ﻗﺴﻤﺖ ،١ﯾ ﺘﺎ ﺑﺎﺷﺪ و ﺑﻪ ازای دو وﺿﻌﯿﺖ ﯾ ﺴﺎن ،ﻣﻘﺪار ﺑﺮاﺑﺮ ﺑﺮﮔﺮداﻧﺪ .ﺳﭙﺲ ﺑﺎﯾﺪ ﺗﻮاﺑﻊ ﻣﻮﺟﻮد در CornersSearchProblemرا ﭘﺮ ﮐﻨﯿﺪ. راﻫﻨﻤﺎﯾﯽ :ﺗﻮاﺑﻌ ﮐﻪ ﺑﺎﯾﺪ ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﺪ ﻫﻤﺎﻧﻨﺪ ﮐﺎری ﮐﻪ در PositionSearchProblemاﻧﺠﺎم داده ﺷﺪه اﺳﺖ. راﻫﻨﻤﺎﯾﯽ :٢ﻓﻘﻂ ﺑﻪ ﻣ ﺎن ﭘ ﻣﻦ و ﻣ ﺎن ۴ﻏﺬای اوﻟﯿﻪ ﺑﺮای ﺣﻞ ﻣﺴﺌﻠﻪ ﻧﯿﺎز دارﯾﺪ. ; ” 1 p u b l i c s t a t i c S t r i n g mapName = ” mediumCorners ;2 p u b l i c s t a t i c S t r i n g s e a r c h P r o b l e m = Game . CORNER ; 3 p u b l i c s t a t i c S t r i n g s e a r c h A l g o r i t h m = Game . BFS ; 4 p u b l i c s t a t i c S t r i n g h e u r i s t i c F u n c t i o n = Game . Game . H n u l l ﺷ ﻞ :٧ﭘﺎراﻣﺘﺮﻫﺎی ورودی ﺑﺮای ١-٢ ٢.٢ ﺗﺎﺑﻊ اﺑﺘﮑﺎری ﮔﻮﺷﻪای در اﯾﻦ ﻗﺴﻤﺖ )ﺑﺎ ﻓﺮض ﺣﻞ ﺷﺪن ﻗﺴﻤﺖ ﻗﺒﻞ!( ﻓﻘﻂ ﺑﺎﯾﺪ ﮐﻼس CornersHeuristicرا ﭘﺮ ﮐﻨﯿﺪ .در اﯾﻦ ﺗﺎﺑﻊ اﺑﺘﮑﺎری ﮐﺎﻓﯿﺴﺖ ﺑﻪ ازای ﯾ CornersSearchProblemو ﯾ ،CornersSearchStateﻣﻘﺪار ﺗﺎﺑﻊ اﺑﺘﮑﺎری را ﻣﺤﺎﺳﺒﻪ و ﺑﺎز ﮔﺮداﻧﯿﺪ. ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ اﯾﻦ ﺗﺎﺑﻊ اﺑﺘﮑﺎری ﺑﺎﯾﺪ ﺣﺘﻤﻦ Admissibleو Consistentﺑﺎﺷﺪ .در ﺻﻮرﺗ ﮐﻪ دو ﺷﺮط ﻓﻮق را ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ، ﻧﻤﺮهای ﻧﻤ ﮔﯿﺮد .ﻣﻌﯿﺎر ارزﯾﺎﺑﯽ ﺗﺎﺑﻊ اﺑﺘﮑﺎری ﺷﻤﺎ ﺗﻌﺪاد راسﻫﺎی ﮔﺴﺘﺮش داده ﺷﺪه اﺳﺖ .ﮐﻪ ﺑﺮاﺑﺮ ﺑﺎ ﺗﻌﺪاد ﺑﺎرﻫﺎی ﻓﺮاﺧﻮاﻧ ﺗﺎﺑﻊ getSuccessorsاﺳﺖ .ﺑﻪ ﺗﻮاﺑﻊ اﺑﺘﮑﺎری ﻏﯿﺮ ﺑﺪﯾﻬ و ﻗﺎﺑﻞﻗﺒﻮل و ﺳﺎزﮔﺎر ۵ ،ﻧﻤﺮه ﺗﻌﻠﻖ ﻣ ﮔﯿﺮد .اﮔﺮ ﮐﻤﺘﺮ از ١۶٠٠ راس را ﮔﺴﺘﺮش دﻫﺪ ۵+ ،ﻧﻤﺮهی دﯾ ﺮ ،و اﮔﺮ ﮐﻤﺘﺮ از ١٢٠٠راس را ﮔﺴﺘﺮش دﻫﺪ ۵+ﻧﻤﺮهی دﯾ ﺮ ﻣ ﮔﯿﺮد. ; ” 1 p u b l i c s t a t i c S t r i n g mapName = ” mediumCorners ;2 p u b l i c s t a t i c S t r i n g s e a r c h P r o b l e m = Game . CORNER ; 3 p u b l i c s t a t i c S t r i n g s e a r c h A l g o r i t h m = Game . ASTAR ; 4 p u b l i c s t a t i c S t r i n g h e u r i s t i c F u n c t i o n = Game . H CORNER ﺷ ﻞ :٨ﭘﺎراﻣﺘﺮﻫﺎی ورودی ﺑﺮای ٢-٢ Search Problem ٧ Corner Representation ۴ ٨ State ٣ ﺟﺴﺘﺠﻮی ﻏﺬاﻫﺎ ) ٢٠ﻧﻤﺮه ،ﻫﺮ ﻗﺴﻤﺖ ۵ﻧﻤﺮه( در اﯾﻦ ﻣﺴﺌﻠﻪ ﻫﺪف ﺧﻮردن ﺗﻤﺎﻣ ﻏﺬاﻫﺎ ،در ﮐﻢﺗﺮﯾﻦ زﻣﺎن اﺳﺖ .در اﺑﺘﺪا ﺷﻤﺎ ﻣ ﺎن ﻏﺬاﻫﺎ و ﭘ ﻣﻦ را در اﺧﺘﯿﺎر دارﯾﺪ. ; ” 1 p u b l i c s t a t i c S t r i n g mapName = ” t r i c k y S e a r c h ;2 p u b l i c s t a t i c S t r i n g s e a r c h P r o b l e m = Game . FOOD ; 3 p u b l i c s t a t i c S t r i n g s e a r c h A l g o r i t h m = Game . ASTAR ; 4 p u b l i c s t a t i c S t r i n g h e u r i s t i c F u n c t i o n = Game . H FOOD ﺷ ﻞ :٩ﭘﺎراﻣﺘﺮﻫﺎی ورودی ﺑﺮای ٣ در اﯾﻦ ﺳﻮال ﮐﺎﻓﯿﺴﺖ ﮐﻼس FoodHeuristic.javaرا ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﺪ .ﮐﻪ ﺑﺎ ﮔﺮﻓﺘﻦ ﯾ ﯾ ﻣﺴﺌﻠﻪ FoodSearchProblemو وﺿﻌﯿﺖ FoodSearchStateﻣﻘﺪار ﺗﺎﺑﻊ اﺑﺘﮑﺎری را آن وﺿﻌﯿﺖ را ﺑﺮﻣ ﮔﺮداﻧﺪ. ; ) ( 1 p u b l i c i n t getID ; ) ( 2 public Point getPos ; ) ( 3 p u b l i c A r r a y L i s t <P o i n t > g e t F o o d s ; ) ( 4 p u b l i c A r r a y L i s t <P o i n t > g e t B a s e F o o d ﺷ ﻞ :١٠ﺗﻮاﺑﻊ ﻣﻮﺟﻮد در ﯾ وﺿﻌﯿﺖ ﻏﺬاﯾﯽ ﺗﻮاﺑﻌ ﮐﻪ ﺑﺮای ﮐﺎر ﺑﺎ FoodSearchStateﻧﯿﺎز دارﯾﺪ ،در زﯾﺮ آﻣﺪه اﺳﺖ :ﺗﺎﺑﻊ ١و ٢ﻗﺒﻠﻦ ﺗﻮﺿﯿﺢ داده ﺷﺪه اﻧﺪ .ﺗﺎﺑﻊ ٣ﻣ ﺎن ﻏﺬاﻫﺎﯾﯽ ﮐﻪ ﻫﻨﻮز ﺧﻮرده ﻧﺸﺪه را ﺑﺮﻣ ﮔﺮداﻧﺪ .ﺗﺎﺑﻊ ،۴ﻣ ﺎن اﺑﺘﺪاﯾﯽ ﺗﻤﺎم ﻏﺬاﻫﺎ را ﺑﺮﻣ ﮔﺮداﻧﺪ. راﻫﻨﻤﺎﯾﯽ :ﺷﻤﺎ ﺑﻪ ﺗﺎﺑﻊ ۴ﻧﯿﺎز ﻧﺨﻮاﻫﯿﺪ داﺷﺖ! ﺑﺮای ﺗﺴﺖ در ﺣﺎﻟﺖ ﮐﻮﭼ ﺗﺮ ﻣ ﺗﻮاﻧﯿﺪ از ﻧﻘﺸﻪی testSearchاﺳﺘﻔﺎده ﮐﻨﯿﺪ وﻟ ارزﯾﺎﺑﯽ ﺑﺮ روی ﻧﻘﺸﻪی ذﮐﺮ ﺷﺪه در ﺑﺎﻻ اﺳﺖ .ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ اﯾﻦ ﺗﺎﺑﻊ اﺑﺘﮑﺎری ﺑﺎﯾﺪ ﺣﺘﻤﻦ Admissibleو Consistentﺑﺎﺷﺪ .در ﺻﻮرﺗ ﮐﻪ دو ﺷﺮط ﻓﻮق را ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ ،ﻧﻤﺮهای ﻧﻤ ﮔﯿﺮد .ﻣﻌﯿﺎر ارزﯾﺎﺑﯽ ﺗﺎﺑﻊ اﺑﺘﮑﺎری ﺷﻤﺎ ﺗﻌﺪاد راسﻫﺎی ﮔﺴﺘﺮش داده ﺷﺪه اﺳﺖ .ﮐﻪ ﺑﺮاﺑﺮ ﺑﺎ ﺗﻌﺪاد ﺑﺎرﻫﺎی ﻓﺮاﺧﻮاﻧ ﺗﺎﺑﻊ getSuccessorsاﺳﺖ .ﺑﻪ ﺗﻮاﺑﻊ اﺑﺘﮑﺎری ﻏﯿﺮ ﺑﺪﯾﻬ و ﻗﺎﺑﻞﻗﺒﻮل و ﺳﺎزﮔﺎر ﮐﻪ ﮐﻤﺘﺮ از ١۵٠٠٠راس را ﮔﺴﺘﺮش ﺑﺪﻫﺪ ۵ﻧﻤﺮه ﺗﻌﻠﻖ ﻣ ﮔﯿﺮد .اﮔﺮ ﮐﻤﺘﺮ از ١٢٠٠٠راس ۵+ ،ﻧﻤﺮهی دﯾ ﺮ ،اﮔﺮ ﮐﻤﺘﺮ از ٩٠٠٠راس ۵+ ،ﻧﻤﺮهی دﯾ ﺮ و اﮔﺮ ﮐﻤﺘﺮ از ٧٠٠٠راس را ﮔﺴﺘﺮش دﻫﺪ ۵+ﻧﻤﺮهی دﯾ ﺮ ﻣ ﮔﯿﺮد. ۵ ﺗﻮﺿﯿﺤﺎت ﮐﻠ ﮔﺮاﻓﯿ ﮔﺮاﻓﯿ ﺑﺎزی ﺑﻪ ﺻﻮرت ﻣﺒﺘﻨ ﺑﺮ ﻣﺘﻦ اﺳﺖ .اﻣ ﺎن اﺟﺮای ﺑﺎزی ﺑﻪ ﺻﻮرت ﮔﺮاﻓﯿ در ﭘﺎﯾﺘﻮن وﺟﻮد دارد وﻟ ﻣﺴﺘﻠﺰم ﻧﺼﺐ ﺑﻮدن ﭘﺎﯾﺘﻮن ﺑﺮ روی ﮐﺎﻣﭙﯿﻮﺗﺮ ﺷﻤﺎ اﺳﺖ .ﺗﻮﺟﻪ ﮐﻨﯿﺪ اﯾﻦ ﻗﺴﻤﺖ ﮐﺎﻣﻠﻦ اﺿﺎﻓﻪ اﺳﺖ ،و ﺑﺮای زﯾﺒﺎﯾﯽ ﭘﺮوژه اﺳﺖ. ﺑﺎ ﻓﻌﺎل ﺑﻮدن آﭘﺸﻦ ﮔﺮاﻓﯿ ﯾﻌﻨ ; ،game.GRAPHIC ENABLE = trueدر اﻧﺘﻬﺎی اﺟﺮای ﺑﺮﻧﺎﻣﻪی ﺟﺎوا دﺳﺘﻮری ﺑﺮای ﺷﻤﺎ ﻧﻮﺷﺘﻪ ﻣ ﺷﻮد ﮐﻪ ﺑﺎ اﺟﺮای آن در ﻓﻮﻟﺪر ﭘﺮوژه )ﺟﺎﯾﯽ ﮐﻪ src & pythonﻗﺮار دارد( در ﺗﺮﻣﯿﻨﺎل ،ﮔﺮاﻓﯿ ﺑﺎزی ﺑﻪ ﺻﻮرت زﯾﺒﺎ )ﻣﺎﻧﻨﺪ ﻋﮑﺲ اول ﺗﻤﺮﯾﻦ( اﺟﺮا ﻣ ﺷﻮد. دﯾﺒﺎگ ﺷ ﻞ :١١ﺑﺎزی ﭘ ﻣﻦ ﻣﺒﺘﻨ ﺑﺮ ﻣﺘﻦ در ﺟﺎوا ،ﻫﻤﺎن ﻧﻘﺸﻪ در ﺷ ﻞ اول ﺗﻤﺮﯾﻦ! ﺑﺮای دﯾﺒﺎگ ﺑﺎزی راهﻫﺎی زﯾﺎدی وﺟﻮد دارد وﻟ ﺑﺎ ﻓﻌﺎل ﮐﺮدن آﭘﺸﻦ دﯾﺒﺎگ ﯾﻌﻨ ; ،game.DEBUG MODE = true ﻣ ﺗﻮاﻧﯿﺪ ﺑﻪ ﺻﻮرت ﮔﺎم ﺑﻪ ﮔﺎم ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﮐﻨﯿﺪ و ﺑﻌﺪ از اﺟﺮای ﻫﺮ ﺣﻠﻘﻪی ﺑﺎزی ﺑﺎ وارد ﮐﺮدن ﻋﺪد ٠ﺑﻪ ﺣﻠﻘﻪی ﺑﻌﺪی ﺑﺎزی ﻣ رود. ﮐﭙﯽراﯾﺖ ﺗﻤﺮﯾﻦ ﺻﻮرت ﺗﻤﺮﯾﻦ و ﻣﻮﺗﻮر ﮔﺮاﻓﯿ آن از ﺗﻤﺮﯾﻦ درس ﻫﻮش آﻧﻼﯾﻦ داﻧﺸ ﺎه ﺑﺮﮐﻠ اﺳﺖ .ﻃﺮاﺣ و ﭘﯿﺎدهﺳﺎزی ﺑﻪ زﺑﺎن ﺟﺎوا ﺑﺮای داﻧﺸ ﺎه ﺷﺮﯾﻒ اﺳﺖ. Licensing Information: Please do not distribute or publish solutions to this project. You are free to use and extend these projects for educational purposes. The Pacman AI projects were developed at UC Berkeley, primarily by John DeNero (denero@cs.berkeley.edu) and Dan Klein (klein@cs.berkeley.edu). ﻧﮑﺎت دﯾ ﺮ ﺑﺮ ﺧﻼف ﺻﻮرت ﺗﻤﺮﯾﻦ ﮐﻪ ﺑﺴﯿﺎر زﯾﺎد اﺳﺖ ،ﺟﻮاب ﻫﺎ ﺑﺴﯿﺎر ﮐﻮﺗﺎه و ﻣﺨﺘﺼﺮ ﻫﺴﺘﻨﺪ. اﻣ ﺎن ﺗﺤﻮﯾﻞ ﺗﻤﺮﯾﻦ ﺑﻪ زﺑﺎن ﭘﺎﯾﺘﻮن ﻧﯿﺰ وﺟﻮد دارد ﺑﺮای اﻃﻼﻋﺎت ﺑﯿﺸﺘﺮ ﺑﻪ دﺳﺘﯿﺎر ﻣﺮﺑﻮﻃﻪی اﯾﻦ ﺗﻤﺮﯾﻦ )ﺑﻬﺮوز رﺑﯿﻌ ( ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ .در ﺻﻮرت ﻣﺸﺎﻫﺪهی ﻫﺮﮔﻮﻧﻪ ﺑﺎگ ﯾﺎ ﻣﺸ ﻞ ﺑﻪ اﯾﻤﯿﻞ ﺗﻤﺮﯾﻦ ﺑﺎ ﻣﻮﺿﻮع BUGS HW 1اﯾﻤﯿﻞ ارﺳﺎل ﮐﻨﯿﺪ ﯾﺎ ﺑﻪ دﺳﺘﯿﺎر ﻣﺮﺑﻮﻃﻪی اﯾﻦ ﺗﻤﺮﯾﻦ ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ ..................................................................................... .ﻣﻮﻓﻖ ﺑﺎﺷﯿﺪ. ۶
© Copyright 2025 Paperzz