(关于第一章习题还没写完就开始第二章这件事)
典例选讲
和式的记号
主要是一些 \(\sum\) 符号使用上的问题,有以下几点原则与建议:
- 在处理和式时尽可能用在 \(\sum\) 符号下列出指标关系的形式,处理时更不易出错。
- 在使用确定界限形式时常算上取 \(0\) 值的项来保证理解的有效性。
- 用 \([P(x)]\) 的形式来表示表达式 \(P(x)\) 的 bool 值,若值为 \(0\) 则忽略该式中其他因式的值是否被定义。
将和式转换为递归式求封闭形式
这一部分已在第一章提到过,此处不在赘述。
将递归式转换为和式
当一个递归式的求解十分困难,用已知的成套方法几乎不可能解决时,我们可以采取将递归式转换为和式的方法,再用求解和式的各种技巧求得式子的封闭形式。
又是hanoi塔
再次回到我们的老朋友这里。这次我们将使用更加一般性的方法使得他的推导更加地理所当然,而不是用归纳法证明一个猜测出的结论。列出hanoi塔的递归式为:
\[\begin{array}{llll} &T_0 &= &0;\\ &T_n &= &2T_{n-1}+1, &n > 0. \end{array} \]两边都除以 \(2^n\) ,我们将会得到:
\[\begin{array}{llll} &T_0/2^0 &= &0;\\ &T_n/2^n &= &T_{n-1}/2^{n-1}+1/2^n, &n > 0. \end{array} \]让我们来换个元,令 \(S_n = T_n/2^n\) ,则有:
\[\begin{array}{llll} &S_0 &= &0;\\ &S_n &= &S_{n-1}+2^{-n}, &n > 0. \end{array} \]由此就可以得到 \(S_n = \sum\limits_{k=1}^n2^{-k}\) ,而这就是几何级数的和,在后面将会证明它等于 \(1-\left(\frac12\right)^n\) ,所以最后我们得到 \(T_n = 2^nS_n = 2^n-1\) 。
一般的情况
前面的hanoi塔解法其实就是这种方法的一种应用形式。这种具有一般性的方法将能够解决任何形如
\[a_nT_n = b_nT_{n-1}+c_n \]的递归式。而该方法的主要思想就是利用一个求和因子 \(s_n\) 来乘两边,得到:
\[s_na_nT_n = s_nb_bT_{n-1}+s_nc_n \]只要能够恰当的选取 \(s_n\) ,使它满足 \(s_nb_n = s_{n-1}a_{n-1}\) ,那么记 \(S_n = s_na_nT_n\) ,我们就能够得到一个可以转换为和式的递归式:
\[S_n = S_{n-1}+s_nc_n \Leftrightarrow S_n = \sum\limits_{k=1}^ns_kc_k \]