- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
重庆交通大学计算机与信息学院验证性实验报告班 级: 软件开发 专业 2013 级 一 班 学 号: 631306050106 姓 名: 钟泽伟实验项目名称: 状态空间有哪些信誉好的足球投注网站 8数码问题 实验项目性质: 验证性实验实验所属课程: 人工智能实验室(中心):软件中心实验室(语音楼8楼)指 导 教 师 : 朱振国实验完成时间: 年 月 日评阅意见:实验成绩: 签名: 年 月 日一、实验目的1. 熟悉人工智能系统中的问题求解过程;2. 熟悉状态空间的盲目有哪些信誉好的足球投注网站和启发式有哪些信誉好的足球投注网站算法的应用;3. 熟悉对八数码问题的建模、求解及编程语言的应用。二、实验内容及要求在一个3*3的九宫中有1-8个数码及一个空格随即的摆放在其中的格子里,现在要求实验这个问题:将该九宫格调整为某种有序的形式。调整的规则是,每次只能将与空格(上、下、左、右)相邻的一个数字平移到空格中。三、实验设备及软件 VC++四、设计方案㈠ 题目状态空间有哪些信誉好的足球投注网站 8数码问题 ㈡ 设计的主要思路a、把初始数码组压入队列;b、从队列中取出一个数码组节点;c、扩展子节点,即从上下左右四个方向移动空格,生成相应子节点:d、对子节点数码组作评估,是否为优越节点,即其评估值是否小于等于其父节点加一,是则将其压入队,否则抛弃。e、判断压入队的子节点数码组(优越点)的评估值,为零则表示有哪些信誉好的足球投注网站完成,退出有哪些信誉好的足球投注网站;f、跳到步骤2㈢ 主要功能在通向目标节点的路径上,各节点的数码格局同目标节点相比较,其数码不同的位置个数在逐渐减少,最后为零,因此可以把数码不同的位置个数作为标志一个节点到目标节点距离远近的一个启发性信息,利用这个信息来扩展节点的选择,减少有哪些信誉好的足球投注网站范围,提高有哪些信誉好的足球投注网站速度。五、主要代码 include stdio.h } //设计了有哪些信誉好的足球投注网站深度范围,防止队列内存越界#include stdlib.h 6、运行结果#include time.h #define N 3 //数码组大小 #define Max_Step 50 //最大有哪些信誉好的足球投注网站深度 #define MAX 50 typedef struct node//八数码结构体 { int form[N][N];//数码组 int evalue;//评估值 int udirect;//所屏蔽方向,防止往回推到上已状态,1上2下3左4右 struct node *parent;//父节点 /////////打印数码组 void Print(Graph *The_graph) { int i,j; if(The_graph==NULL) printf(图为空\n); else { printf(---------------------\n); for(i=0;iN;i++) { printf(|\t); for(j=0;jN;j++) { printf(%d\t,The_graph-form[i][j]);//遍历打印 } printf(\t|\n); } printf(|\t\t\t差距:%d\t|\n,The_graph-evalue);//差距显示 printf(---------------------\n); } } /////////评价函数 int Evaluate(Graph *The_graph,Graph *End_graph) { int valute=0;//差距数 int i,j; for(i=0;iN;i++) { for(j=0;jN;j++) { if(The_graph-form[i][j]!=End_graph-form[i][j]) { valute++; } } } The_graph-evalue=valute; return valute; } /////////移动数码组 Graph *Move(Graph *The_graph,int Direct,int CreatNew_graph) { Graph *New_graph;// int HasGetBlank=0;//是否获取空格位置 int AbleMove=1;//是否可移动 int i,j,t_i,t_j,x,y; for(i=0;iN;i++)//获取空格坐标i,j { for(j=0;jN;j++) { if(The_graph-form[i][j]==0) { HasGetBlank=1; break; } } if(HasGetBlank==1) break; } //
文档评论(0)