- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实 验 报 告
课程名称 人工智能_____________
实验项目 八数码难题______________
实验仪器 电脑 、visual C++_________
系 别 ____________
专 业 __ _____
班级/学号
学生姓名 _ _________
实验日期____
成 绩 _______________________
指导教师 _________
实验目的
理解并熟悉掌握
实验内容
九宫格中有8个数码,其中只有一个空,规则是只能把一个数码移动到空的格子中,要求从一个初始状态移动到一个目标状态所要花费的最少步数【算法分析】??? 解决此类问题的办法是宽度搜索,深度搜索耗时太大无法接受。当需要移动的步数很多时,普通的宽度搜索仍旧无法满足需要,需要对其进行优化。??? 这个问题也可以推广到流行的拼图游戏。
【具体步骤】一、确定问题规模(考虑搜索的时间代价)二、确定产生式规则(如果规则太多,则时间代价会很大)三、套用经典宽度搜索框架写程序
#include stdlib.h
#include stdio.h
typedef struct Node {
int num[9]; //棋盘状态
int deepth; //派生的深度 g(n)
int diffnum; //不在位的数目 h(n)
int value; //耗散值 f(n)=g(n)+h(n)
struct Node * pre;
struct Node * next;
struct Node * parent;
}numNode; /* ---------- end of struct numNode ---------- */
int origin[9]; //棋盘初始状态
int target[9]; //棋盘目标状态
int numNode_num,total_step;
numNode *open,*close; //Open表和Close表
numNode *create_numNode()
{
return (numNode *)malloc(sizeof(numNode));
}
numNode *open_getfirst(numNode *head); //返回第一项,并从Open表中删除
void open_insert(numNode *head,numNode *item); //向Open表中按序插入新节点
void close_append(numNode *head,numNode *item); //向Close表中插入新节点
int expand(numNode *item); //扩展节点
int print_result(numNode *item); //打印结果
numNode *copy_numNode(numNode *orgin);
char isNewNode(numNode *open,numNode *close,int num[9]);
//是否在Open表或Close表中
void print_num(int num[9]); //打印棋盘状态
int diff(int num[9]); //求不在位棋子的个数
void init(); //初始化,获得棋盘初始状态和目标状态
void swap(int *a,int *b);
int operate(int num[],int op);
void free_list(numNode *head);
/*
* === FUNCTION ======================================================================
* Name: 主函數
* Description: 程序入口
* =====================================================================================
*/
int
main ( int argc, char *argv[] )
{
//初始化Open表和Close表
open=create_numNode();
close=cr
您可能关注的文档
- 事业单位面试备考:环境污染—金山银山不如绿水青山.doc
- 事业单位面试备考:逢山开道,遇水搭桥.doc
- 事业单位面试必备:组织管理类解题高分技巧.doc
- 事业单位面试技巧:综合分析题之简单实用的高分技巧中.doc
- 二Ο一四年度月工作计划.doc
- 二、法律严禁 破坏公共安全的行为.ppt
- 二、济宁市建设工程质量检测机构监督检查评定表.doc
- 二1 班 春节画 一等奖作品.doc
- 事業廢棄物清理計畫書變更.ppt
- 二元一次方程易错题 2.doc
- 1.1细胞是生命活动的基本单位课件-2024-2025学年高一上学期生物人教版必修1.pptx
- 1.2细胞的多样性和统一性第1课时课件-2024-2025学年高一上学期生物人教版必修1.pptx
- 第16课《白杨礼赞》课件-2025-2026学年统编版语文八年级上册.pptx
- 2026届高三生物一轮复习课件+减数分裂与生物的遗传、变异.pptx
- 3.1细胞膜的结构和功能第2课时课件-2025-2026学年高一上学期生物人教版必修1.pptx
- 2025届高三生物一轮复习课件2.1减数分裂和受精作用.ppt
- 中考语文二轮专题复习课件:新闻概括题.pptx
- 第6课《我看》课件+++2025-2026学年统编版语文九年级上册.pptx
- 第21课《人民英雄永存不朽》课件-2025-2026学年统编版语文八年级上册.pptx
- 2025年广西河池罗城特聘农机技术指导员的(1人)考前自测高频考点模拟试题含答案详解(b卷).docx
文档评论(0)