您的位置:首页 > 其它

poj 2449(A*求第K短路)

2013-07-27 17:29 211 查看
题目链接:http://poj.org/problem?id=2449

思路:我们可以定义g[x]为源点到当前点的距离,h[x]为当前点到目标节点的最短距离,显然有h[x]<=h*[x](h*[x]定义为当前点到目标节点的实际距离),至于怎么求的h[x],即图中任何节点到目标节点的最短距离,这里我们可以建反图,以目标节点为源点一次spfa就可以求得各点到目标节点的最短距离了。然后就是A*求第k短路了,f[x]=g[x]+h[x],每次将最小的f[x]出队列,直到目标节点被扩展了k次,则求得了第k短路,这里还有一个优化,即如果某一个节点扩展次数大于k次,就没必要在继续扩展了。

http://paste.ubuntu.com/5917765/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: