- 13
- 0
- 约1.06万字
- 约 41页
- 2019-12-01 发布于天津
- 举报
* 2.9 线性时间选择 复杂度分析 T(n)=O(n) 上述算法将每一组的大小定为5,并选取75作为是否作递归调用的分界点。这2点保证了T(n)的递归式中2个自变量之和n/5+3n/4=19n/20=εn,0ε1。这是使T(n)=O(n)的关键之处。当然,除了5和75之外,还有其他选择。 * 问题描述:给定平面S上n个点,找其中的一对点,使得在n(n-1)/2个点对 中, 该点对的距离最小。 假设我们用x轴上某个点m将S划分为2个子集S1和S2 ,基于平衡子问题的思想,用S中各点坐标的中位数来作分割点。 递归地在S1和S2上找出其最接近点对{p1,p2}和{q1,q2},并设d=min{|p1-p2|,|q1-q2|},S中的最接近点对或者是{p1,p2},或者是{q1,q2},或者是某个{p3,q3},其中p3∈S1且q3∈S2。 2.10 平面最接近点对 * 如果S的最接近点对是{p3,q3},即|p3-q3|d,则p3和q3两者与m的距离不超过d,即p3∈(m-d,m],q3∈(m,m+d]。 由于在S1中,每个长度为d的半闭区间至多包含一个点(否则必有两点距离小于d),并且m是S1和S2的分割点,因此(m-d,m]中至多包含S中的一个点。由图可以看出,如果(m-d,m]中有S中的点,则此点就是S1中最大点。 因此,我们用线性时间就能找到区间(m-d,m]和(m,m+
原创力文档

文档评论(0)