第十章 on-line algorithms

31
HIT CS&E 第第第 第第第 On-line On-line Algorithms Algorithms 第第第 第第第 第第第第第第第第第 第第第第第第第第第

Upload: marin

Post on 16-Mar-2016

72 views

Category:

Documents


5 download

DESCRIPTION

第十章 On-line Algorithms. 李建中 计算机科学与工程系. 10.1 Introduction to On-line Algorithms 10.2 On-line Euclidean Spanning Tree Problem 10.3 On-line Algorithm for Convex hull problems 10.4 Randomized On-line Algorithm for MST. 提要. 参考资料. 《 网站资料 》 第十章. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第十章 On-line Algorithms

HITCS&E

第十章第十章

On-line AlgorithmsOn-line Algorithms

李建中李建中计算机科学与工程系计算机科学与工程系

Page 2: 第十章 On-line Algorithms

HITCS&E

10.110.1 Introduction to On-line Introduction to On-line AlgorithmsAlgorithms 10.210.2 On-line Euclidean Spanning Tree On-line Euclidean Spanning Tree

ProblemProblem10.3 10.3 On-lineOn-line Algorithm for Convex hull Algorithm for Convex hull

problemsproblems10.410.4 Randomized Randomized On-lineOn-line Algorithm for MST Algorithm for MST

提要提要

Page 3: 第十章 On-line Algorithms

HITCS&E 参考资料参考资料

《《网站资料网站资料》》 第十章第十章

Page 4: 第十章 On-line Algorithms

HITCS&E

10.110.1 Introduction to On- Introduction to On-lineline AlgorithmsAlgorithms

Page 5: 第十章 On-line Algorithms

HITCS&E

• 前九章介绍的算法设计的条件前九章介绍的算法设计的条件– 在算法执行之前整个输入数据的细节都很清楚在算法执行之前整个输入数据的细节都很清楚– 问题是在完全了解输入数据信息条件下解决的问题是在完全了解输入数据信息条件下解决的

• 实际应用存在不满足上述条件的情况实际应用存在不满足上述条件的情况– 磁盘调度问题磁盘调度问题– 操作系统的页面调度问题操作系统的页面调度问题– Data streamsData streams

Page 6: 第十章 On-line Algorithms

HITCS&E

• On-lineOn-line 算法算法– 在算法设计阶段或执行之前无完全信息可用在算法设计阶段或执行之前无完全信息可用 ,,– 输入数据往往是实时到达的输入数据往往是实时到达的 ..– 算法时而正确时而错误算法时而正确时而错误 ..– 实时算法难以给出正确解实时算法难以给出正确解 , , 一般是近似算法一般是近似算法 ..

• 实时最小生成树问题实时最小生成树问题– 难以给出优化解难以给出优化解 ,, “ “ 最小最小””需要放弃或改为需要放弃或改为““小小”” ..– On-lineOn-line 算法可能如下工作算法可能如下工作 ::

• 当每次一个数据到达时当每次一个数据到达时 , , 将其连接到最近的邻居节点将其连接到最近的邻居节点 ..•下边是一个六个实时到达节点的例子下边是一个六个实时到达节点的例子 ..

Page 7: 第十章 On-line Algorithms

HITCS&E

11

33

55

22

66

44

算法工作过程算法工作过程 优化解优化解11

33

55

22

66

44

Page 8: 第十章 On-line Algorithms

HITCS&E

• On-lineOn-line 算法的性能算法的性能– 令令 CConon 表示表示 On-lineOn-line 算法解的代价算法解的代价– 令令 CCoffoff 表示表示 Off-lineOff-line 算法解的代价算法解的代价– 若若 CCononf(n)Cf(n)Coffoff+c+c, , cc 是常数是常数 , , 则称则称 On-lineOn-line 算法的算法的近似比为近似比为 f(n)f(n). . 这个算法称为这个算法称为 f(n)f(n)-competitive-competitive

Page 9: 第十章 On-line Algorithms

HITCS&E

10.2 10.2 On-line Euclidean On-line Euclidean Spanning Tree Spanning Tree

ProblemProblem问题的定义问题的定义实时算法设计实时算法设计算法性能分析算法性能分析

Page 10: 第十章 On-line Algorithms

HITCS&E 问题的定义

• 输入输入 ::• S=S={{vv11, v, v22, …, v, …, vnn}} 是平面上的是平面上的 nn 个点的集合个点的集合• 这这 nn 个点并非一次给定个点并非一次给定 , , 是逐个出现的是逐个出现的

输出输出 一个一个””最小最小””生成树生成树

求解最小生成树问题的求解最小生成树问题的 On-lineOn-line 算法算法只能是近似算法只能是近似算法

Page 11: 第十章 On-line Algorithms

HITCS&E

Greedy-On-line-ST(Greedy-On-line-ST(SS))1. 1. n=|S|;n=|S|;2. 2. T=0T=0;;3. While 3. While nn0 0 DoDo4. Input(4. Input(vv););5. 5. 把把 vv 与与 V(T)V(T) 之间最短边加入之间最短边加入 TT; ; /*/*V(T)V(T) 是是 TT 节点集合 节点集合

**//6. Endwhile6. Endwhile

On-Line 算法

Page 12: 第十章 On-line Algorithms

HITCS&E

•算法的时间复杂性算法的时间复杂性– 3-63-6 步需要的比较次数步需要的比较次数 =1+2+…+(n-1)=1+2+…+(n-1)– T(n)=O(nT(n)=O(n22))

•解的精确度解的精确度– Greedy-On-line-STGreedy-On-line-ST 算法的近似比是算法的近似比是 OO(log(lognn))

设设 TTonlonl 是算法产生的生成树是算法产生的生成树 , ,

ll 是优化生成树的代价或长度是优化生成树的代价或长度 ,, 下边我们来证明这个结论下边我们来证明这个结论

算法的性能分析算法的性能分析

Page 13: 第十章 On-line Algorithms

HITCS&E引理引理 1. 1. TTonlonl 中第中第 kk 最长边的长度最多为最长边的长度最多为 2l/k2l/k, , 11kkn-1.n-1.

证证 . . 令令 SSkk={={v v | | vv 加入加入 TTonlonl 后后 , , TTonlonl 中出现长度大于中出现长度大于 2l/k2l/k 的边的边 }.}.

如果如果 |S|Skk|<k|<k, , 则则 TTonlonl 中至多中至多 k-1k-1 条边的长度大于条边的长度大于 2l/k2l/k, , 即即TTonlonl 中第中第 kk 最长边的长度最多为最长边的长度最多为 2l/k.2l/k.

往证往证 |S|Skk|<k.|<k.

由算法的由算法的 GreedyGreedy 方法可知方法可知 , , SSkk 中每个点对之间的距离必中每个点对之间的距离必大于大于 2l/k2l/k. . 若不然若不然 , , 设设 uu 和和 vv 之间距离小于之间距离小于 2l/k2l/k, , 则加入则加入 uu(( 或或 vv)) 以后以后 , , 再加再加入入 vv(( 或或 uu)) 时时 , , 不会产生大于不会产生大于 2l/k2l/k 的边的边 ..

Page 14: 第十章 On-line Algorithms

HITCS&E 于是于是 , , SSkk 上上 TSPTSP 的优化解的长度大于的优化解的长度大于 ||SSkk||2l/k 2l/k ..

由于任意点集上的由于任意点集上的 TSPTSP 优化解的长度是其最小生成树长度优化解的长度是其最小生成树长度的的 22 倍倍 , , SSkk 的最小生成树的长度大于的最小生成树的长度大于 ||SSkk||l/k l/k ..

因为因为 SSkk 上最小生成树长度上最小生成树长度 l’l’ 不小于不小于 SS 上最小生成树长度上最小生成树长度 , , 我们我们有有 ,, ||SSkk||l/k l/k < < l’ l’ l l , , 即即 ||SSkk||l/k l/k < < l, l, 或或 ||SSkk| < | < k k ..

于是于是 , , TTonlonl 中第中第 kk 最长边的长度最多为最长边的长度最多为 2l/k.2l/k.

定理定理 1. 1. Greedy-On-line-STGreedy-On-line-ST 算法的近似比是算法的近似比是 OO(log(lognn).). 证证 . . 由引理由引理 1, 1, TTonlonl 的长度的长度 L L 11kkn-1n-12l/k2l/k

=2l =2l 11kkn-1n-11/k 1/k

=2l=2lH(n-1)H(n-1)==O(O(loglogn).n). 于是于是 , , 算法的近似比为算法的近似比为 L/lL/lO(O(loglogn).n).

Page 15: 第十章 On-line Algorithms

HITCS&E

10.310.3 On-line Algorithm On-line Algorithm for Convex hull for Convex hull

problemsproblems 问题的定义问题的定义 On-lineOn-line 算法的基本思想算法的基本思想 On-lineOn-line 算法算法算法的性能分析算法的性能分析

Page 16: 第十章 On-line Algorithms

HITCS&E 问题定义问题定义• 输入输入

– 平面上的平面上的 nn 个点的集合个点的集合 QQ– nn 个点逐个到达个点逐个到达 , , 并非同时出现并非同时出现

• 输出输出– CH(CH(QQ): ): QQ 的的 convex hullconvex hull

QQ 的的 convex hullconvex hull 是一个凸多边形是一个凸多边形 PP ,, QQ 的点或者在的点或者在 PP 上或者在上或者在 PP 内内

凸多边形凸多边形 PP 是具有如下性质多边形是具有如下性质多边形 ::连接连接 PP 内任意两点的边都在内任意两点的边都在 PP 内内

Page 17: 第十章 On-line Algorithms

HITCS&E

• 基本思想基本思想– 当当 kk 个节点已经到达后个节点已经到达后 , , 我们得到一个部分我们得到一个部分 CHCH

On-lineOn-line 算法的思想算法的思想

– 当第当第 k+1k+1 个节点个节点 vv 到达时到达时• 如果如果 vv 落在落在 CHCH 内部内部 , , 不需做任何事不需做任何事• 如果如果 vv 落在落在 CHCH 外部外部 , , 需要调整需要调整 CHCH 的边界的边界• 关键是关键是 : : 记住和调整部分记住和调整部分 CHCH 边界边界

Page 18: 第十章 On-line Algorithms

HITCS&E• 平行线近似法平行线近似法

• 用一组并行线记录、调整、近似用一组并行线记录、调整、近似 CHCH

需要平行移动这需要平行移动这条线条线 , , 不改变其不改变其斜率斜率近似解近似解

Page 19: 第十章 On-line Algorithms

HITCS&E

• 平行线的一般形式平行线的一般形式– 取取 mm 对平行线对平行线 , , 其斜率分别为其斜率分别为 :: 0, tan(0, tan(/m), tan(2/m), tan(2/m), …, tan((m-1)/m), …, tan((m-1)/m)./m).– 这这 mm 对平行线必须满足对平行线必须满足 ::

• 每个输入节点必须在所有平行线对内每个输入节点必须在所有平行线对内 ;;• 每对平行线必须尽可能的靠近每对平行线必须尽可能的靠近

Page 20: 第十章 On-line Algorithms

HITCS&E

• 输入输入– 节点序列节点序列 pp11, p, p22, …, …– 满足前面条件的满足前面条件的 mm 对平行线对平行线

• 输出输出– 近似近似 convex hullconvex hull 序列 序列 aa11, a, a22, …, …– aaii 是覆盖是覆盖 pp11, p, p22,, …, p…, pii 的近似的近似 convex hullconvex hull

On-lineOn-line 算法算法

Page 21: 第十章 On-line Algorithms

HITCS&E

• 算法算法 AA初始化初始化 : : 构造构造 mm 对平行线对平行线 , , 斜率为斜率为 0, tan(0, tan(/m), …, tan((m-1)/m), …, tan((m-1)/m);/m); 搜索平行线相交在第一个点搜索平行线相交在第一个点 pp11..第一步第一步 : : 对于任意一个新到达点对于任意一个新到达点 ppii, , 如果如果 ppii 落在所有平行线对落在所有平行线对 之间之间 , , 不执行任何操作不执行任何操作 ; ; 否则否则 , , 平移最接近平移最接近 ppii 的线到的线到 ppii, , 不改变其斜率不改变其斜率 , , 使使 ppii 成为该线的标记成为该线的标记 ..

第二步第二步 : : 沿逆时针方向连接每条平行线上的输入点沿逆时针方向连接每条平行线上的输入点 , , 形成近似形成近似 convex hull convex hull aaii..第三步第三步 : : 如果不再有点输入 如果不再有点输入 , , 则停止则停止 ; ; 否则令否则令 i=i+1i=i+1, , 接受下一接受下一 个点个点 ppii, goto , goto 第一步第一步 . .

Page 22: 第十章 On-line Algorithms

HITCS&E

• 时间复杂性时间复杂性– O(mn)=O(n)O(mn)=O(n) (( 因为因为 mm 是常数是常数 ))

• 近似解精度近似解精度– 三种三种相关的多边形相关的多边形

• EE: : 由由 2m2m 个平行线形成的多边形个平行线形成的多边形 ..• CC: : 输入点集合的输入点集合的 Convex hull, Convex hull, 即准确解即准确解 ..• AA: : 算法算法 AA 给出的近似给出的近似 Convex hull.Convex hull.

– L(P)L(P) 表示多边形表示多边形 PP 的总边长的总边长 , , 则则 L(E)L(E)L(C)L(C)L(A).L(A).– 近似解近似解 AA 的误差定义为 的误差定义为 ERR(A)=(L(C)-L(A))/L(C)ERR(A)=(L(C)-L(A))/L(C)

算法的性能分析算法的性能分析

PP2m2m

PP2m-12m-1

PP11 PP22 PP33

PP44AA2m2m

AA11

AA22 AA33

AA44

Page 23: 第十章 On-line Algorithms

HITCS&E定理定理 1. 1. ERR(A)ERR(A)sec(sec(/2m)-1. /2m)-1.

** 定理定理 11说明说明 mm越大越大 (( 即平行线对越多即平行线对越多 ), ), 错误越小错误越小 .. 证证 . . 考虑下图考虑下图 ::

BB AA

CC

aa

bb’’

cos2/)((

'cos2'cos2)()( 22

22

22

22

22

22 12/)2

abbaba

abbaba

abbaba

BCACAB abab

2sec

cos111 2

于是于是 , , AB+ACAB+AC BC sec( BC sec(/2)./2).

PP2m2m

PP2m-12m-1

PP11 PP22 PP33

PP44AA2m2m

AA11

AA22 AA33

AA44

Page 24: 第十章 On-line Algorithms

HITCS&E 考虑下图考虑下图 , ,

PP2m2m

PP2m-12m-1

PP11 PP22 PP33

PP44AA2m2m

AA11

AA22 AA33

AA44

由由 AB+ACAB+AC BC sec( BC sec(/2)/2) ,,我们有我们有 L(E)L(E)= = PP2m2mAA11++AA11PP11+P+P11AA22+…+A+…+A2m2mPP2m2m

sec(sec( /2m)(P /2m)(P2m2mPP11+P+P11PP22+…+P+…+P2m-12m-1PP2m2m)) = sec(= sec( /2m)L(A). /2m)L(A). 于是于是 , , Err(A)= (L(C)-L(A))/L(C)Err(A)= (L(C)-L(A))/L(C) (L(E)-L(A))/L(A)(L(E)-L(A))/L(A) sec(sec( /2m)-1 /2m)-1

Page 25: 第十章 On-line Algorithms

HITCS&E

10.410.4 Randomized On-line Randomized On-line Algorithm for MSTAlgorithm for MST• 问题的定义 问题的定义 • 随机随机 On-lineOn-line 算法算法• 算法的性能分析 算法的性能分析

Page 26: 第十章 On-line Algorithms

HITCS&E 问题的定义

•输入输入 EuclideanEuclidean 空间上的空间上的 nn 个点个点 : : vv11, v, v22, …, , …, vvnn

nn 个逐个出现个逐个出现

输出输出 由由 vv11, v, v22, …, v, …, vnn 构成的构成的最小生成树最小生成树

Page 27: 第十章 On-line Algorithms

HITCS&E

Algoritm Algoritm R(m)R(m)T=0; input(m)T=0; input(m);; input(v input(v11));; input(v input(v22));;把边把边 (v(v11, v, v22))添加到添加到 TT;;For For k=3k=3 To To nn Do Do input(vinput(vkk));; If If kkm+1m+1 Then Then 从从 ((vvkk, , vv11), …,(v), …,(vkk, v, vk-1k-1)) 中选择最小边加入中选择最小边加入 TT;; Else Else 从从 ((vvkk, , vv11), …,(v), …,(vkk, v, vk-1k-1)) 中中随机地随机地选择选择 mm 条边条边 , , 把这把这 mm 条边中最小边加入条边中最小边加入 TT;;Return Return TT..

随机随机 On-lineOn-line 算法算法

R(n-1)R(n-1) 是一个确定的贪心算法是一个确定的贪心算法

Page 28: 第十章 On-line Algorithms

HITCS&E 算法的时间复杂性算法的时间复杂性

• 时间复杂性时间复杂性• 每次考察需要每次考察需要 O(m)O(m) 时间时间• 需要需要 O(n)O(n) 次考察次考察• T(n)=O(nm)T(n)=O(nm)

Page 29: 第十章 On-line Algorithms

HITCS&E 近似解的精确度近似解的精确度

定义定义 1. 1. 随机随机 On-lineOn-line 算法算法 AA 称为称为 cc-competitive, -competitive, 如如果存果存 在一个常数在一个常数 bb, , 使得 使得 E(CE(CAA(()) )) ccCCoptopt(()+b)+b

其中其中 , , E(CE(CAA(()))) 是算法是算法 AA 在问题实例在问题实例上上产生的产生的 近似解的代价近似解的代价 , , CCoptopt(()) 是是的优化解的代价的优化解的代价 ..

定理定理 1.1. 如果如果 mm 是固定常数是固定常数 , , 算法算法 R(m)R(m) 的的competitive, competitive, 则比是则比是 (n)(n).. 证证 ..

Page 30: 第十章 On-line Algorithms

HITCS&E 我们首先定义一组记号我们首先定义一组记号 ::

=={{1, 2, …, n1, 2, …, n}} 输入点集合输入点集合 , , 输入顺序为输入顺序为 11 、、 22 、、……、、 n. n. D(a, b) = D(a, b) = 点点 aa 和和 bb 之间的距离之间的距离 . . N(a, k) = N(a, k) = 在已经出现的点中在已经出现的点中点点 aa 的第的第 kk 最近点最近点 .. E(LE(LR(m)R(m)(( )) )) = = 算法算法 R(m)R(m) 产生的树的期望长度产生的树的期望长度 .. 假定算法收到第假定算法收到第 ii 个输入点个输入点 ii. . 如果如果 22iim+1m+1, , 则则 ii 与前与前 i-1i-1 个点中最近点连接个点中最近点连接 , , 加入树加入树

中中 .. 如果如果 m+1m+1iinn, , 则则 ii 与与前前 i-1i-1 个点中个点中第第 jj 最近点连接的概最近点连接的概率为率为 11

11 / i-mjm

im

ji

于是于是 , , 我们有我们有

n

mi

mi

j

m

imR jiNiDm

im

jiiNiDLE2 1

1

2)( (1) )),(,(1

11))1,(,())(( /

Page 31: 第十章 On-line Algorithms

HITCS&E我们来计算我们来计算 E(LE(LR(m)R(m)(())))/L(/L()) 的的下界下界 ..

L(L()) 是输入点集合为是输入点集合为时的最小生成树的长度时的最小生成树的长度 ..构造一个特殊输入序列构造一个特殊输入序列 *, *, 使得使得 E(LE(LR(m)R(m)((*))/L(*))/L(*)*)==(n)(n)于是于是 , , E(LR(m)(E(LR(m)())/L())/L()=)=(n)(n)

我们来计算我们来计算 E(LE(LR(m)R(m)(())))/L(/L()) 的上界的上界 ..令令 DD 是是 nn 个输入点的直径个输入点的直径 . . 最小生成树的长度最小生成树的长度 DD..因每条边的长度因每条边的长度 DD, , 任何任何 On-lineOn-line 算法产生的树的长度算法产生的树的长度 (n-(n-1)D1)D..我们有我们有 ,, E(LE(LR(m)R(m)(())/L())/L() ) (n-1)D/D=n-1(n-1)D/D=n-1..

于是于是 , , R(m)R(m) 的的 competitivecompetitive 比是比是 (n).(n).