资源简介
人工智能的八数码的深度优先算法c++实现
代码片段和文件信息
/*宽度优先算法中,我定义了一个状态结构来描述每个状态,用一个数组来存放操作符,用continue来判断可否进行某些操作。根据宽度优先算法搜索出
到达目标状态的路径。路径用一个数组来存储,输出时用逆序输出,即为正序结果。*/
#include
#include
using namespace std;
struct Snode //表结构
{
int parent; //父节点的编号
int current[9]; //当前节点
public:
void TransformIn(const int *d);//更换当前节点
};
Snode OPEN[50000];
int op = 0;//OPEN表中的个数
Snode CLOSE[50000];
int cp = 0;//CLOSED表中的个数
int result[50000][9]; //result数组用于保存路径
void Snode::TransformIn(const int *d)
{
for(int i=0;i<9;++i)
current[i]=d[i];
}
int have_exist(Snode &node1Snode &node2) //判断是否已存在该节点
{
int flag=1;
for(int i=0;i<9;i++)
{
if(node1.current[i]!=node2.current[i]) flag=0;
}
return flag;
}
inline void swapn(int &aint &b)
{
int tmp=a;
a=b;
b=tmp;
}
int judge(Snode &node) //判断节点是否为目标节点
{
int flag=1;
int g[9]={123804765};
for(int i=0;i<9;i++)
{
if(node.current[i]!=g[i])
flag=0;
}
return flag;
}
int Astar(const int *d) //深度优先算法实现
{
int step = 0;
int begin=0; //当前扩展的节点
int node_number=1; //生成状态总数
static int dp[4]={-3-113}; //移动操作符:上、左、右、下
op=1;
cp=0;
OPEN[begin].TransformIn(d);
OPEN[begin].parent=-1;//根节点的parent为-1
while(op>0)//OPEN表不为空
{
int i=0zeroposj=0k=0;
/////////////////////////////////////找到目标节点->输出路径
if(judge(OPEN[begin])==1)
{
CLOSE[cp]=OPEN[begin]; //被扩展的节点放入CLOSED表中
while(begin!=-1) //记录路径
{
for(int i=0;i<9;i++)
{
result[j][i]=OPEN[begin].current[i];
}
j=j+1;
begin=OPEN[begin].parent;
}
for(i=j-1;i>=0;i--)//正序输出路径
{
cout << “第“ << step++ << “步“ << endl;
for(k=0;k<9;k++)
{
cout<
if(k%3==2) cout< }
cout << “ |“ << endl;
cout<
- 上一篇:电脑配件销售系统
- 下一篇:网络安全扫描课程设计
相关资源
- 人工智能旅行商问题实验报告及C++源
- c++程序图的遍历深度优先,广度优先
- 图的邻接表存储实现及深度优先遍历
- 数据挖掘中的Apriori算法(C语言版)
- 人工智能代价树的广度优先搜索
- 图的深度优先遍历C语言数据结构
- 0-1背包问题C语言源码
- 深度优先搜索算法C++实现
- 八数码问题A算法解决
- VC 七巧板 人工智能
- 启发式搜索解决八数码问题
- 八数码宽度优先搜索加注释.txt
- 产生式系统反向推理算法的设计与实
- 罗马尼亚度假问题MFC实现
- 8数码游戏 A*算法 C++实现
- 人工智能八数码问题 C++
- N皇后问题构造性方法与启发式修补的
- 遗传算法求解TSP旅行商问题C语言源代
- 八数码C语言实现包含实验报告
- 斗地主AI源代码
- 八数码问题算法 游戏源码
- 基于盲目搜索的宽度优先算法的八数
- 人工智能象棋博弈 含悔棋记录功能
- 《人工智能游戏编程真言》.pdf
- 简单的极大极小算法实现的井字棋程
- 基于概率模型的wumpus程序
- 人工智能专家系统C语言
- 人工智能八数码问题解答c++代码及报
- 八数码问题C语言代码
- c++实现迷宫栈与二位数组的应用,含
评论
共有 条评论