关于凸包问题的分治法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Step2:划分成两个子集S1,S2.
Step3:P1=CH(S1)和P2=CH(S2).
Step:合并P1,P2得到解集P.
Step1:在p1内部找一点p Step2:if p不属于p2 goto step4
Else goto step3
Step3:p在p2的内部,用p连接p1,p2的各个顶点并按各个夹角排序。
S1的解
S2的解
……
Si的解
……
Sn的解
子集解的合并
问题 S的解 S
凸壳问题
问题要求: 给定一个点集
s { p , p , pn},求一个 1 2
最小凸边形包含S中所有的点,组成这个凸边形的点的集合就是凸 壳,用CHS(S)表示(Convex hull的英文缩写)。
上图所示的凸壳为:CHS(S)={ p1,p3,p10,p12,p0 }
得到p1,p2的一个分百度文库表。
Goto step5. Step4:计算p到p2的正切线,得到u,v,删除uv链上的点保留u,v顶
点。在按夹角大小分类,得到分类表。
Step5:用格雷厄姆算法的到p1,p2的凸壳
程序实现
1.数据结构。 2.算法的选择。
3编写程序。
三 维 空 间 的 凸 壳
凸壳问题的常用方法
卷包裹法 格雷厄姆算法
分治法
卷包裹法
一: 找初始点: 先从这一系列的点中找到Y轴最小的点,如果存在相等的Y值,则取 X值最小的点P0。 显然P0是凸壳CHS(S)中的点。
二: 以P0为定点,连接P0和其他的点,的到n-1条直线段,计算各线段的 角度,将角度最小的点P1加入到凸壳序列中,并以P1为定点,重复二。 直到回到初始点P0.
三:若夹角相同,则删除线段最短的点。这样得到一个新的序列。 p0,p1到pm,其中p0,p1,和pm必为凸壳中的点。
四:再从p3,开始重复二和三,直到遍所有点,最后剩下的点,就是所求的凸壳。
凸壳问题分治法的过程
划分过程
p1 p14
归并过程
Divide and Conquer:
Step1:把S中的点按x坐标进行排序。
关于凸壳问题的分治法
分治法的求解过程
一般来说,分治法的求解过程由以下三个阶段组成: (1)划分 (2)求解子问题 (3)合并
二分:
原问题 的规模是n
子问题1 的规模是n/2
子问题2 的规模是n/2
子问题1的解
子问题2的解
原问题的解
问题的分解
问题S
问题S1
问题S2
……
问题Si 子问题求 解
……
问题Sn
3
P4 4
P3
P 5 P5 2
P 2
p1
1
图一
图二
图三
图四
格雷厄姆算法
一: 找初始点: 先从这一系列的点中找到Y轴最小的点,如果存在相等的纵坐标的值,则取
X值最小的点P0。 显然P0是凸壳CHS(S)中的点。
二:以p0为定点连接其他的点,形成n-1条线段,计算各线段与x轴的夹 角,并按夹角的大小和线段的长度排序。
数据挖掘的简单运用
多维空间概述
一维 二维 三维 四维(事实上网络数据的维数较高)
聚类分析
如何把数据归类?
算法设计与分析
西七620制作