您的位置:首页 > 其它

分治算法主定理

2016-05-29 21:01 211 查看

分治算法主定理

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

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

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

主定理(还存在更一般的结果):如果对于常数a>0、b>1以及d≥0,有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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息