关于Dijkstra、SPFA、Bellman-Ford、Floyed算法的问题

总觉得这几个算法的基本框架都差不多,都看重v[i]>=v[j]+g[i,j]这个不等式,SPFA是队列优化的Bellman-Ford,但我觉得SPFA如果不用邻接表用起来... 总觉得这几个算法的基本框架都差不多,都看重 v[i]>=v[j]+g[i,j] 这个不等式,SPFA是队列优化的Bellman-Ford,但我觉得SPFA如果不用邻接表用起来好像也就跟Dijkstra差不多......
痛苦啊,迷茫啊......神牛快来丫......总觉得这几个差不多......如果是NOIP提高组,需要掌握的有什么?
展开
 我来答
Name弓虽
2010-10-05
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
bellman-ford可以有负权,但不能态枯有负权回路,

spfa是bellman-ford的队列优化,时间发咋度o(ke),其中k为所有顶点进队的平均次数,可以证明k一般小于等于念漏2。

dijkstra不可以有负权,但效率比bellman-ford快,o(2n次方),用二叉堆优化o((m+n)log n),斐波纳契堆能稍微提高一些性能,让算法运行时间达到o(m + n log n)。

floyed算每对顶点之间的最短路,前几个是单源的

noip提高组多练搜索,学会动态规划差不多了,其他的模拟提都简单,主要是多练题帆高洞

纯手打
哈工大1013
2012-06-06
知道答主
回答量:4
采纳率:0%
帮助的人:3.2万
展开全部
最近我对Dijkstra、SPFA、Bellman-Ford进行了大规模测试顷搭(10000个点)
当边数<10000*100 SPFA具有平均优势
当边数超过上述数, SPFA将逊于Dijkstra
关于Bellman-Ford算法的快速实施,除了SPFA,国际上最有竞争力的是划分算法(Partitioning algorithm), 加入门槛技巧,是最快的最短路算法. 远比SPFA有竞争力,而且划分算法是强多项式算法.
我的测试表明, 划分算法不加入门槛帆乎念技术,仅仅稍微略逊于SPFA. 门槛技术不过操作起来不态困太方便. 不要再迷信SPFA了, 它的迭代次数一般为2,经我的测试是不靠谱的,和划分算法的迭代次数相差不大(按照SPFA的迭代次数衡量), 是大家对Bellman-Ford算法的实施了解得不够.
我的邮件为hwy000111@163.com.有关最短路的可以与我交流.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式