- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图及其应用_cpp版讲义
* 0 6 4 5 7 7 15 14 18 18 14 16 10 7 8 6 6 0 0 0 0 6 4 5 7 7 7 15 14 14 16 0 2 3 6 6 8 8 7 10 * 算法的实现 求ve的顺序应该是按拓扑排序的次序; 求vl的顺序应该是按拓扑逆序的次序; 因为拓扑逆序序列即为拓扑有序序列的逆序列, 因此应该在拓扑排序的过程中,另设一个“栈”记下拓扑有序序列。 Topsort小结 Topsort的不是严格意义的大小排序,而是对有依赖关系的节点进行优先级的排序。 关键路径 差分约束系统。 练习题:1226——1229 其他问题 强连通分量 二分图 网络流 * for i:=1 to n do begin d[i]:=a[s,i]; path[i]:=s; end; d[s]:=0; f[s]:=true;path[s]:=0; for i:=2 to n do begin min:=maxint; k:=0; for j:=1 to n do //找距起点s最近的点k if (not f[j]) and (d[j]min) then begin min:=d[j]; k:=j; end; if (k=t)or(min=maxint) then break; f[k]:=true; for j:=1 to n do // 更新其他接点的d[j] if (not f[j])and(d[k]+a[k,j]d[j]) then begin d[j]:=d[k]+a[k,j]; path[j]:=k;end; end; m:=0; i:=t; while i0 do begin inc(m); way[m]:=i; i:=path[i]; end; for i:=m downto 1 do write(way[i], ); * * * * * * * * * * * * * * 最短路径-----实例三 butter 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖。把糖放在一片牧场上,他知道N只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油。 ? 农夫John可以训练这些奶牛,让它们在听到铃声时去一个特定的牧场。他打算将糖放在那里然后下午发出铃声,以至他可以在晚上挤奶。 ? 农夫John知道每只奶牛都在各自喜欢的牧场(一个牧场不一定只有一头牛)。给出各头牛所在的牧场和牧场间的路线,找出使所有牛到达的路程和最短的牧场(他将把糖放在那) 最短路径-----实例三 输入格式 第一行: 三个数,奶牛数N(1=N=500), 牧场数P(2=P=800),牧场间道路数C (1=C=1450) 第二行到第N+1行:?1 到 N 头奶牛所在的牧场号 第N+2行到第N+C+1行: 每行有三个数,相连的牧场A、B,两牧场间距离D(1=D=255),当然,连接是双向的. 输出格式 一行:? 输出奶牛必须行走的最小的距离和 最短路径-----实例三 输入样例 3 4 5 2 3 4 1 2 1 1 3 5 2 3 7 2 4 3 3 4 5 输出样例 8 { 说明: 放在4号牧场最优 } 样例图形 P2 P1 @--1--@ C1 \ |\ \ | \ 5 7 3 \ | \ \| \ C3 C2 @--5--@ P3 P4 最短路径-----实例三 分析 若用Floyd算法预处理,显然P3=80035*108要超时。 边比较少,可枚举每一点为源,再用Dijkstra算法+堆优化来处理: P*C*logP =800* 1450*log8001.2*107 不超时 要考虑用set 用SPFA算法平均来说效果最好,试用一下。 参考邻接表的spfa两种写法 最短路径-----实例三 总结 堆优化的Dijkstra不能处理负边的情况,而SPFA则可以 堆优化的Dijkstra时间复杂度稳定,而SPFA的时间复杂度不稳定。 SPFA的实现比堆优化的Dijkstra简单,平均速度也较快。 对于稠密图来说,用dijks
文档评论(0)