zoukankan      html  css  js  c++  java
  • 代入法求递推式

    先介绍一下几个定理

    定理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$ 时,解是正确地. 
  • 相关阅读:
    Castle Windsor 学习-----Installer的几种安装方式
    asp.net mvc源码分析-Route的GetRouteData
    查看iis对应w3wp.exe显示的进程ID号(转载)
    jvisualvm安装Visual GC插件
    Modelsimse10.4如何编译altera库文件以支持IP仿真
    sublime text3 配置使用
    Modelsim调用用do脚本自动化仿真
    Quartus16.0如何使用TCL脚本
    Java中使用Timer和TimerTask实现多线程
    框架导论
  • 原文地址:https://www.cnblogs.com/lfri/p/11632868.html
Copyright © 2011-2022 走看看