A*算法估价函数问题
在迷宫、机器人寻路、游戏寻路等路径规划中(共同特点是地图网格化),可以使用A*算法进行路径规划,而且还一定能得到最优解。因为在估价函数f(n)=G(n)+H(n)中,G(n)是源点到目前点的已经走过的路程,这很好得到,H(n)是目前点到目标点的距离,通过距离公式计算就可以,也很容易实现。
本人现在的问题是,在无向加权网络图中,G(n)为源点到目前点的权,在计算H(n)时犯难了,因为当前点到目标点的权并未直接给出。本人曾经采用H(n)为目前点到目标点的距离计算,偶尔能得到最优解,但是大多数不满足要求。
请问在无向加权网络图中H(n)该怎么设计。
肯定高人帮忙解决!现在程序都差不多了,就差估价函数不合理。也不知道怎么设置才好!
如果可以,我愿意以一下算法之一作为报酬!
VC++版的遗传算法
matlab版的dijkstra算法
基于Windows Api函数的CryptoApi和Base64编码的加密解密算法(VC++版)等
[解决办法]
如果启发函数h(n)的值小于当前点到终点的距离,总可以得到最优解的
不管是由向网图还是无向图
[解决办法]
方格游戏H(N)可取曼哈顿距离(城市距离)
如果是平面坐标可取欧式距离
[解决办法]
H(N)得具体问题具体分析,不是网格状选一个好的估价函数是不容易的,可以试下:
H{N}=与这个点相连接的所有路径中权的最小的值(除了来的路径以外)
顺便说下,这个算法是绝对可以得到最优解的,但是经常会找到路就停止计算,所有这不一定是最优解,补偿就是减少了用时.