分治算法主定理

分治算法主定理

分治算法通常遵守一种通用模式:即:在解决规模为 n 的问题时,总是先递归地求解 a 个规模为 nb 的子问题,然后在 O(nd) 时间内将子问题的解合并起来,其中 a,b,d>0 是一些特定的整数。分治算法的运行时间可以通过公式:

T(n)=aT(nb)+O(nd)

得出。以下将给出这类一般递推式的一个封闭解,以便由于遇到新的问题时,无需重新求解。

主定理(还存在更一般的结果):如果对于常数 a>0 b>1 以及 d0 ,有 T(n)=aT(nb)+O(nd) 成立,则:

T(n)=O(nd)O(ndlog2n)O(nlogba)d>logbad=logbad<logba

譬如:归并排序的时间复杂度为 T(n)=2T(n2)+O(n1)

那么 a=2 b=2 d=1 ,则 d=1=logba=1 ,由主定理可知 T(n)=O(ndlog2n)=O(nlog2n)

    原文作者:递归与分治算法
    原文地址: https://blog.csdn.net/q547550831/article/details/51533887
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞