数学建模中遇到求最近点对的问题,按理说我们使用朴素法进行暴力求解答案也是可行的,但是由于数据过于庞大,我们最初使用朴素法在计算机上跑了6个小时都没有得到问题的解,最终只得作罢。后来我们利用分治法解决了最近点对问题,具体思路参看这里。
分治法
分治法解决最近点对问题的算法过程读者可以参见上文给出的参考博客。分治法的思想就是先将问题分解成一个个小的问题,最后将小问题的答案合并得到问题的解。这其中关键步骤是分解与合并,具体实现方法是使用递归,核心思想是空间换时间。
代码实现
上面给出的教程中是使用C++实现的,我这里给出Python实现。
由于我这里具体的问题是给出经纬度找出最近点对,所以我采用的距离为改进的球面余弦距离。
|
|