- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
平面点集的凸包
平面点集的凸包
问题 (平面点集的凸包)
给定大量离散点的集合Q,求一个最
小的凸多边形,使得Q中的点在该多
边形内或者边上.
应用背景
图形处理中用于形状识别:字形识
别、碰撞检测等 2
分治算法
1. 以连接最大纵坐标点y max 和最小
纵坐标点y min 的线段d={y max,y min}划
分L 为左点集 Lleft 和右点集Lright
y max
d
y min
2. Deal (Lleft ) ;Deal (Lright ) 3
Deal (Lleft )
考虑Lleft :确定距d 最远的点P
在三角形内的点,删除;
a 外的点与a 构成Lleft 的子问题;
b 外的点与b 构成Lleft 的子问题.
b
P y max
d
a
4
y min
伪码
Deal ( Lleft )
1. 以d 和距离d 最远点P 构成三角
形,P加入凸包,另外两条边分别记
作a 和b
2. 检查Lleft 中其他点是否在三角形
内;在则从L 中删除;否则根据在a
或b 边的外侧划分在两个子问题中
3. Deal (a)
4. Deal (b) 5
算法分析
• 初始用d 划分 O(n)
• Deal 递归调用 W(n)
– 找凸包顶点P O(n)
– 根据点的位置划分子问题 O(n)
• W(n) = W(n-1) + O(n)
W(3) = O(1)
2
最坏情况为O(n )
2
T(n) = O(n) + W(n) = O(n )
• Graham扫描算法O (nlogn) 6
小结:分治算法设计
• 将原问题归约为子问题
直接划分注意尽量均衡
通过计算归约为特殊的子问题
子问题与原问题具有相同的性质
子问题之间独立计算
• 算法实现:
递归或迭代实现
注意递归执行的边界
7
小结:分治算法的
分析及改进
• 时间复杂度分析
给出关于时间复杂
文档评论(0)