最短路径算法大讨论!!目前我知道的最短路径算法只有DIJKSTRA算法跟A*算法,算是菜鸟了。前段时间本人优化了
最短路径算法大讨论!!
目前我知道的最短路径算法只有DIJKSTRA算法跟A*算法,算是菜鸟了。前段时间本人优化了下最短路径算法,效率大大提升。不知道DIJKSTRA算法能否算大数据量网络的最短路径。
算大数据量网络最短路径的算法都有哪些?效率如何?
欢迎各位高手进来讨论一二,让我们学习一下!顺带散分~
[解决办法]
高深莫测
[解决办法]
作为一名搞.Net的程序员,我感觉我跑错地方了
[解决办法]
用优先级队列维护带更新节点到已更新集合的距离
[解决办法]
把邻接矩阵改为 vecor<int> ve;速度就提上去,对于稀疏矩阵,速度要快好几倍吧
[解决办法]最短路径常用的算法就是
两点间的最短距离:Dijkstra(可以用邻接表,处理更简单)
所有点对间的最短距离:Ford-Floyd
[解决办法]我觉得你要研究的东西有意义,但现实的话,大量节点应该是通过architecture来解决的。
每一个网的节点是有限制的,这样就保证了最短路径算法的时间。相当于是树状的结构。
例如distance vector 算法,在实现的时候最大就是16。
这两个算法应该是network中路由主要两个吧。
scale的问题都是通过architecture的搞定的。
[解决办法]DIJKSTRA+堆优化,可以大大提高速度
[解决办法]dijkstra+斐波那契堆
spfa
dijkstra就是a*的一种特殊情况
[解决办法]应该算慢的,秒级差不多。这种级别的数据量,应该用邻接表+斐波那契堆做优先队列。
(如果是做具体产品,应该在优先队列的优化上多下功夫,有比斐波那契堆更好的方法,不过需要看论文了)
[解决办法]Floyd:求多源、无负权边的最短路。用矩阵记录图。时效性较差,时间复杂度O(V^3)。
Dijkstra:求单源、无负权的最短路。时效性较好,时间复杂度O(V^2)。可以用堆优化。
Bellman-Ford:求单源最短路,可以判断有无负权回路(若有,则不存在最短路),时效性较好,时间复杂度O(VE)。
SPFA:是Bellman-Ford的队列优化,时效性相对好,时间复杂度O(kE)。(k<<V)。
宽搜:求单源无权最短路。矩阵记录法时间复杂度O(V^2);边表记录法时间复杂度O(kE)。
稠密图单源无负权最短路:Dijkstra。
稠密图单源有负权最短路:SPFA。
稀疏图单源最短路:SPFA或Bellman-Ford。
多源无负权最短路:Floyd。
多源无权最短路:宽搜。
[解决办法]慢,路由让你搜个路径2分钟,你干么。
15楼强大。
[解决办法]双向Dijkstra
双向A*
[解决办法]在搜索中进行剪枝是必要的,灵活应用,没有现成的答案。
[解决办法]A*的公式:F=G+H;当H=0时,就是Dijkstra
[解决办法]高 + 深 。 顶 浅 了。
[解决办法]vector<pair<int,int> >
[解决办法]
就知道这么两个 还是教材上的 诶 悲剧~~
[解决办法]
lz是数学系的吗?
[解决办法]
谢谢。。 我收咯。。
[解决办法]
学习,收藏
[解决办法]
学习,收藏
[解决办法]