ﯾﺎﻟﻄﯿﻒ ﻫﻮش ﻣﺼﻨﻮﻋ ﻧﯿﻢﺳﺎل دوم ٩٢٩١ ﻣﺪرس :دﮐﺘﺮ ﺳﻠﯿﻤﺎﻧ داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ ﺗﻤﺮﯾﻦ ﺷﻤﺎرهی ﺳﻮم -ﻣﺨﺼﻮص داﻧﺸﺠﻮﯾﺎن ﺳﺨﺖاﻓﺰار ﻣﻬﻠﺖ ارﺳﺎل :اول اردﯾﺒﻬﺸﺖ ﺗﻮﺿﯿﺢ ﺗﻤﺮﯾﻦ • ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﻘﺎﺿﺎی ﺗﻌﺪادی از داﻧﺸﺠﻮﯾﺎن ﺳﺨﺖاﻓﺰار ،ﺑﺨﺶ ﻋﻤﻠ ﺗﻤﺮﯾﻦ ﺳﺮی ﺳﻮم ﺑﺮای آﻧﻬﺎ ﺗﻐﯿﯿﺮ ﮐﺮده اﺳﺖ و آﻧﻬﺎ ﻣ ﺗﻮاﻧﻨﺪ ﻣﻄﺎﺑﻖ ﺑﺎ ﺗﻮﺿﯿﺤﺎت اﯾﻦ ﺗﻤﺮﯾﻦ ،ﻋﺎﻣﻞ ﺧﻮد را ﺑﺎ زﺑﺎن C++ﺑﻨﻮﯾﺴﻨﺪ. • ﺷﻤﺎ ﻣ ﺗﻮاﻧﯿﺪ ﭘﺮوژهی ﺟﺎوا را ﺗﺤﻮﯾﻞ دﻫﯿﺪ .ﭘﺮوژهی ﺟﺎوا ١۵ﻧﻤﺮه ﺑﯿﺸﺘﺮ از ﭘﺮوژهی C++دارد. • ﺗﻤﺮﯾﻦ ﺷﻤﺎ دارای دو ﺑﺨﺶ اﺳﺖ :ﺑﺨﺶ ﺗﺌﻮری و ﺑﺨﺶ ﻋﻤﻠ .در ﺑﺨﺶ ﺗﺌﻮری ﺑﺎﯾﺪ ﺑﻪ ﺗﻌﺪادی ﺳﻮال در راﺑﻄﻪ ﺑﺎ ﻓﺼﻞ ﭘﻨﺠﻢ درسﺗﺎن ﭘﺎﺳﺦ دﻫﯿﺪ .در ﺑﺨﺶ ﻋﻤﻠ ﺑﺎﯾﺪ ﺑﺮای ﺑﺎزی اﺗﻠﻮ ﯾ ﻋﺎﻣﻞ ﻫﻮﺷﻤﻨﺪ ﻃﺮاﺣ ﮐﻨﯿﺪ. • اﯾﻦ ﺗﻤﺮﯾﻦ در ﻣﺠﻤﻮع ١٠٠ﻧﻤﺮه دارد ﮐﻪ ٣٠ﻧﻤﺮه ﻣﺮﺑﻮط ﺑﻪ ﺑﺨﺶ ﺗﺌﻮری اﺳﺖ و ٧٠ﻧﻤﺮه ﻣﺮﺑﻮط ﺑﻪ ﺑﺨﺶ ﻋﻤﻠ اﺳﺖ. • در ﺻﻮرت ﻣﺸﺎﻫﺪهی ﺗﻘﻠﺐ ﺑﺮای ﻫﺮ دو ﻃﺮف ﻧﻤﺮهی ﺻﻔﺮ ﻣﻨﻈﻮر ﻣ ﺷﻮد. • ﺑﻪ ازای ﻫﺮ روز دﯾﺮﮐﺮد در ﺗﺤﻮﯾﻞ ﺗﻤﺮﯾﻦ ١٠٪ ،از ﻧﻤﺮهی آن ﮐﺎﺳﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ. • ﺟﻮاب ﺗﻤﺮﯾﻦﻫﺎی ﺧﻮد را ﺑﻪ آدرس [email protected]ﺑﺎ ﻣﻮﺿﻮع ] HW3-[student-IDارﺳﺎل ﮐﻨﯿﺪ .ﺑﺮای ﻫﺮ ﺑﺨﺶ ﻓﺎﯾﻞﻫﺎی ﻻزم ﺑﺮای ارﺳﺎل ﺗﻮﺿﯿﺢ داده ﺷﺪه اﺳﺖ. • در ﺻﻮرﺗ ﮐﻪ در راﺑﻄﻪ ﺑﺎ ﺗﻤﺮﯾﻦ ﺳﻮاﻟ دارﯾﺪ آن را در ﮔﺮوه درس ﺑﻪ آدرس زﯾﺮ ﻣﻄﺮح ﮐﻨﯿﺪ: https://groups.google.com/forum/#!forum/sharif_ai_91-92_2 .١ﺑﺨﺶ ﻋﻤﻠ ٧٠. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ﻧﻤﺮه در اﯾﻦ ﺑﺨﺶ ﺷﻤﺎ ﺑﺎﯾﺪ ﺑﺮای ﺑﺎزی دو ﻧﻔﺮهی اﺗﻠﻮ )ﺑﺎ اﻧﺪﮐ ﺗﻐﯿﯿﺮ( ﺑﺎ اﺳﺘﻔﺎده از اﻟ ﻮرﯾﺘﻢ M inimaxو روش ﺑﻬﯿﻨﻪﺳﺎزی Alpha − Betaﯾ ﻋﺎﻣﻞ ﻫﻮﺷﻤﻨﺪ ﺑﻪ زﺑﺎن C++ﻃﺮاﺣ ﮐﻨﯿﺪhttp://en.wikipedia.org/wiki/Reversi : ﻗﻮاﻧﯿﻦ در ﻟﯿﻨ ﺑﺎﻻ ،ﻗﻮاﻧﯿﻦ ﺑﺎزی ﺑﻪ ﻫﻤﺮاه ﻧ ﺎﺗ ﻣﻔﯿﺪ در راﺑﻄﻪ ﺑﺎ اﺳﺘﺮاﺗﮋیﻫﺎی ﺑﺎزی وﺟﻮد دارد .در اﯾﻨﺠﺎ ﺑﻪ ﻃﻮر ﺧﻼﺻﻪ ﻗﻮاﻧﯿﻦ ﺑﺎزی را ﻣﺮور ﻣ ﮐﻨﯿﻢ: • ﺑﺎزی روی ﯾ ﺟﺪول ٨ × ٨اﻧﺠﺎم ﻣ ﺷﻮد ﮐﻪ در اﺑﺘﺪا ۴ﺧﺎﻧﻪی ﻣﺮﮐﺰی آن ﻣﻄﺎﺑﻖ ﺷ ﻞ ١زﯾﺮ ﭘﺮ ﺷﺪه اﺳﺖ. • ﺑﺎزﯾ ﻦ ﺳﯿﺎه ﺑﺎزی را آﻏﺎز ﻣ ﮐﻨﺪ .او ﺑﺎﯾﺪ ﻣﻬﺮهاش را ﺟﺎﯾ ﺑ ﺬارد ﮐﻪ ﺣﺪاﻗﻞ در ﯾ از راﺳﺘﺎﻫﺎی ﻋﻤﻮدی ،اﻓﻘ ﯾﺎ ﻗﻄﺮی ﻣﻬﺮهی ﺳﯿﺎه دﯾ ﺮی ﺑﺎﺷﺪ و ﻓﺎﺻﻠﻪی ﺑﯿﻦ اﯾﻦ دو ﻣﻬﺮهی ﺳﯿﺎه را ﺗﻤﺎﻣﺎ ﻣﻬﺮهﻫﺎی ﺳﻔﯿﺪ )ﮐﻪ ﺗﻌﺪاد آﻧﻬﺎ ﺣﺪاﻗﻞ ﯾ اﺳﺖ( ﭘﺮ ﮐﺮده ﺑﺎﺷﺪ .ﺑﻌﺪ از اﯾﻦ ﺣﺮﮐﺖ ﺗﻤﺎﻣ اﯾﻦ ﻣﻬﺮهﻫﺎی ﺳﻔﯿﺪ )در ﻫﻤﻪی راﺳﺘﺎﻫﺎی ﻋﻤﻮدی ،اﻓﻘ و ﻗﻄﺮی( رﻧ ﺷﺎن ﺳﯿﺎه ﻣ ﺷﻮد. • ﺑﻌﺪ از ﺑﺎزﯾ ﻦ ﺳﯿﺎه ،ﻧﻮﺑﺖ ﺑﺎزﯾ ﻦ ﺳﻔﯿﺪ ﻣ ﺷﻮد و ﺑﻪ ﺷ ﻞ ﻣﺸﺎﺑﻪ ﺣﺮﮐﺖ ﺧﻮد را اﻧﺠﺎم ﻣ دﻫﺪ و ﻫﻤﯿﻨﻄﻮر ﺑﺎزی ﺑﻪ ﺷ ﻞ ﻧﻮﺑﺘ اداﻣﻪ ﭘﯿﺪا ﻣ ﮐﻨﺪ. ١ • اﮔﺮ ﯾ از ﺑﺎزﯾ ﻨﺎن ﻧﺘﻮاﻧﺪ ﺣﺮﮐﺘ اﻧﺠﺎم دﻫﺪ ﺑﺎزی را ﺑﺎزﯾ ﻦ دﯾ ﺮ اداﻣﻪ ﻣ دﻫﺪ. • ﺑﺎزی وﻗﺘ ﺗﻤﺎم ﻣ ﺷﻮد ﮐﻪ ﻫﯿﭻ ﯾ از ﺑﺎزﯾ ﻨﺎن ﻧﺘﻮاﻧﺪ ﺣﺮﮐﺘ اﻧﺠﺎم دﻫﺪ .در اﯾﻦ ﺻﻮرت ﺑﺮﻧﺪهی ﺑﺎزی ﮐﺴ اﺳﺖ ﮐﻪ ﺗﻌﺪاد ﻣﻬﺮهﻫﺎی ﺑﯿﺸﺘﺮی داﺷﺘﻪ ﺑﺎﺷﺪ. • ﺑﺮای اﯾﻦ ﺗﻤﺮﯾﻦ ،ﯾ ﻗﺎﻧﻮن اﺿﺎﻓﻪ دارﯾﻢ و آن اﯾﻦ اﺳﺖ ﮐﻪ ﺣﻖ ﮔﺬاﺷﺘﻦ ﻣﻬﺮه در ۴ﺧﺎﻧﻪی ﮔﻮﺷﻪی ﺟﺪول را ﻧﺪارﯾﻢ. ﺷ ﻞ :١ﺻﻔﺤﻪی ﺑﺎزی در ﻟﺤﻈﻪی ﺷﺮوع ورودی و ﺧﺮوﺟ ﺑﺮﻧﺎﻣﻪی ﺷﻤﺎ ﺑﺎﯾﺪ در ﻗﺎﻟﺐ ﯾ ﻓﺎﯾﻞ ﺑﻪ اﺳﻢ Student-ID.cppﻧﻮﺷﺘﻪ ﺷﻮد. ﮐﺪ ﺷﻤﺎ ﺑﺎﯾﺪ ﺑﺎ اﺳﺘﻔﺎده از ﮐﺎﻣﭙﺎﯾﻠﺮ g++ﮐﺎﻣﭙﺎﯾﻞ ﺷﻮد ،درﻏﯿﺮ اﯾﻦ ﺻﻮرت ﻧﻤﺮهی اﯾﻦ ﺑﺨﺶ ﺻﻔﺮ ﻟﺤﺎظ ﻣ ﺷﻮد .ﺑﺮای اﻃﻤﯿﻨﺎن ﻣ ﺗﻮاﻧﺪ از ﮐﺎﻣﭙﺎﯾﻠﺮﻫﺎی آﻧﻼﯾﻦ اﺳﺘﻔﺎده ﮐﻨﯿﺪ. ﺑﺮﻧﺎﻣﻪی ﺷﻤﺎ ﺑﺎﯾﺪ ﯾ رﺷﺘﻪ را ﺑﻪ ﻋﻨﻮان ﭘﺎراﻣﺘﺮ اول ﺑ ﯿﺮد .در ﺻﻮرﺗ ﮐﻪ اﯾﻦ رﺷﺘﻪ ﻣﻘﺪارش blackﺑﺎﺷﺪ ﺷﻤﺎ ﺑﺎزﯾ ﻦ ﺳﯿﺎه ﻫﺴﺘﯿﺪ .در ﺻﻮرﺗ ﮐﻪ ﻣﻘﺪارش whiteﺑﺎﺷﺪ ﺷﻤﺎ ﺑﺎزﯾ ﻦ ﺳﻔﯿﺪ ﻫﺴﺘﯿﺪ )ﺑﺎزﯾ ﻦ ﺳﯿﺎه اوﻟﯿﻦ ﺣﺮﮐﺖ را اﻧﺠﺎم ﻣ دﻫﺪ( .ﻧﺤﻮهی ﺧﻮاﻧﺪن ﭘﺎراﻣﺘﺮ در اﯾﻦ ﻟﯿﻨ ﺗﻮﺿﯿﺢ داده ﺷﺪه اﺳﺖhttp://www.cplusplus.com/articles/DEN36Up4/ : ﺑﻌﺪاز اﯾﻨ ﻪ رﻧ ﺧﻮد را ﺗﺸﺨﯿﺺ دادﯾﺪ ﺑﺎﯾﺪ ﺑﺮاﺳﺎس اﯾﻨ ﻪ ﻧﻮﺑﺖ ﺧﻮدﺗﺎن اﺳﺖ ﯾﺎ ﻧﻮﺑﺖ ﺣﺮﯾﻒ ،ﯾ از دوﮐﺎر زﯾﺮ را اﻧﺠﺎم دﻫﯿﺪ: • اﮔﺮ ﻧﻮﺑﺖ ﺷﻤﺎ اﺳﺖ ،ﺑﺎﯾﺪ ﺣﺮﮐﺖ ﺧﻮد را ﺑﻪ ﺷ ﻞ ﯾ ﺟﻔﺖ ﻋﺪد در ﺧﺮوﺟ اﺳﺘﺎﻧﺪارد ) (stdoutﭼﺎپ ﮐﻨﯿﺪ .ﻋﺪد اول ﺷﻤﺎرهی ﺳﻄﺮی اﺳﺖ ﮐﻪ در آن ﻣﻬﺮه ﻗﺮار ﻣ دﻫﯿﺪ .ﻋﺪد دوم ﺷﻤﺎرهی ﺳﺘﻮن آن ﻣﻬﺮه اﺳﺖ .دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ ﺑﻌﺪاز ﭼﺎپ ﺣﺮﮐﺖ ﺧﻮد ﺣﺘﻤﺎ ﺧﺮوﺟ اﺳﺘﺎﻧﺪارد را flushﮐﻨﯿﺪ .ﺑﺮای اﻃﻼع ﺑﯿﺸﺘﺮ در ﻣﻮرد ﻓﻼش ﮐﺮدن ﺑﻪ اﯾﻦ ﻟﯿﻨ ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪhttp://www.cplusplus.com/reference/ostream/ostream/flush/ : • اﮔﺮ ﻧﻮﺑﺖ ﺣﺮﯾﻒ ﺷﻤﺎ اﺳﺖ ،ﺑﺎﯾﺪ ﺣﺮﮐﺖ ﺣﺮﯾﻒ ﺧﻮد را از ورودی اﺳﺘﺎﻧﺪارد ) (stdinﺑﺨﻮاﻧﯿﺪ )ﻣﺸﺎﺑﻪ ﻓﺮﻣﺖ ﺑﺎﻻ(. در ﻫﺮ ﻣﺮﺣﻠﻪ اﮔﺮ ﺑﺎزﯾ ﻦ ﺷﻤﺎ ﻗﺎدر ﺑﻪ ﺣﺮﮐﺖ ﻧﺒﻮد ،ﻧﺒﺎﯾﺪ ﻣﻘﺪاری در ﺧﺮوﺟ ﭼﺎپ ﮐﻨﺪ .ﯾﻌﻨ ﺑﺎﯾﺪ دوﺑﺎر ﭘﺸﺖ ﺳﺮ ﻫﻢ از ورودی ﺑﺨﻮاﻧﺪ .ﻫﻤﭽﻨﯿﻦ اﮔﺮ ﺑﺎﯾ ﻦ ﺣﺮﯾﻒ ﻗﺎدر ﺑﻪ ﺣﺮﮐﺖ ﻧﺒﺎﺷﺪ ،ﺑﺮﻧﺎﻣﻪی ﺷﻤﺎ ﺑﺎﯾﺪ ﺑﻪ ﻃﻮر ﺧﻮدﮐﺎر ﺣﺮﮐﺖ ﺑﻌﺪی را ﻫﻢ ﭼﺎپ ﮐﻨﺪ و ﻣﻨﺘﻈﺮ ﺣﺮﮐﺖ ﺣﺮﯾﻒ ﻧﻤﺎﻧﺪ .ﯾﻌﻨ ﺑﺎﯾﺪ دو ﺣﺮﮐﺖ در ﺧﺮوﺟ ﭼﺎپ ﮐﻨﺪ .درﻏﯿﺮ اﯾﻦ ﺻﻮرت ﻧﻤﺮهی ﺻﻔﺮ ﺑﻪ ﻋﺎﻣﻞ ﺷﻤﺎ ﺗﻌﻠﻖ ﻣ ﮔﯿﺮد. ﻫﻤﭽﻨﯿﻦ ﺑﻌﺪاز ﻫﺮ ﺣﺮﮐﺖ ،ﺑﺎﯾﺪ وﺿﻌﯿﺖ ﻓﻌﻠ ﺑﺎزی را در ﺧﺮوﺟ اﺳﺘﺎﻧﺪارد ﺧﻄﺎ ) (stderrﺑﻪ ﺷ ﻞ ﺟﺪوﻟ از ﮐﺎراﮐﺘﺮﻫﺎ ﻧﻤﺎﯾﺶ دﻫﯿﺪ .ﻧﺤﻮهی ﻧﻤﺎﯾﺶ ﺑﻪ اﯾﻦ ﺷ ﻞ اﺳﺖ ﮐﻪ ﻫﺮ ﺳﻄﺮ را در ﯾ ﺧﻂ ﻣ ﮐﺸﯿﺪ و ﻣﻄﺎﺑﻖ ﻟﯿﺴﺖ زﯾﺮ ﺑﻪ ازای ﻫﺮ ﺧﺎﻧﻪ، ﮐﺎراﮐﺘﺮ ﻣﻨﺎﺳﺒﺶ را ﭼﺎپ ﻣ ﮐﻨﯿﺪ: ٢ • ﺑﺮای ۴ﺧﺎﻧﻪی ﮔﻮﺷﻪی ﺟﺪول ﻓﺎﺻﻠﻪی ﺧﺎﻟ ) (spaceﭼﺎپ ﮐﻨﯿﺪ. • ﺑﺮای ﺧﺎﻧﻪﻫﺎﯾ ﮐﻪ ﺗﻮﺳﻂ ﺑﺎزﯾ ﻦ ﺳﯿﺎه اﺷﻐﺎل ﺷﺪهاﻧﺪ ﮐﺎراﮐﺘﺮ Xرا ﭼﺎپ ﮐﻨﯿﺪ. • ﺑﺮای ﺧﺎﻧﻪﻫﺎﯾ ﮐﻪ ﺗﻮﺳﻂ ﺑﺎزﯾ ﻦ ﺳﻔﯿﺪ اﺷﻐﺎل ﺷﺪهاﻧﺪ ﮐﺎراﮐﺘﺮ Oرا ﭼﺎپ ﮐﻨﯿﺪ. • ﺑﺮای ﺑﻘﯿﻪی ﺧﺎﻧﻪﻫﺎ ﮐﺎراﮐﺘﺮ _ ) (underlineرا ﭼﺎپ ﮐﻨﯿﺪ. دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ ﺑﯿﻦ ﮐﺎراﮐﺘﺮﻫﺎی ﯾ ﺳﻄﺮ ﻓﺎﺻﻠﻪی اﺿﺎﻓﻪ ﭼﺎپ ﻧ ﻨﯿﺪ. ﻧﻤﺮهدﻫ ،ﺗﻮﺿﯿﺤﺎت ﺗ ﻤﯿﻠ و ﻧﺤﻮهی ارﺳﺎل ﺗﻤﺮﯾﻦ • ٢٠ﻧﻤﺮهی اﯾﻦ ﺑﺨﺶ ﻣﺮﺑﻮط ﺑﻪ ﺗﺎﺑﻊ ارزﯾﺎﺑ ﺷﻤﺎ اﺳﺖ .ﻟﻄﻔﺎ ﺗﻮﺿﯿﺢ ﻣﺨﺘﺼﺮی در ﺣﺪ دو-ﺳﻪ ﭘﺎراﮔﺮاف در ﻣﻮرد ﺗﺎﺑﻊ ارزﯾﺎﺑ ﺧﻮد ﺑﺪﻫﯿﺪ و در ﯾ ﻓﺎﯾﻞ pdfﺟﺪاﮔﺎﻧﻪ ارﺳﺎل ﮐﻨﯿﺪ .ﻫﻤﭽﻨﯿﻦ در ﺻﻮرﺗ ﮐﻪ ﺗ ﻨﯿ ﺧﺎﺻ ﺑﺮای ﺑﻬﺒﻮد ﺳﺮﻋﺖ ﺟﺴﺘﺠﻮ )ﻣﺜﻞ Move-Orderingﯾﺎ ( Lookup Tableاﻧﺠﺎم دادهاﯾﺪ در اﯾﻦ ﻓﺎﯾﻞ ذﮐﺮ ﮐﻨﯿﺪ. • ۵٠ﻧﻤﺮهی اﯾﻦ ﺑﺨﺶ ﻣﺮﺑﻮط ﺑﻪ ﻋﻤﻠ ﺮد ﻋﺎﻣﻞ ﻫﻮﺷﻤﻨﺪ ﺷﻤﺎ در ﻣﻘﺎﺑﻞ ﻋﺎﻣﻞ ﺳﺎﯾﺮ دوﺳﺘﺎنﺗﺎن اﺳﺖ .درواﻗﻊ ﻫﻤﻪی ﻋﺎﻣﻞﻫﺎﯾ ﮐﻪ داﻧﺸﺠﻮﯾﺎن ارﺳﺎل ﻣ ﮐﻨﻨﺪ ﺑﺎ ﻫﻢ ﺑﺎزی ﻣ ﮐﻨﻨﺪ و ﺑﺮاﺳﺎس ﺗﻌﺪاد دﻓﻌﺎت ﺑﺮد ﻫﺮ ﻋﺎﻣﻞ ،اﻣﺘﯿﺎزی ﺑﻪ آن ﺗﻌﻠﻖ ﻣ ﮔﯿﺮد. • ﮐﺪ ﺷﻤﺎ ﺑﺎﯾﺪ ﻫﺮ ﺣﺮﮐﺖ ﺧﻮد را در زﻣﺎن ﺣﺪاﮐﺜﺮ ﯾ ﺛﺎﻧﯿﻪ )روی ﺳﯿﺴﺘﻤ ﺑﺎ ﭘﺮدازﺷ ﺮ core i7و ۴ﮔﯿ ﺎﺑﺎﯾﺖ رم( اﻧﺠﺎم دﻫﺪ .در ﻏﯿﺮ اﯾﻦ ﺻﻮرت ﺑﺎزﻧﺪهی ﺑﺎزی ﻣﺤﺴﻮب ﻣ ﺷﻮد .ﺑﻪ ﻫﻤﯿﻦ ﻋﻠﺖ ﺑﺮای اﻃﻤﯿﻨﺎن ﺗﻮﺻﯿﻪ ﻣ ﺷﻮد ﺣﺪ ﮐﻤﺘﺮی را درﻧﻈﺮ ﺑ ﯿﺮﯾﺪ. • ﻋﺎﻣﻞ ﺷﻤﺎ ﻧﺒﺎﯾﺪ ﺑﻪ ﻫﯿﭻ ﻧﺤﻮی ﺑﻪ ﺷ ﻞ Multi Threadﮐﺎر ﮐﻨﺪ .ﻫﻤﭽﻨﯿﻦ ﻧﺒﺎﯾﺪ ﻗﺴﻤﺖﻫﺎی دﯾ ﺮ ﮐﺪ را ﺗﻐﯿﯿﺮ دﻫﺪ )ﻣﺜﻼ ﺑﺎ اﺳﺘﻔﺎده از .( Reflectionﺑﻪ ﻃﻮر ﮐﻠ ﻫﯿﭻ ﮐﺎر ﻣﺸ ﻮک و ﺧﺎرج از ﻋﺮﻓ اﻧﺠﺎم ﻧﺪﻫﯿﺪ! (: • در ﺻﻮرﺗ ﮐﻪ در ﮐﺪﺗﺎن از ﻣﻮﻟﺪ اﻋﺪاد ﺗﺼﺎدﻓ اﺳﺘﻔﺎده ﻣ ﮐﻨﯿﺪ ،ﺣﺘﻤﺎ ﺑﺮای آن ﯾ ﻋﺎﻣﻞﺗﺎن در اﺟﺮاﻫﺎی ﻣﺨﺘﻠﻒ ﺑﺮﻧﺎﻣﻪ ،ﻋﻤﻠ ﺮد ﯾ ﺴﺎن داﺷﺘﻪ ﺑﺎﺷﺪ. seedﺛﺎﺑﺖ ﺗﻌﺮﯾﻒ ﮐﻨﯿﺪ ﺗﺎ • در ﺻﻮرت ﻣﺸﺎﻫﺪهی ﺑﺎگ و ﯾﺎ ﺑﺮوز ﻣﺸ ﻠ در ﮐﺪ ﭘﺮوژه ،ﻟﻄﻔﺎ ﺑﻪ دﺳﺘﯿﺎر ﻣﺮﺑﻮﻃﻪی ﺗﻤﺮﯾﻦ )ﻋﻠ ﺑﺎﺑﺎﯾ ( ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ و ﯾﺎ ﺑﺎ ﻣﻮﺿﻮع HW3-prblemاﯾﻤﯿﻞ ﺑﺰﻧﯿﺪ. • ﺑﺮای ﺑﺨﺶ ﻋﻤﻠ ﺑﺎﯾﺪ دو ﻓﺎﯾﻞ ارﺳﺎل ﮐﻨﯿﺪ .ﯾ ﻓﺎﯾﻞ Student-ID.cppو دﯾ ﺮی ﯾ ﻓﺎﯾﻞ pdfﮐﻪ در آن ﺗﺎﺑﻊ ارزﯾﺎﺑ ﺧﻮد ﺑﻪ ﻫﻤﺮاه ﺑﻘﯿﻪی روشﻫﺎﯾ ﮐﻪ ﺑﺮای ﺑﻬﯿﻨﻪﺳﺎزی اﺳﺘﻔﺎده ﮐﺮدهاﯾﺪ را ﺣﺪاﮐﺜﺮ در ﯾ ﺻﻔﺤﻪ ﺗﻮﺿﯿﺢ دادهاﯾﺪ. .٢ﺑﺨﺶ ﺗﺌﻮری ٣٠ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ﻧﻤﺮه ﺑﺮای اﯾﻦ ﺑﺨﺶ ﺗﻌﺪادی ﺳﻮال ﺗﺸﺮﯾﺤ وﺟﻮد دارد .ﻟﻄﻔﺎ ﭘﺎﺳﺦ ﺑﻪ ﻫﻤﻪی ﺳﻮالﻫﺎ را در ﯾ ﻓﺎﯾﻞﻫﺎی ﺑﺨﺶ ﻋﻤﻠ ارﺳﺎل ﮐﻨﯿﺪ .ﻟﻄﻔﺎ ﺑﺮای ﻫﺮ ﺳﻮال ﺣﺪاﮐﺜﺮ ﯾ ﭘﺎراﮔﺮاف ﺗﻮﺿﯿﺢ دﻫﯿﺪ. ﻓﺎﯾﻞ pdfﺑﻨﻮﯾﺴﯿﺪ و ﺑﻪ ﻫﻤﺮاه ﺳﻮال :١ در ﻣﻮرد درﺳﺖ ﯾﺎ ﻧﺎدرﺳﺖ ﺑﻮدن ﻋﺒﺎرات زﯾﺮ ﺗﻮﺿﯿﺢ دﻫﯿﺪ: • در درﺧﺖ ﺟﺴﺘﺠﻮی minimaxﺑﺎ اﺳﺘﻔﺎده از ﻫﺮس ،Alpha-Betaﭼﻮن ﺑﻌﻀ از ﮔﺮهﻫﺎ را ﺑﺮرﺳ ﻧﻤ ﮐﻨﯿﻢ ،ﻣﻘﺪاری ﮐﻪ ﺑﺮای رﯾﺸﻪ ﺑﻪ دﺳﺖ ﻣ آورﯾﻢ ﻣ ﺗﻮاﻧﺪ ﮐﻤﺘﺮ ﯾﺎ ﺑﯿﺸﺘﺮ از ﺣﺎﻟﺘ ﺑﺎﺷﺪ ﮐﻪ از اﯾﻦ ﻫﺮس اﺳﺘﻔﺎده ﻧﻤ ﮐﻨﯿﻢ. • در درﺧﺖ ﺟﺴﺘﺠﻮی minimaxﺑﺎ اﺳﺘﻔﺎده از ﻫﺮس ،Alpha-Betaﭼﻮن ﺳﺮﻋﺖ ﺟﺴﺘﺠﻮ ﺑﯿﺸﺘﺮ ﻣ ﺷﻮد ،ﻣﻘﺪاری ﮐﻪ ﺑﺮای رﯾﺸﻪ ﺑﺪﺳﺖ ﻣ آورﯾﻢ ﻧﺰدﯾ ﺗﺮ ﺑﻪ ﻣﻘﺪار واﻗﻌ رﯾﺸﻪ اﺳﺖ. ٣ ﺳﻮال :٢ ﻓﺮض ﮐﻨﯿﺪ در ﺑﺎزی اﺗﻠﻮ ﺣﺮﯾﻒ ﺷﻤﺎ RandomAI ،ﺑﺎﺷﺪ .ﯾﻌﻨ از ﺑﯿﻦ ﻫﻤﻪی اﻧﺘﺨﺎبﻫﺎی ﻣﻤ ﻦ ﯾ را ﺑﺎ اﺣﺘﻤﺎل ﻣﺴﺎوی اﻧﺘﺨﺎب ﮐﻨﺪ .در اﯾﻦ ﺣﺎﻟﺖ ،ﺑﺮای ﻣﺤﺎﺳﺒﻪی ارزش وﺿﻌﯿﺖ ﺑﺎزی ﺑﺎﯾﺪ از اﻟ ﻮرﯾﺘﻢ expectimaxﺑﻪ ﺟﺎی minimaxاﺳﺘﻔﺎده ﮐﻨﯿﻢ .آﯾﺎ ارزش وﺿﻌﯿﺖ ﺑﺎزی در اﯾﻦ ﺣﺎﻟﺖ )ﺣﺎﻟﺘ ﮐﻪ ﺣﺮﯾﻒ ﺗﺼﺎدﻓ ﺑﺎزی ﻣ ﮐﻨﺪ( ،ﻣ ﺗﻮاﻧﺪ اﮐﯿﺪا ﮐﻤﺘﺮ از ﺣﺎﻟﺘ ﺑﺎﺷﺪ ﮐﻪ ﺣﺮﯾﻒ ﮐﺎﻣﻼ ﺑﻬﯿﻨﻪ ﺑﺎزی ﻣ ﮐﻨﺪ )و ﺷﻤﺎ درﺧﺖ minimaxرا ﺣﺴﺎب ﻣ ﮐﻨﯿﺪ(؟ ﺳﻮال :٣ ﻓﺮض ﮐﻨﯿﺪ ﯾ ﺑﺎزی ﺳﻪ ﻧﻔﺮه دارﯾﻢ .ﻫﻤﭽﻨﯿﻦ ﯾ ﺗﺎﺑﻊ ارزﯾﺎﺑ دارﯾﻢ ﮐﻪ ﺑﻪ ازای ﻫﺮ وﺿﻌﯿﺖ ﺳﻪ ﻋﺪد ﺑﺮﻣ ﮔﺮداﻧﺪ ﮐﻪ ﻧﺸﺎﻧ ﺮ ﻣﯿﺰان ارزش آن وﺿﻌﯿﺖ ﺑﺮای ﻫﺮﯾ از ﺑﺎزﮐﻨﺎن اﺳﺖ .ﺑﺎ ﻓﺮض اﯾﻨ ﻪ ﻫﺮ ﺳﻪ ﺑﺎزﯾ ﻦ ﺑﻬﯿﻨﻪ ﺑﺎزی ﻣ ﮐﻨﻨﺪ ،اﻟ ﻮرﯾﺘﻤ ﻣﺸﺎﺑﻪ اﻟ ﻮرﯾﺘﻢ minimaxاراﺋﻪ ﮐﻨﯿﺪ ﮐﻪ در ﯾ وﺿﻌﯿﺖ ﻣﺸﺨﺺ ،ﺑﻬﺘﺮﯾﻦ ﺣﺮﮐﺖ را ﺑﺮای ﺑﺎزﯾ ﻦ اول ﻣﺸﺨﺺ ﮐﻨﺪ. ﺳﻮال :۴ در ﺳﻮال ﻗﺒﻞ ،اﮔﺮ ﺑﺪاﻧﯿﻢ ﺑﺎزﯾ ﻦ اول ﺑﻬﯿﻨﻪ ﺑﺎزی ﻣ ﮐﻨﺪ ،وﻟ ﺑﺎزﯾ ﻨﺎن دوم و ﺳﻮم ﻏﯿﺮ ﺑﻬﯿﻨﻪ ﺑﺎزی ﻣ ﮐﻨﺘﺪ ،آﯾﺎ اﻟ ﻮرﯾﺘﻢ داده ﺷﺪه ﻣ ﺗﻮاﻧﺪ ﺗﻀﻤﯿﻦ ﮐﻨﺪ ﮐﻪ ﻧﺘﯿﺠﻪی ﺑﺎزی ﺑﺪﺗﺮ از ﺣﺎﻟﺘ ﮐﻪ ﺑﺪاﻧﯿﻢ ﻫﻤﻪ ﺑﻬﯿﻨﻪ ﺑﺎزی ﻣ ﮐﻨﻨﺪ ﻧﻤ ﺷﻮد؟ ﯾﻌﻨ ﺑﺎزﯾ ﻦ اول ﺣﺪاﻗﻞ ﺑﻪ ﻣﯿﺰاﻧ ﮐﻪ در ﺣﺎﻟﺖ ﻗﺒﻞ ﺳﻮد ﻣ ﮐﺮد ،در اﯾﻦ ﺣﺎﻟﺖ ﺳﻮد ﻣ ﮐﻨﺪ؟ ﺳﻮال :۵ ﺷ ﻞ زﯾﺮ ﯾ درﺧﺖ minimaxرا ﻧﺸﺎن ﻣ دﻫﺪ ﮐﻪ ﻣﻘﺪار ﯾ از ﺑﺮگﻫﺎی آن ﻧﺎﻣﻌﻠﻮم ) (xاﺳﺖ .ﺑﺎ ﻓﺮض اﯾﻨ ﻪ ﺑﺎزﯾ ﻦ اول ،ﺑﺎزﯾ ﻦ ﺑﯿﺸﯿﻨﻪ ﺑﺎﺷﺪ و ﺑﺎزﯾ ﻦ دوم ،ﺑﺎزﯾ ﻦ ﮐﻤﯿﻨﻪ ،ﺑﻪ ازای ﭼﻪ ﻣﻘﺎدﯾﺮی از ،xﺑﺎزﯾ ﻦ اول Action1را اﻧﺠﺎم ﻣ دﻫﺪ؟ ﺷ ﻞ :٢درﺧﺖ minimaxﯾ ﻣﻮﻓﻖ و ﭘﺎﯾﺪار ﺑﺎﺷﯿﺪ. ۴ ﺑﺎزی
© Copyright 2025 Paperzz