• 代入法求递推式


    先介绍一下几个定理

    定理1:

    设 $b$ 和 $d$ 是非负常数, $n$ 是2的幂,那么下面递推式

    $$f(n) = egin{cases}
    d & n=1 \
    2f(n/2)+bnlog n & n geq 2
    end{cases}$$

    的解是 $f(n) = Theta(n {{log}^2n})$

    引理1:

    设 $a$ 和 $c$ 是非负整数,$b, d, x$ 是非负常数,并且对于某个非负整数 $k$,令 $n=c^k$,那么,下面递推式

    $$f(n) =  egin{cases}
    d & n=1 \
    af(n/c)+bn^x & n geq 2
    end{cases}$$

    的解是

    $$f(n)= egin{cases}
    bn^xlog_cn + dn^x & a=c^x \
    (d + frac{bc^x}{a-c^x})n^{log_ca} - (frac{bc^x}{a-c^x})n^x & a eq c^x
    end{cases}$$

    特别地,当 $x=1$ 时,有

    $$f(n)= egin{cases}
    bnlog_cn + dn & a=c \
    (d + frac{bc}{a-c})n^{log_ca} - (frac{bc}{a-c})n & a eq c
    end{cases}$$

    定理:

    设 $a$ 和 $c$ 是非负整数,$b$ 和 $d$ 是非负常数,$n=c^k$,那么,下面递推式

    $$f(n)= egin{cases}
    d & n=1 \
    af(n/c)+bn^x & n geq 2
    end{cases}$$

    的解是

    $$f(n)= egin{cases}
    Theta(n^x) &  a < c^x\
    Theta(n^xlog n)  & a=c^x \
    Theta (n^{log_ca}) & a>c^x
    end{cases}$$

    特别地,如果 $x=1$,那么

    $$f(n)= egin{cases}
    Theta(n) &  a < c\
    Theta(nlog n)  & a=c \
    Theta (n^{log_ca}) & a>c
    end{cases}$$

     代入法

    这种方法通常用来证明上下界,也能用来证明精确解。

    基本过程:

    • 猜想一个解(例如,通过上面地定理)
    • 再采取数学归纳法,初始解带有一个或多个常量,假设解对小规模成立;现要对大一点也成立,求出此时地常数 $c_I$
    • 也就是说,对常数取 $c_i$ 时,解是正确地. 
  • 相关阅读:
    python实现对单机游戏内存修改
    python_turtle模板画图
    Android向Rest服务Post数据遇到的Date类型数据问题
    Jquery根据字段内容设置字段宽度
    LLVM安装
    impala编译
    JS一些简单的问题
    小三角形的制作方法
    js中的一些简单问题
    另一部分页面
  • 原文地址:https://www.cnblogs.com/lfri/p/11632868.html
Copyright © 2020-2023  润新知