分治法适用情景
- 该问题的规模缩小到一定的程度就可以容易地解决
- (前提) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质
- (关键) 利用该问题分解出的子问题的解可以合并为该问题的解;
- (效率) 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
使用分治法 (Divide and Conquer) 解题步骤
Step1:Devide——将要解决的问题划分成若干规模较小的同类问题
Step2:Conquer——当子问题划分得足够小时,用较简单的方法解决 (递归)
Step3:Combine——将子问题的解逐层合并构成原问题的解
最接近点对问题
问题描述
在二维平面上的n个点中,找出最接近的一对点
问题背景
在应用中,常用诸如点、圆等简单的几何对象代表现实世界中的实体。在涉及这些几何对象的问题中,常需要了解其邻域中其他几何对象(最接近)的信息。例如,在空中交通控制问题中,若将飞机作为空间中移动的一个点来看待,则具有最大碰撞危险的2架飞机,就是这个空间中最接近的一对点。这类问题是计算几何学中研究的基本问题之一
问题分析
已知集合S中有n个点,使用分治法的思想就是将S进行拆分,分为2部分求最近点对。算法每次选择一条垂线L,将S拆分左右两部分为SL和SR,( L一般取点集S中所