| <<O>> Difference Topic JohnsonAllPairsShortestPathsExample (r1.6 - 28 Apr 2005 - TWikiGuest) |
| <<O>> Difference Topic JohnsonAllPairsShortestPathsExample (r1.5 - 31 Jan 2005 - LiYan) |
| <<O>> Difference Topic JohnsonAllPairsShortestPathsExample (r1.4 - 25 Jan 2005 - LiYan) |
| Added: | |
| > > | 展示架 生物反应器 笔记本电脑 成人用品 翻译 鲜花 移民 翻译公司 租房 游戏 游戏下载 摸屏 壁纸 服务器 爱滋病 办公自动化 出国 短信 干燥设备 交友 聊天 门禁 内衣 升降机 视频 写真 仪器仪表 移动存储 音乐 自考 算命 惠普 诺基亚 体育彩票 网页制作 前列腺 索尼 宠物 大连 电力 福利彩票 个人主页 广告公司 国际贸易 会计 计算机等级考试 交通 宽带 免费空间 农业 企业文化 人才 人才网 设计 手机报价 图书 网络 网络游戏 物业管理 西门子 小灵通 幼儿教育 幼儿园 娱乐 注册会计师 财务 财务管理 出国留学 电脑培训 多媒体 翻译软件 飞机票 购物 管理 婚纱摄影 激光 计算机培训 空间 律师 律师事务所 贸易 美容美发 模型 纳米 商标 数据库 通讯 网络安全 项目管理 鞋 雅思 英语培训 园林 招标 纸 中医 |
| <<O>> Difference Topic JohnsonAllPairsShortestPathsExample (r1.3 - 30 Dec 2004 - ArjanB) |
| <<O>> Difference Topic JohnsonAllPairsShortestPathsExample (r1.2 - 07 Feb 2004 - IsaacGouy) |
| Changed: | |
| < < | %META:TOPICPARENT{name="GenericProgrammingIntermediateExample"}% |
| > > | %META:TOPICPARENT{name="GraphParametricTypeExample"}% |
| <<O>> Difference Topic JohnsonAllPairsShortestPathsExample (r1.1 - 07 Jan 2004 - IsaacGouy) |
| Added: | |
| > > |
%META:TOPICINFO{author="IsaacGouy" date="1073514172" format="1.0" version="1.1"}%
%META:TOPICPARENT{name="GenericProgrammingIntermediateExample"}%
// compilation unit Johnson.nice
package graph;
<Edge,Graph,Distance,Vertex,ReadWritePM |
Edge <: GraphEdge<Vertex>,
ReadWritePM <: ReadWritePropertyMap<Vertex, Distance>
>
boolean johnsonAllPairsShortestPaths(
VertexListAndIncidenceAndEdgeListGraph<Vertex,Edge> graph,
ReadablePropertyMap<Edge, Distance> w,
ReadWritePropertyMap<Edge, Distance> w2,
ReadWritePropertyMap<Vertex, Distance> distance,
ReadablePropertyMap<Vertex, ReadWritePM> distanceMatrix,
Distance zero,
Distance inf,
(Distance, Distance)->Distance combine,
Distance->Distance negate,
(Distance, Distance)->boolean compare
){
// Set distance to all vertices to zero (emulates special "s" vertex used in CLR)
for (Vertex v : graph.vertices())
distance[v] = zero;
// Do Bellman-Ford to get factors for reweighting
let bfWorked = bellmanFordShortestPaths(
graph, graph.nVertices(), w, new NullPropertyMap(),
distance, combine, compare
);
if (!bfWorked) return false; // Negative-weight cycle
// Set up reweighting
for (e : graph.edges())
w2[e] = combine(
combine(w[e], distance[e.source]),
negate(distance[e.target]) );
// Do Dijkstra from each vertex
for (Vertex v : graph.vertices()) {
let dm = distanceMatrix[v];
dijkstraShortestPaths(
graph, v, new NullPropertyMap(), dm,
w2, compare, combine, inf, zero
);
// Adjust returned distances to account for reweighting
for (Vertex v2 : graph.vertices())
dm[v2] = combine(
combine(dm[v2], distance[v2]),
negate(distance[v]) );
}
return true;
}
-- IsaacGouy - 07 Jan 2004 |
| Topic JohnsonAllPairsShortestPathsExample . { View | Diffs | r1.6 | > | r1.5 | > | r1.4 | More } |
|
Revision r1.1 - 07 Jan 2004 - 22:22 GMT - IsaacGouy Revision r1.6 - 28 Apr 2005 - 11:53 GMT - TWikiGuest |
Copyright © 1999-2003 by the contributing authors.
All material on this collaboration platform is the property of the contributing authors. Ideas, requests, problems regarding TWiki? Send feedback. |