标签:HERE master poi mem tps its i++ 最坏情况 The
平面最近点对是在谈到归并算法时常用的例子,其复杂度可以到达优秀的\(O(nlogn)\);但当真正去实现这样的复杂度实际并不显然。
算法核心思想:
merge
,主要考虑距离中点横坐标距离不超过\(minl\)的点集\(M\),最坏情况下\(M\)集合大小是\(O(n)\);但我们只需对集合中每个元素元素比较8次(落在固定大小矩形上的点).所以复杂度\(O(nlogn)\)实现问题:
如何找到所需要比较的8个元素?
就我翻阅的资料来看,还没有真正常数时间就能找到这8个元素的实现,所以很多实现的最坏情况的复杂度是\(O(n^2)\)(也许均摊情况会好很多).
这里给出\(O(nlognlogn)\)的算法;
思想:找到\(M\)集合元素后,按照\(y\)轴进行排序,这样只需向上比较8个点即可(常数个点)
复杂度分析:
\(f(n) = 2f(n/2)+O(nlogn)\)
master thereom:
\(O(nlogn^{k+1}) = O(nlognlogn)\)
标签:HERE master poi mem tps its i++ 最坏情况 The
原文地址:https://www.cnblogs.com/fridayfang/p/12158919.html