平面最近点对问题,三分治法。

  最近点对问题,三分治法,和求中位数思路是一样的,

1,随机选一个数X,线性扫描,比X小的一堆A,比X大的一堆B,同时可以得到Min=Min(MinB-X,x-MaxA)
2, 对于这两堆,分别重复1的步骤,直到结束。

求中位数,需要抛弃掉一半数据,只求其中一个子集合的n/2-k大即可。
《算法概论》上有证明递推式复杂度的通式。

对于递推式T(n)=aT(n/b)+O(n^d)有如下结论:

1,当d>log(b,a)时复杂度是O(n^d)
2,当d=log(b,a)时复杂度是O(n^d*logn)
3, 当d<log(b,a)时复杂度是O(n^(log(b,a))

这个公式可以适用于快速排序,中位数等分治算法的复杂度证明。

这里d=1是每次执行的复杂度指数,a=2,是子问题的数量扩大倍数。
而关键是b,代表每个子问题的规模缩小的比例。
(注意《算法概论》不是导论,《算法概论》是亚马逊算法类书销量第2,仅次于导论,而薄于导论,高于导论)

posted @ 2011-07-06 17:03  CSDN大笨狼  阅读(1059)  评论(0编辑  收藏  举报