- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
重庆交通大学计算机与信息学院
验证性实验报告
班 级:计算机科学与技术(软件开发)专业13级1班
学 号: 631306050120
姓 名: 刘忠钊
实验项目名称: 状态空间有哪些信誉好的足球投注网站 8数码问题
实验项目性质: 验证性实验
实验所属课程: 人工智能
实验室(中心):软件中心实验室(语音楼8楼)
指 导 教 师 : 朱振国
实验完成时间: 2016 年 6 月 11 日
一、实验目的
1. 熟悉人工智能系统中的问题求解过程;
2. 熟悉状态空间的盲目有哪些信誉好的足球投注网站和启发式有哪些信誉好的足球投注网站算法的应用;
3. 熟悉对八数码问题的建模、求解及编程语言的应用。
二、实验内容及要求
(一、) 实验内容
八数码问题:在3×3的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。
图1 八数码问题示意图
请任选一种盲目有哪些信誉好的足球投注网站算法(深度优先有哪些信誉好的足球投注网站或宽度优先有哪些信誉好的足球投注网站)或 任选一种启发式有哪些信誉好的足球投注网站方法(A 算法或 A* 算法)编程求解八数码问题(初始状态任选),并对实验结果进行分析,得出合理的结论。
三、实验设备及软件
WIN7系统64位系统笔记本电脑
TC2.0 或 VC6.0 编程语言或其它编程语言
四、设计方案
㈠ 题目
状态空间有哪些信誉好的足球投注网站 8数码问题
㈡ 设计的主要思路
程序采用宽度优先有哪些信誉好的足球投注网站算法,基本流程如下:
㈢ 主要功能
完成对八数码问题的求解。
五、主要代码
#include iostream
#include ctime
#include vector
using namespace std;
const int ROW = 3;//行数
const int COL = 3;//列数
const int MAXDISTANCE = 10000;//最多可以有的表的数目
const int MAXNUM = 10000;
typedef struct _Node{
int digit[ROW][COL];
int dist; // distance between one state and the destination一个表和目的表的距离
int dep; // the depth of node深度
// So the comment function = dist + dep.估价函数值
int index; // point to the location of parent父节点的位置
} Node;
Node src, dest;// 父节表 目的表
vectorNode node_v; // store the nodes存储节点
bool isEmptyOfOPEN() //open表是否为空
{
for (int i = 0; i node_v.size(); i++) {
if (node_v[i].dist != MAXNUM)
return false;
}
return true;
}
bool isEqual(int index, int digit[][COL]) //判断这个最优的节点是否和目的节点一样
{
for (int i = 0; i ROW; i++)
for (int j = 0; j COL; j++) {
if (node_v[index].digit[i][j] != digit[i][j])
return false;
}
return true;
}
ostream operator(ostream os, Node node)
{
for (int i = 0; i ROW; i++) {
for (int j = 0; j COL; j++)
os node.digit[i][j] ;
os endl;
}
return os;
}
void PrintSteps(int index, vectorNode rstep_v)//输出每一个遍历的节点 深度遍历
{
rstep_v.push_back(node_v[index]);
index = node_v[index].index;
while (index != 0)
{
文档评论(0)