数据结构与程序设计(王丽苹)13tic-ta.ppt
《数据结构与程序设计(王丽苹)13tic-ta.ppt》由会员分享,可在线阅读,更多相关《数据结构与程序设计(王丽苹)13tic-ta.ppt(36页珍藏版)》请在三一办公上搜索。
1、5/27/2023,数据结构与程序设计,1,数据结构与程序设计(13),王丽苹,5/27/2023,数据结构与程序设计,2,你可曾听说过“深蓝”?,1997年5月11日,IBM开发的“深蓝”击败了国际象棋冠军卡斯帕罗夫。,1980年他获得世界少年组冠军 1982年他并列夺得苏联冠军 1985年22岁的卡斯帕罗夫成为历史上最年轻的国 际象棋冠军积分是2849,这一分数是有史以来最高分。远远领先于第二位的克拉姆尼克的2770,卡氏何许人也?,5/27/2023,数据结构与程序设计,3,5/27/2023,数据结构与程序设计,4,游戏树(对弈树),树根:是初始情况,对应于棋盘开始时候的格局。树叶:表
2、示可能出现的结局。对弈的过程:就是沿着树根经过若干分支到达树叶的过程。,5/27/2023,数据结构与程序设计,5,Eight Game,假设:First为人 second为电脑,怎样帮助电脑选择最好的下棋方案?,5/27/2023,数据结构与程序设计,6,假设:以下为一棵博弈树,且各种结局的权值已经设置。,电脑,人,注意:各种结局的权值是根据电脑的角度来评估的。例如:电脑赢棋可能越大,得分越多,则权值越高,5/27/2023,数据结构与程序设计,7,用极大极小法为电脑找到最佳方案。,电脑,人,5/27/2023,数据结构与程序设计,8,5.4.2 极大极小法小结,(1)设博弈的双方中一方为S
3、,另一方为F。然后为其中的一方(例如S)寻找一个最优行动方案。(2)为了找到当前的最优行动方案,需要对各个可能的方案所产生的后果进行比较,具体地说,就是要考虑每一方案实施后对方可能采取的所有行动,并计算可能的得分。(3)为计算得分,需要根据问题的特性信息定义一个估价函数,用来估算当前博弈树叶子节点的得分。此时估算出来的得分称为静态估值。,5/27/2023,数据结构与程序设计,9,(4)当叶子节点的估值计算出来后,再推算出父节点的得分,推算的方法是:对S所在的层,选其子节点中一个最有利的得分作为父节点的得分,这是为了使自己在可供选择的方案中选一个对自己最有利的方案;对F所在的层,选其子节点中对
4、对方最不利的得分作为父节点的得分,这是为了立足于最坏的情况。这样计算出的父节点的得分称为倒推值。(5)如果一个行动方案能获得较大的倒推值,则它就是当前最好的行动方案。,5/27/2023,数据结构与程序设计,10,Tic-Tac-Toe(井子游戏),目录Tic_Tac_Toe下例程,5/27/2023,数据结构与程序设计,11,TicTacToeGameWin,目录TicTacToeGameWin下例程,5/27/2023,数据结构与程序设计,12,练习,画出此时的博弈树,X:Person0:Computer,1,2,3,4,为方便画博弈树,设1,2,3,4为对当前空闲棋格的编号,电脑为第二个
5、选手;人为第一个选手;,5/27/2023,数据结构与程序设计,13,。,1,2,3,4,2,2,2,1,1,1,3,3,3,3,3,4,输,4,4,4,4,输,4,2,输,输,3,2,输,平,4,平,3,输,4,平,1,输,3,平,1,假设各个叶子节点的权值为:(考虑到博弈树的最大深度为9)如果打平则为:0;如果第一个选手赢了:10-层数;/越大,越有利于第一个选手。如果第二个选手赢了:层数-10;/越小,越有利于第二个选手。,7,5,0,第二个选手,第一个选手,5/27/2023,数据结构与程序设计,14,棋盘的存储数据结构设计,井子游戏棋盘的大小为3*3。可以用二维数组来存放当前棋盘的信
6、息。游戏开始前,棋盘为空,可设二维数组的各个元素值为0。第一个选手开始下棋,则将他的棋子所在的位置设置为1。第二个选手开始下棋,则将他的棋子所在的位置设置为2。,5/27/2023,数据结构与程序设计,15,棋盘的存储数据结构设计,0,0,0,0,1,1,1,2,2,当前棋盘在内存的存储,1,2,3,4,5/27/2023,数据结构与程序设计,16,确定电脑走法的算法描述,Look_ahead at game(棋盘);if 递归搜索结束 即搜索到最后一层或者已经分出胜负 返回该位置的评价。else 对当前每一种走法 依次尝试各种走法,从而产生新的棋盘,通过递归调用得到当前棋盘的评价。通过对各种
7、走法的尝试,找到当前下棋者的最佳选项。并将该值返回。,5/27/2023,数据结构与程序设计,17,Tic-Tac-ToeClass Move,class Move public:Move();Move(int r,int c);int row;int col;,5/27/2023,数据结构与程序设计,18,Tic-Tac-ToeClass Move,Move:Move()/*Post:The Move is initialized to an illegal,default value.*/row=3;col=3;Move:Move(int r,int c)/*Post:The Move i
8、s initialized to the given coordinates.*/row=r;col=c;,5/27/2023,数据结构与程序设计,19,Tic-Tac-ToeClass Board,#includeMove.h#includeMyStack.cppclass Board public:Board();bool done()const;void print()const;void instructions()const;bool better(int value,int old_value)const;bool ValidStep(Move try_it)const;void
9、play(Move try_it);int worst_case()const;int evaluate()const;int legal_moves(MyStack,5/27/2023,数据结构与程序设计,20,Tic-Tac-ToeClass Board,Board:Board()/*Post:TheBoard is initialized as empty.*/for(int i=0;i 3;i+)for(int j=0;j 3;j+)squaresij=0;moves_done=0;,5/27/2023,数据结构与程序设计,21,Tic-Tac-ToeClass Board,void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 程序设计 王丽苹 13 tic ta

链接地址:https://www.31ppt.com/p-4980184.html