博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归方程组解的渐进阶的求法——套用公式法
阅读量:4556 次
发布时间:2019-06-08

本文共 1666 字,大约阅读时间需要 5 分钟。

递归方程组解的渐进阶的求法——套用公式法

这个方法为估计形如:

T(n)=aT(n/b)+f(n) (6.17)

的递归方程解的渐近阶提供三个可套用的公式。(6.17)中的a≥1和b≥1是常数,f (n)是一个确定的正函数。

(6.17)是一类分治法的时间复杂性所满足的递归关系,即一个规模为n的问题被分成规模均为n/ba个子间题,递归地求解这a个子问题,然后通过对这a个子间题的解的综合,得到原问题的解。如果用T(n)表示规模为n的原问题的复杂性,用f(n)表示把原问题分成a个子问题和将a个子问题的解综合为原问题的解所需要的时间,我们便有方程(6.17)。

这个方法依据的是如下的定理:设a≥1和b≥1是常数f (n)是定义在非负整数上的一个确定的非负函数。又设T(n)也是定义在非负整数上的一个非负函数,且满足递归方程(6.17)。方程(6.17)中的n/b可以是[n/b],也可以是n/b。那么,在f(n)的三类情况下,我们有T(n)的渐近估计式:

  1. 若对于某常数ε>0,有
    img28.gif
    img29.gif
  2. img30.gif
    img31.gif
  3. 若对其常数ε>0,有
    img32.gif
    且对于某常数c>1和所有充分大的正整数naf(n/b)≤cf(n),则T(n)=θ(f(n))。

这里省略定理的证明。

在应用这个定理到一些实例之前,让我们先指出定理的直观含义,以帮助读者理解这个定理。读者可能已经注意到,这里涉及的三类情况,都是拿f(n)与img33.gif作比较。定理直观地告诉我们,递归方程解的渐近阶由这两个函数中的较大者决定。在第一类情况下,函数img34.gif较大,则T(n)=θ(img35.gif);在第三类情况下,函数f(n)较大,则T(n)=θ(f (n));在第二类情况下,两个函数一样大,则T(n)=θ(img36.gif),即以n的对数作为因子乘上f(n)与T(n)的同阶。

此外,定理中的一些细节不能忽视。在第一类情况下f(n)不仅必须比img37.gif小,而且必须是多项式地比img38.gif小,即f(n)必须渐近地小于img39.gifimg40.gif的积,ε是一个正的常数;在第三类情况下f(n)不仅必须比img41.gif大,而且必须是多项式地比img42.gif大,还要满足附加的“正规性”条件:af(n/b)≤cf(n)。这个附加的“正规性”条件的直观含义是a个子间题的再分解和再综合所需要的时间最多与原问题的分解和综合所需要的时间同阶。我们在一般情况下将碰到的以多项式为界的函数基本上都满足这个正规性条件。

还有一点很重要,即要认识到上述三类情况并没有覆盖所有可能的f(n)。在第一类情况和第二类情况之间有一个间隙:f(n)小于但不是多项式地小于img43.gif;类似地,在第二类情况和第三类情况之间也有一个间隙:f(n)大于但不是多项式地大于img44.gif。如果函数f(n)落在这两个间隙之一中,或者虽有img45.gif,但正规性条件不满足,那么,本定理无能为力。

下面是几个应用例子。

例1 考虑

T(n)=9T(n/3)+n0

对照(6.17),我们有a=9,b=3, f(n)=nimg46.gif,取img47.gif,便有img48.gif,可套用第一类情况的公式,得T(n)=θ(n2)。

例2 考虑

T(n)=T(2n/3)+1

对照(6.17),我们有a=1,b=3/2, f(n)=1,img49.gif,可套用第二类情况的公式,得T(n)=θ(logn)。

例3 考虑

T(n)=3T(n/4)+nlogn

对照(6.17),我们有a=3,b=4, f(n)=nlog n, img50.gif,只要取img51.gif,便有img52.gif。进一步,检查正规性条件:

img53.gif

只要取c=3/4,便有af(n/b)≤cf(n),即正规性条件也满足。可套用第三类情况的公式,得T(n)=θ(f(n))=θ(nlogn)。

最后举一个本方法对之无能为力的例子。

考虑

T(n)=2T(n/2)+nlogn

对照(6.17),我们有a=2,b=2, f(n)=nlog nimg54.gif,虽然f(n)渐近地大于img55.gif,但f(n)并不是多项式地大于img56.gif,因为对于任意的正常数ε

img57.gif

f(n)在第二类情况与第三类情况的间隙里,本方法对它无能为力。

转载于:https://www.cnblogs.com/tongzhiyong/archive/2007/04/08/704892.html

你可能感兴趣的文章
PHP,javascript实现大文件上传
查看>>
c#图像处理算法学习
查看>>
webApi之FromUri和FromBody区别
查看>>
【SoapUI】http接口测试
查看>>
各种工具网站
查看>>
数据库事务
查看>>
xe7 控件升级
查看>>
TFrame bug
查看>>
刚学习的如何才能自信的拍美美的婚纱照呢(要结婚啦)
查看>>
M51文件注释
查看>>
关于临界资源访问互斥量的死锁问题
查看>>
django-view层
查看>>
异步加载JS的方法。
查看>>
golang-gorm框架支持mysql json类型
查看>>
【tool】白盒测试
查看>>
图论其一:图的存储
查看>>
20180923-WebService
查看>>
z变换
查看>>
Python - 静态函数(staticmethod), 类函数(classmethod), 成员函数
查看>>
Spring基础2
查看>>