华南理工大学数据结构与算法课件第12章 分而治之算法.pptVIP

  • 16
  • 0
  • 约7.26千字
  • 约 31页
  • 2019-05-10 发布于广东
  • 举报

华南理工大学数据结构与算法课件第12章 分而治之算法.ppt

* * * 应 用 考察例12-4中的14个点,A中的最近点对为(a, e),其距离约为0.316。B中最近点对为(f, g),其距离为0.3,因此? = 0.3。当考察是否存在第二类点时,除d, j, c, l, m 以外的点均被淘汰,因为它们距分割线x = 2的距离大于等于?。RA = {d, c, m},RB = {i, l},由于d和m的比较区中没有点,只需考察c即可。c的比较区中仅含点l。计算c和l的距离,发现它小于?,因此(c, l)是最近点对。 分而治之算法的实现需要先确定什么是“小问题”以及如何来表示点。由于集合中少于两点时不存在最近点对,因此分解过程中应保证不会产生少于两点的点集,因此将少于4点的点集作为“小问题”,就可避免产生少于两点的点集。点可用Point1类来表示(见以下程序),其中每个点有3个参数:标号,x坐标和y坐标。其中,标号为整数。 应 用 按y坐标排序的点保存在另一个使用类Point2(见程序12-7)的数组中,为了便于按y坐标排序,该类也已重载了操作符“=”。成员p用于指向x中的对应点。程序12-7定义了一个模板函数dist来计算点a, b之间的距离。 如果点的数目少于两个,则函数closest返回false,否则返回true。当函数成功时,在参数a和b中返回距离最近的两个点,在参数d中返回距离。代码首先验证至少存在两个点,然后使用MergeS

文档评论(0)

1亿VIP精品文档

相关文档