八数难码实验报告.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

A*算法实验报告

(班级:网络0902 ,姓名:王国林,学号:091330208 )

概述

8数码问题

8数码问题是指在3X3的九宫棋盘上有标号为1~8的8个棋牌,和一个空白位,通过棋牌向空白位移动来改变棋盘布局,如何移动棋牌才能从初使布局到达目标布局.显然解答路径实际上就是一个合法的走步序列

A*算法

A*算法属于一种启发式有哪些信誉好的足球投注网站,它扩展结点的次序类似于广度优先有哪些信誉好的足球投注网站,但不同的是每生成一个子结点需要计算估价函数F,以估算起始结点的约束经过该结点至达目标结点的最佳路径代价;每当扩展结点时,意是在所有待扩展结点中选择具有最小F值的结点做为扩展对象,以便使有哪些信誉好的足球投注网站尽量沿最有希望的方向进行.A*算法只要求产生问题的全部状态空间的部分结点及关系,就可以求解问题了,有哪些信誉好的足球投注网站效率较高。

A*算法的一般描述

约定

S:指示初使状态节点(Note);G:指示有哪些信誉好的足球投注网站图OPEN:作为存放待扩展节点的表;SNS:子节点集合CLOSE:作为存放已被扩展节点的表

Move_First(Open):指示取Open表首节点作为当前要被扩展的节点n,同时将节点n移到CLOSE表;

F(n)=G(n)+H(n):评价函数,用于排列节点在OPEN表中的位置

算法过程

○1 G:=S;○2 OPEN:=(S),CLOSE:=();

○3如果OPEN为空则算法失败

○4n:=Move_First(OPEN);

○5如果n是目标结点,有哪些信誉好的足球投注网站完成。

○6扩展节点n,将非节点n祖先的子节点置于子点子集合SNS中,并插入G,对SNS每个子节点计算F(n,ni)=G(n,ni)+H(ni)

○7标记与修改指针:

把SNS中的子结点分为三类:全新结点,已出现于OPEN表的结点,已出现于CLOSE表的节点;2.加第一类子节点于OPEN表;3.由评价函数值,选择最优结点,并移动子结点指向父节点的指针,改为指向新父节点

○8重新排序OPEN表中结点;○9返回语句○3

A*算法在VC6.0开发环境下的实现

定义问题的初始状态S0和目标状态Sg如图1.用A*算法有哪些信誉好的足球投注网站其过程的有哪些信誉好的足球投注网站树及各节点的估价函数值如下图.从图中可以看出A*算法结束在最佳路径上,在这条路径上,其扩展的节点的f值是非递减的,g*值是递增的,h*值递减.

主要程序代码及注释

变量和主要涵数

#definemax200

staticints0[3][3]={{2,8,3},{1,0,4},{7,6,5}};/*八数码的原始状态*/staticintt0[3][3]

={{1,2,3},{8,,4},{7,6,5}};/*八数码的最终状态*/intf[max],g[max],h[max];/*满足f*(n)=g*(n)+h*(n)*/intab[max][3][3];/*所有可能用到的状态*/intaopen[max][3][3];/*open表中所有可能用到的状态*/intbclose[max][3][3];/*close表中所有可能用到的状态*/intaopenn=0;/*open表中所有状态数*/

intbclosen=0;/*close表中所有状态数*/intn=0/*所扩展的状态数*/

intopen[max];/*open表中的状态的先后顺序*/intclose[max];/*close表中的状态*/

intNoObjectLocation(array)/*求某一状态中数码不在目标位置的个数的函数*/intarray[3][3];

voidNextState(array)/*生成所选中状态的子状态*/intarray[3][3];

{

switch(cc)

{

case0:n=n+1;

for(ii=0;ii3;ii++)for(jj=0;jj3;jj++)ab[n][ii][jj]=array[ii][jj];

ab[n][0][0]=ab[n][0][1];/*空格往右移*/

ab[n][0][1]=0;

n=n+1;for(ii=0;ii3;ii++)for(jj=0;jj3;jj++)ab[n][ii][jj]=array[ii][jj];

ab[n][0][0]=ab[n][1][0];/*空格往右移*/

ab[n][1][0]=0;

cc为1,2,3时程序类似与上面.case4:

n=n+1;for(ii=0;ii3;ii++)for(jj=0;jj3;jj++)ab[n][ii][jj]=array[ii][jj];

ab[n][1][1]=ab[n][1][0];/*

空格往左移

*/

ab[n][1

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档