_几种最短路径的算法及比较
d[v]直至其到达实际最短路径的权。最多进行|V[G]|- 1 次松弛操 作。算法返回 True 当且仅当图中不存在负权圈。 2.3.2 算法分析
该算法的时间复杂度为 O( VE) 。 2.3.3 算法优化
该 算 法 名 为 Shortest path faster algorithm 4, SPFA 其 实 就 是 Bellman- Ford 的一种队列实现, 减少了冗余, 即松驰的边 至 少 不 会以一个 d 为 ∞的点为起点。 2.3.4 复杂度分析
兴趣的相似度 S:
n
å di ´ ti
s=
i =1 n
å ti
i =1
5. 采用用户兴趣模型向用户推荐信息 信息推荐 Agent 的主要功能是主动搜索网上资源 并 向 用 户
推荐信息。首先, 它以用户兴趣模型中兴趣度较高的部分兴趣 项 , 通 过 现 有 的 搜 索 引 擎 搜 索 信 息 。 其 次 , 启 动 信 息 过 滤 Agent 对搜索到的信息进行过滤。最后, 把过滤后的信息推荐给用户。 6. 小结
松 弛 一 条 边(u,v)的 过 程 包 括 测 试 我 们 是 否 可 能 通 过 结 点 u 对迄今找出的到 v 的最短路径估计进行改进, 如果可能则更新 d[v]和 pre[v]。
注意: 单源最短路径的每个算法都要先调用初始化过程, 然 后重复松弛过程。 2.2 Dijkstra 算法[2]
① 给图 G, 加一个新结点 v0。对 v0 用 Bellman- Ford, 若有负 圈, 则结束; 否则可以得到 h(v), 即v0 到 v 的最短路长。O(VE)
② 对 于 所 有 边 (u,v), 权 值 改 造 , 即 令 w' (u,v)=w(u,v)+h(u)- h
(v)。O(m) ③ 对于每个结点 , 用一次以 Fibonacci Heap 为优先队列的
最直接的方法是把每个结点都作为源做一次单源最短路径 算法 , 我 们 用 Floyd- Warshall 算 法 来 解 决 这 类 问 题 。Floyd 算 法 是一种用来解决关于图 G(V,E)间每对结点间的最短路径问题的 算法, 可以存在负权边, 但我们假定不存在负权圈。 4.1 算法描述
本质就是用动态规划:
这里的 D 要用优先队列实现, 需 用 到 删 除 最 小(DeleteMin) 与 减 值(DecreaseKey)的 操 作 。 假 设 用 普 通 的 队 列 实 现 则 算 法 复 杂度为 O(V2)。 如 果 用 Fibonacci 堆 来 实 现 优 先 队 列 则 算 法 复 杂 度为 O(|E|+|V|lg|V|)。 2.3 BellMan- Ford 算法[3]
的最短路径。这是最短路径问题的基础问题, 其它的最短路径问 题都可以转化为单源最短路径问题进行求解。 2.1 松弛技术( Relax) [1]
在每个单源最短路径算法中都运用了松弛技术。松弛一条 边就是试图找到一条比当前已知路径更短的边。对每一结点 v∈S, 我们用 d[v]来表示从源 s 到 v 当前已知的最短路径的权的 上界, 称之为最短路径估计。用 pre[v]来表示当前最短路径估计 中 v 前面的点。
( 4) 由于用户兴趣模型空间是有限的, 用户兴趣模型有一个 最大的兴趣项容量, 当兴趣项超过这个最大容量时, 将模型中的 一些低兴趣度的兴趣项删除, 使兴趣项固定在某一范围, 从而实 现对用户兴趣的动态追踪。 4.采 用 用 户 兴 趣 模 型 对 用 户 检 索 的 信 息 进 行 过 滤
信息过滤 Agent 根据用户兴趣模型对从搜索引擎返 回 的 结 果进行过滤, 使得这个搜索结果尽可能精确地符合用户的需求。 这个过滤主要是通过计算检索到的文档与用户兴趣的相似度, 得到文档与用户兴趣相关的程度, 将相似度超过一定阈值的文 档推荐给用户。
Dijkstra 算法解决了有向加权图的最短路径问题, 它可以解 决单源最短路径问题, 如果以每个点作为源都做一次 Dijkstra 算 法, 则可以求出每对结点间的最短路径。该算法的条件是所有边 的权值都非负, 这个重要的条件使得我们用贪心得到该算法。 2.2.1 算法描述
设置一结 点 集 合 S, 从 源 s 到 集 合 S 中 所 有 点 的 最 短 路 径 均已求出。算法反复挑选出最短路径估计为最小的结点 u 加入 S 集合 , 并对所有离开结点 u 的边进行松弛操作, 直到所有结点 进入集合 。 2.2.2 算法分析
本 文 讨 论 了 应 用 Agent 技 术 来 实 现 在 Web 客 户 端 的 个 性 化服务。智能 Agent 通过学习来建立用户兴趣模型, 并以此模型 来实现个性化的服务: 对用户搜索的信息进行过滤, 提高搜索的 精确度; 主动向用户推荐信息。
参考文献: 1.Y. Seo and B. Zhang, Personalized web - document filtering using rein- forcement learning. Applied Artificial Intelligence,2001. 2.姚 克 娟 李 晋 宏 , 应 用 Agent 技 术 实 现 个 性 化 信 息 服 务[J].北 方 工 业 大 学学报, Vol.16 No 3 Sept.2004. 3.殷信义 刘锦高等, 智能网站 Agents 研究[J].计算 机 应 用 研 究,2002,第 1 期: 42- 43。
如果一个图包含负权圈, 那么这个图就不存在最短路径。在 Dijkstra 算法中我们假定不存在负权边, 而在 Bellman- Ford 算法 中则可以存在负权边: 找到从源 s 到所有点的最短路径或确定 存在负权圈。
2.3.1 算法描述 对于每一结点 s∈S, 逐步减小从源 s 到 v 的最短路径估计
Gk(u,v)表示 u 到 v 的不经过 k,k+1,...,n 结点(除 u,v 外)时, 从 u 到 v 的最短路长。下面用归纳法证明:
k=1 显然成立。 假设对 k 成立,下面考虑 k+1 的情况; 从 u 到 v 且不通过k+1,...,n 节 点 的 最 短 路 有 两 种 可 能 : (1)不 经 过 k 节 点 , 即 为 Gk(u,v); (2)经过 k 节点, 即为 Gk(u,k)+Gk(K,v) 由于第 k+1 次迭代过程中, 不会影响 k 次的迭代结果, 使用 O(V2)的空间即可。二维数组 pre(u,v), 记录 u 到 v, 最后经过哪个 k 的迭代。 4.2 算法分析 时间复杂度为 O(V3), 空间复杂度为 O(V2)。 5. Johnson 算法 5.1 算法描述 本算 法 适 用 于 稀 疏 图 。 它 是 Dijkstra 和 Bellman- Ford 算 法
(1)由 于 h 是 v0 到 v 的 最 短 路 长 , h(u)+w(u,v)≥h(v), 所 以 w'
(u,v)=w(u,v)+h(u)- h(v)≥0。
(2)令路径 p=(v1,v2,L,vn), 则
å å[ ]
k
k
w ’( p) = w ’(vi-1, vi ) = w(vi-1, vi ) + h(vi-1) - h(vi )
径 p=(v0,v1,…vk)的权指的是其组成边的所有权值之和:
å
k
w ( p ) = w (vi-1, vi )
i=1
定义从 u 到 v 的最短路径的权为:
d
)
:
u
®
b}!
!u!v!!!!!! !!
2.单 源 最 短 路 径 算 法 单源最短路径问题所求的是: 从某结点 s 到其它所有结点
SPFA 在形式上和宽度优先搜索非常类似, 不同的是宽度优 先 搜 索 中 一 个 点 出 了 队 列 就 不 可 能 重 新 进 入 队 列 , 但 是 SPFA 中一个点可能在出队列之后再次被放入队列, 也就是一个点改 进过其它的点之后, 过了一段时间可能本身被改进, 于是再次用 来改进其它的点, 这样反复迭代下去。设一个点用来作为迭代点 对其它点进行改进的平均次数为 k, 有办法证明对于通常的( 不 含负 圈 , 较 稀 疏 ) 情 况 , k 在 2 左 右 。 算 法 复 杂 度 理 论 上 同 Bell- man- Ford, O(VE), 但实际上却是 O(kE)。 4.每 对 结 点 间 的 最 短 路 径 算 法
2008 年第 2 期
福建电脑
9
几种最短路径的算法及比较
刘文海 1, 徐荣聪 2
( 1. 福建对外经济贸易职业技术学院 福建 福州 350016 2. 福州大学数学与计算机科学学院 福建 福州 350002 )
【摘 要】: 最短路径问题是图论中一个非常有实际意义的问题, 在实际生活中的各种规划设计问题中及数据挖掘中都 有重要的作用。本文着重介绍了用计算机编程语言实现单源最短路径算法与每对结点间的最短路径算法 , 并作了简单比较。
( 下转第 20 页)
基金资助项目: 福建省教育厅基金( JB04036)
20
福建电脑
2008 年第 2 期
Di
=
v´ di
+ u ´ (a
´
Hi H
+
b
´ Ti T
+
c
´
Si S
+g
´
STi ST
)
v 和 u 分别是权重因子, 且 v+u=1。它们可以通过机器学习
得到或通过经验取值。di 是用户兴趣模型中该兴趣项的兴趣度 原值。
Dijkstra 算法, 可求出 v 与其他顶点的最短路。O(VlogV+E)*O(V) 权值改造满足两个原则: (1)W' 非负; (2)对于任意顶点 u, v,
p 是 在 W 上 的 u 到 v 的 最 短 路 当 且 仅 当 p 是 在 W' 上 的 u 到 v 的最短路。下证 w'(u,v)=w(u,v)+h(u)- h(v), 满足以上两个原则: