实验内容
1 参考A算法核心代码,以8数码问题为例实现A算法的求解程序(编程语言不限),要求设计两种不同的估价函数。
2 在求解8数码问题的A算法程序中,设置相同的初始状态和目标状态,针对不同的估价函数,求得问题的解,并比较它们对搜索算法性能的影响,包括扩展节点数、生成节点数等。
3 对于8数码问题,设置与上述2相同的初始状态和目标状态,用宽度优先搜索算法(即令估计代价h(n)=0的A算法)求得问题的解,以及搜索过程中的扩展节点数、生成节点数。
4 上交源程序。
实验记录
#include<iostream>
#include<cmath>
#include "stdlib.h"
#include "time.h"
#include<stack>
using namespace std;
#define num 9
struct Node{
int state[9];
struct Node* parent;
int value;
int depth;
friend bool operator < (Node A, Node B) //按照value值小的方案构造优先级队列
{
return A.value > B.value;
}
};
priority_queue<Node> openTable; //open表
queue<Node> closeTable; //close表
stack<Node> Path; //最终路径
int count1=0,count2=0;
int read(Node& S,Node& G){
/*初始化*/
S.pare