poj 2449 Remmarguts' Date

来源:互联网 发布:intouch组态软件 编辑:程序博客网 时间:2024/05/17 20:00

网上都说这是A*算法+dijkstra,下面谈谈我的一些看法。

我一开始单单用dijkstra,思路是这样的,当前点进行扩展时,每条路所连的点(也有可能是,相同的点,但不同的路)都入队列,这样就相当于把所有的状态都记录了下来,只要搜索到目标节点并且是第k次搜索到,那么搜索结束,这样就有一个问题,就是MLE,因为状态是指数级增长的。

那么就换网上的主流方法。用dijkstra求各个点到目标节点的最短路径,方法简单,建图时反向,源点是题目给出的目标节点。这个dist[i]就是节点i到估计h[i]。f=g+h。算了,不说了,网上一大堆,还是谈谈我对它的理解吧。

为什么在访问到节点i(不一定是目标节点t),只要是第k次访问,那么就可以退出了。原因简单,因为估价函数的关系,每次出队列的都是最小f。而f恰恰就是当前节点i记录的并且经过i的源点到目标点的visited[i]短路。


原创粉丝点击