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/
思路:我们可以定义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/
相关文章推荐
- <A*算法模板>poj 2449 第k短路
- POJ 2449 Remmarguts' Date (第k短路)
- POJ 2449 第k短路 Dijkstra+A*
- POJ 2449 Remmarguts' Date (求第K短路,A* + Dijkstra)
- poj 2449 Remmarguts' Date(第K短路问题 Dijkstra+A*)
- Poj 2449 Remmarguts' Date (第k短路)
- poj 2449 第k短路
- Remmarguts' Date----POJ_2449----第k最短路
- 【解题报告】POJ 2449 Remmarguts' Date -- 有向图第k短路(有重边)
- POJ 2449 Remmarguts' Date(第k短路+spfa+A*搜索)
- poj 2449 Remmarguts' Date(A*+Dijsktra 求第K短路)
- POJ 2449 Remmarguts' Date [第k短路]
- POJ 2449 Remmarguts' Date (第k短路 A*搜索算法模板)
- poj 2449 Remmarguts’ Date第k短路 dij+A*
- 第k短路(POJ 2449: Remmarguts' Date)
- POJ--2449--Remmarguts' Date【dijkstra_heap+A*】第K短路
- POJ 2449 Remmarguts' Date(第k短路のA*算法)
- poj 2449 第K最短路-A*启发式搜索
- POJ 2449 Remmarguts' Date (A* 第k短路)
- 【A* + 第K短路】 poj2449 Remmarguts' Date