8.3 分治算法和递推关系
基础内容:
假 设 f ( n ) 为 求 解 问 题 的 规 模 的 总 步 数 , g ( n ) 表 示 每 一 步 中 额 外 的 步 骤 。 假 设 递 推 关 系 中 , 每 次 都 将 问 题 拆 分 为 d 个 更 小 的 问 题 , 那 么 f ( n ) = f ( n d ) + g ( n ) 假设 f(n)为求解问题的规模的总步数,g(n)表示每一步中额外的步骤。\\ 假设递推关系中,每次都将问题拆分为d个更小的问题,那么\\ f(n)=f(\frac{n}{d})+g(n) 假设f(n)为求解问题的规模的总步数,g(n)表示每一步中额外的步骤。假设递推关系中,每次都将问题拆分为d个更小的问题,那么f(n)=f(dn)+g(n)
例如归并排序
其总数就可以表示为f(n)=2f(n/2)+n
在上面的基础之上:
g(n)为固定长度
“
设 f 是 满 足 递 推 关 系 : f ( n ) = a f ( n b ) + c 的 增 函 数 , 即 g ( n ) 为 固 定 长 度 , 其 中 a , c ∈ R , b ∈ N , 那 么 f ( n ) 是 { O ( n log b a ) a > 1 O ( log b n ) a = 1 如 果 n = b k , a ≠ 1 , f ( n ) = C 1 n log b a + C 2 C 1 = f ( 1 ) + c a − 1 , C 2 = − c a − 1 设f是满足递推关系:\\ f(n)=af(\frac{n}{b})+c \\ 的增函数,即g(n)为固定长度,其中 a,c \in R, b \in N,那么 \\ f(n) 是 \begin{cases} O({n}^{\log_{b} a}) & a>1 \\ O(\log_b n) & a=1 \end{cases} \\ 如果 n=b^k,a \neq 1,f(n)=C_1 {n}^{\log_b a}+C_2\\ C_1=f(1)+\frac{c}{a-1},C_2=\frac{-c}{a-1} 设f是满足递推关系:f(n)=af(bn)+c的增函数,即g(n)为固定长度,其中a,c∈R,b∈N,那么f(n)是{
O(nlogba)O(logbn)a>1a=1如果n=bk,a=1,f(n)=C1nlogba+C2C1=f(1)+a−1c,C