第2讲数据结构与算法概要.pptVIP

  • 6
  • 0
  • 约1.79万字
  • 约 114页
  • 2019-06-29 发布于浙江
  • 举报
最接近点对问题 如果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+d]中所有点,即p3和q3。从而我们用线性时间就可以将S1的解和S2的解合并成为S的解。 能否在线性时间内找到p3,q3? 问题:m的选取 问题:m的选择 最接近点对问题 类似快速排序法的基准元素选取,如果分割点m选取不当,会造成|S1|=1, |S2|=n-1的情形,使得T(n)=T(n-1)+O(n)=O(n2) 可以通过“平衡子问题”方法加以解决,比如选取各点坐标的中位数作为分割点。 问题:m的选取 问题:m的选择 Public static double cpair1(S) { n=|S|; if(n2) return -1; m=S中各点坐标的中位数; S1={x∈S|x≤m}, S2={x∈S|xm};//构造S1和S2 d1= cpair1(S1); d2=

文档评论(0)

1亿VIP精品文档

相关文档