没有合适的资源?快使用搜索试试~ 我知道了~
人工智能算法实现.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 6 浏览量
2022-11-13
00:56:22
上传
评论
收藏 881KB PDF 举报
温馨提示
试读
16页
。。。
资源推荐
资源详情
资源评论
人工智能算法实现:[1]A*算法 c 语言
•
分步阅读
A*算法,A*(A-Star)算法是一种静态路网中求解最短路最有效的方法。估价值
与实际值越接近,估价函数取得就越好。
A*[1](A-Star)算法是一种静态路网中求解最短路最有效的方法。
公式表示为: f(n)=g(n)+h(n),
其中 f(n) 是从初始点经由节点 n 到目标点的估价函数,
g(n) 是在状态空间中从初始节点到 n 节点的实际代价,
h(n) 是从 n 到目标节点最佳路径的估计代价。
保证找到最短路径(最优解的)条件,关键在于估价函数 h(n)的选取:
估价值 h(n)<= n 到目标节点的距离实际值,这种情况下,搜索的点数多,搜索
范围大,效率低。但能得到最优解。
如果 估价值>实际值,搜索的点数少,搜索范围小,效率高,但不能保证得到最
优解。
工具/原料
•
DEVC++或 VC 6.0
方法/步骤
1. 估价值与实际值越接近,估价函数取得就越好
例如对于几何路网来说,可以取两节点间欧几理德距离(直线距离)做为估价
值,即 f=g(n)+sqrt((dx-nx)*(dx-nx)+(dy-ny)*(dy-ny));这样估价函数 f 在
g 值一定的情况下,会或多或少的受估价值 h 的制约,节点距目标点近,h 值
小,f 值相对就小,能保证最短路的搜索向终点的方向进行。明显优于 Dijkstra
算法的毫无方向的向四周搜索。
conditions of heuristic
Optimistic (must be less than or equal to the real cost)
As close to the real cost as possible
详细内容:
创建两个表,OPEN 表保存所有已生成而未考察的节点,CLOSED 表中记录
已访问过的节点。
算起点的估价值;
将起点放入 OPEN 表;
2. A star 算法在静态路网中的应用,以在地图中找从开始点 s 到 e 点的最
短行走路径为例:
首先定义数据结构
#define MAPMAXSIZE 100 //地图面积最大为 100x100
#define MAXINT 8192 //定义一个最大整数, 地图上任意两点距离不会超过
它
#define STACKSIZE 65536 //保存搜索节点的堆栈大小
#define tile_num(x,y) ((y)*map_w+(x)) // 将 x,y 坐标转换为地图上块的编
号
#define tile_x(n) ((n)%map_w) //由块编号得出 x,y 坐标
#define tile_y(n) ((n)/map_w)
// 树结构, 比较特殊, 是从叶节点向根节点反向链接
typedef struct node *TREE;
struct node {
int h;
int tile;
TREE father;
};
typedef struct node2 *LINK;
struct node2 {
TREE node;
int f;
LINK next;
};
LINK queue; // 保存没有处理的行走方法的节点
TREE stack[STACKSIZE]; // 保存已经处理过的节点 (搜索完后释放)
int stacktop;
char map[][6]={{'x','x','x','x','x','x'},
{'x','e',' ',' ',' ','x'},
{'x','x',' ','x',' ','x'},
{'x','x',' ',' ',' ','x'},
{'x','x','x','x','s','x'},
{'x','x','x','x','x','x'} };//地图数据
int dis_map[MAPMAXSIZE][MAPMAXSIZE];//保存搜索路径时,中间目标地
最优解
int map_w,map_h;//地图宽和高
int start_x,start_y,end_x,end_y; //地点,终点坐标
// 路径寻找主函数
void findpath(int *path)
{
//printf("%d,%d,%d,%d",start_x,start_y,end_x,end_y);
TREE root;
int i,j;
stacktop=0;
for (i=0;i<map_h;i++)
剩余15页未读,继续阅读
资源评论
G11176593
- 粉丝: 6667
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功