- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
昆明理工大学信息工程与自动化学院学生实验报告
( 2015 —20 16 学年第 一 学期 )
课程名称: 开课实验室:信自楼 442机房 2015年 11月 2日
年级、专业、班 学号 姓名 成绩 实验项目名称 状态空间有哪些信誉好的足球投注网站实验—八数码问题求解该同学是否了解实验原理: A.了解□ B.基本了解□ C.不了解□ 该同学的实验能力: A.强 □ B.中等 □ C.差 □ 该同学的实验是否达到要求 : A.达到□ B.基本达到□ C.未达到□实验报告是否规范: A.规范□ B.基本规范□ C.不规范□实验过程是否详细记录: A.详细□ B.一般 □ C.没有 □二、实验目的
熟悉人工智能系统中的问题求解过程;
熟悉状态空间的盲目有哪些信誉好的足球投注网站和启发式有哪些信誉好的足球投注网站算法的应用;
熟悉对八数码问题的建模、求解及编程语言的应用。
三、实验
(1)建立一个只含有起始节点S的有哪些信誉好的足球投注网站图G,把S放到一个叫做OPEN的未扩展节点的表中;?
(2)建立一个叫做CLOSED的已扩展节点表,其初始为空表;?
(3)LOOP:若OPEN表是空表,则失败退出;?
(4)选择OPEN表上的第一个节点,把它从OPEN表移除并放进CLOSED表中,称此节点为节点n;?
(5)若n为一目标节点,则有解并成功退出,此解是追踪图G中沿着指针从n到S这条路径而得到的;?
(6)扩展节点n,同时生成不是n的祖先的那些后继节点的集合M。把M的这些成员作为n的后继节点舔到图中;?
(7)对那些未曾在G中出现过的M成员设置一个通向n的指针。把M的这些成员加进OPEN表。对已经在OPEN表或CLOSED表上的成员,确定是否需要更改通到n的指针方向;?
(8)按某一任意方式或按某个探视值,重排OPEN表。
四、实验过程
选择的初始状态和目标状态如下:
初始状态目标状态
解路径如下:
1 2 3 0 8 4 7 6 5 0 2 3 1 8 4 7 6 5 2 0 3 1 8 4 7 6 5 2 3 0 1 8 4 7 6 5
1 2 3 8 0 4 7 6 5
Open 表和 Closed 表
OPEN CLOSED S ? A,B S B,C,D A,S C,D,E,F B,A,S D,E,F,G C,B,A,S E,F,G,H,I,J D,C,B,A,S F,G,H,I,J,K,L,M E,D,C,B,A,S G,H,I,J,K,L,M,N F,E,D,C,B,A,S
实验结果及分
六、结论
宽度优先有哪些信誉好的足球投注网站算法(又称广度优先有哪些信誉好的足球投注网站)是最简便的图的有哪些信誉好的足球投注网站算法之一,属于一种盲目搜寻法目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地有哪些信誉好的足球投注网站整张图,直到找到结果为止。在宽度优先有哪些信誉好的足球投注网站过程中建立了一棵宽度优先树,起始时只包含根节点,即源顶点s.在扫描已发现顶点u的邻接表的过程中每发现一个白色顶点v,该顶点v及边(u,v)就被添加到树中。在宽度优先树中,我们称结点u 是结点v的先辈或父母结点。因为一个结点至多只能被发现一次,因此它最多只能有--个父母结点。相对根结点来说祖先和后裔关系的定义和通常一样:如果u处于树中从根s到结点v的路径中,那么u称为v的祖先,v是u的后裔。
源程序及注释
#include iostream.h
struct Snode
{
int parent; //指向该结点父节点的编号
int map[9];
public:
void TransformIn(const int *d);
};
void Snode::TransformIn(const int *d)
{
for(int i=0;i9;++i)
map[i]=d[i];
}
#define MAX_OPEN_LEN 50000
#define MAX_CLOSE_LEN 50000
Snode OPEN[MAX_OPEN_LEN];
int op=0;
Snode CLOSE[MAX_CLOSE_LEN];
int cp=0;
int result[50000][9]; //result数组用于保存路径,纵向9个数为对应的map数组
int have(Snode node1,Snode node2) //判断是否为新节点
{
int flag=1;
for(int i=0;i9;i++)
{
if(node1.map[i]!=node2.map[i]) flag=0;
}
re
文档评论(0)