[算法][最短路]dijkstra + heap 和 spfa 程序,时间比较

[算法][最短路]dijkstra + heap 和 spfa 程序,时间比较

ID:37798206

大小:24.50 KB

页数:5页

时间:2019-05-31

[算法][最短路]dijkstra + heap 和 spfa 程序,时间比较_第1页
[算法][最短路]dijkstra + heap 和 spfa 程序,时间比较_第2页
[算法][最短路]dijkstra + heap 和 spfa 程序,时间比较_第3页
[算法][最短路]dijkstra + heap 和 spfa 程序,时间比较_第4页
[算法][最短路]dijkstra + heap 和 spfa 程序,时间比较_第5页
资源描述:

《[算法][最短路]dijkstra + heap 和 spfa 程序,时间比较》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、dijkstra就不解释了,随便一本算法书上都有,只贴程序(百度会把缩进干掉的,将就着看吧)spfa我以前贴过,自己看:http://hi.baidu.com/hefeizhousiyuan/blog/item/99114feac0c973d5d539c9d7.html理论上来讲dij时间是O(ElogV),而spfa是O(kE)(k约为2),但是spfa实质上只是bellman-ford的一种实现方法,依然可以构造出数据是它的时间复杂度退化成O(VE)的。不过,在绝大多数情况下,spfa的性能还是不会比dij+heap差的,最重要的是spfa代码更

2、短。以usaco3.2butter来比较,spfa稍胜一些。(V=700,E=1450,调用最短路过程700次)dijkstra+heapExecuting...  Test1:TESTOK[0.000secs,248KB]  Test2:TESTOK[0.000secs,248KB]  Test3:TESTOK[0.000secs,252KB]  Test4:TESTOK[0.011secs,248KB]  Test5:TESTOK[0.011secs,252KB]  Test6:TESTOK[0.032secs,252KB]  Test7:TES

3、TOK[0.162secs,252KB]  Test8:TESTOK[0.313secs,280KB]  Test9:TESTOK[0.626secs,280KB]  Test10:TESTOK[0.594secs,284KB]spfaExecuting...  Test1:TESTOK[0.000secs,244KB]  Test2:TESTOK[0.000secs,240KB]  Test3:TESTOK[0.000secs,240KB]  Test4:TESTOK[0.000secs,240KB]  Test5:TESTOK[0.011secs

4、,244KB]  Test6:TESTOK[0.022secs,244KB]  Test7:TESTOK[0.065secs,244KB]  Test8:TESTOK[0.130secs,272KB]  Test9:TESTOK[0.259secs,276KB]  Test10:TESTOK[0.248secs,276KB]dijkstra+heap(邻接表实现)Typelink=^node;    node=record             v,w:integer;             next:link;           end;Co

5、nst      maxn=1000;Var    n,m,l:integer;    a  :array[1..maxn]oflink;    hp:array[1..maxn]ofinteger;    t  :array[0..maxn]ofrecord                              v:integer;                              d:longint;                            end;Procedureinsert(x,y,w:integer);varp:

6、link;begin   new(p);   p^.v:=y;p^.w:=w;   p^.next:=a[x];a[x]:=p;end;Procedureinit;var     i,x,y,w:integer;begin   readln(n,m);   fori:=1tomdo   begin     readln(x,y,w);     insert(x,y,w);   end;end;procedureswap(a,b:integer);begin   t[0]:=t[a];   t[a]:=t[b];   t[b]:=t[0];   hp[

7、t[a].v]:=a;   hp[t[b].v]:=b;end;proceduresetheap(st:integer);vari  :integer;begin   fori:=1tondo   begin     t[i].v:=i;     t[i].d:=maxlongint;     hp[i]:=i;   end;   t[st].d:=0;   swap(1,st);end;proceduredown(x:integer);vari,j,m:integer;begin   i:=x;   whilei*2<=ldo   (**)   b

8、egin     j:=i*2;     if(i*2+1<=l)and(t[i*2+1].d

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。