下载此文档

九宫格的启发式搜索.doc


文档分类:文学/艺术/军事/历史 | 页数:约17页 举报非法文档有奖
1/17
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/17 下载此文档
文档列表 文档介绍
九宫格的启发式搜索
班级:计算机一班
姓名:覃荣锦
学号:1240023
目录
一、 7,8,0};
int k=rand()%10+30;
int j,l,temp;
while(k>=0)
{
for(l=0;l<9;l++)
if(a[l]==0) break;
j=rand()%4;
k--;
if(check[l][j]!=9)
{
temp=a[check[l][j]];
a[check[l][j]]=a[l];
a[l]=temp;
}
}
for(j=0;j<9;j++)
data[j]=a[j];
}
void Init(int data[9])
{
for(int i=0;i<9;i++)
open[opentop].data[i]=data[i];
open[opentop].parent=-1;
open[opentop].value=GetValue(open[opentop].data);
opentop++;
}
判断目标节点算法如下:
bool Checkwin(int data[9])
{
for(int i=0;i<8;i++)
if(data[i]!=i+1) return 0;
return 1;
}
拓展节点
拓展节点的思路为:
对于当前节点,利用上面介绍的辅助矩阵求出其接下来移动后可能生成的2~4个局面。
判断每个局面是否合法。方法是检查open表和closed表,判断该局面是否出现过,若出现过,则不合法,反之合法。
得到新局面后,如果是局部择优,则将局面按从大到小排序,然后插入open表尾部(或从小到大排序,插入open表头部);如果是全局择优。则先放入open表,然后将open表从大到小排序。
算法如下:
void QuanjuMakeMove(int data[9],int parentvalue,int parent)//全局择优的拓展
{
int i=0,j,k;
while(data[i]!=0) i++;
for(j=0;j<4&&check[i][j]!=9;j++)
{
for(k=0;k<9;k++)
{
if(k==i) open[opentop].data[k]=data[check[i][j]];
else if(k==check[i][j]) open[opentop].data[k]=data[i];
else open[opentop].data[k]=data[k];
}
// if(状态合法) opentop++;open[..].value=..
if(!IsExist(open[opentop].data))
{
open[opentop].value=parentvalue+GetValue(open[opentop].data);
open[opentop].parent=parent;
opentop++;
}
}
//排序整个open表从小到大此处用选择排序法
Data temp;
if(opentop==0) return;
for(i=0;i<opentop-1;i++)
{
k=i;//设第i个是最大的
for(j=i+1;j<opentop;j++)//选择出第i个之后的节点中最大的
if(open[j].value>open[k].value) k=j;
//与第i个交换
temp=open[k];
open[k]=open[i];
open[i]=temp;
}
}
void JubuMakeMove(int data[9],int parentvalue,int parent)//局部择优的拓展
{
int i=0,j,k,m;
m=opentop;
while(data[i]!=0) i++;
for(j=0;j<4&&check[i][j]!=9;j++)
{
for(k=0;k<9;k++)
{
if(k==i) open[opentop].data[k]=data[check[i][j]];
else if(k==check[i][j]) open[opentop].data[k]=data[i];
else open[opentop].data[k]=data[

九宫格的启发式搜索 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数17
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zxwziyou8
  • 文件大小102 KB
  • 时间2022-03-13