遞歸問題
習題
T2:
把有 \(n\) 個圓盤的塔從左邊的樁柱 \(A\) 移動到右邊的樁柱 \(B\) , 不允許在 \(A\) 和 \(B\) 之間直接移動, 求最短的移動序列. ( 每一次的移動都必須是移動到中間的樁柱或者從中間的樁柱移出. 像通常一樣, 較大的圓盤永遠不能放在較小圓盤的上面. )

上圖為大小為 \(2\) 的塔的移動方式.
若用較大的盤代表底盤, 較小的盤代表其余的盤組成的塔, 則可以表示所有大小大於等於 \(2\) 的塔的移動方式. 可以發現,每次將整座塔移動一步, 都需要移動 \(3\) 次小塔和 \(1\) 次底盤.
設 \(S_n\) 為大小為 \(n\) 的塔移動一步的最小移動次數, 則由上圖可知
\[ S_n=\left\{ \begin{array}{l} 1&n=1\\ 3\times S_{n-1}+1&n\geq 2\\ \end{array} \right. \]
所以
\[S_n= \frac{3^n-1}{2} \]
答案為 \(2\times S_n=3^n-1\)
T6:
平面上由 \(n\) 條直線定義的某些區域是無界的, 而另一些區域則是有界的. 有界區域的最大個數是多少?
設 \(S_n\) 為 \(n\) 條直線能確定的有界區域的最大可能個數.
顯然 \(S_1=S_2=0\) .
對於加進來的第 \(n\) 條直線, 與其他直線最多有 \(n-1\) 個交點, 於是被分成 \(n\) 段, 每段都對應新划分出的一個區域. 其中兩端的兩段是射線, 對應的區域是無限區域.
所以可知每次新增 \(n-2\) 個有界區域.
所以可知
\[S_n=\left\{ \begin{array}{l} 0&n\leq 2\\ S_{n-1}+n-2&n>2 \end{array}\right.\]
所以
\[S_n=\frac{1}{2}n^2-\frac{3}{2}n+1 \]
T7:
設 \(H(n)=J(n+1)-J(n)\). 方程 \((1.8)\) 告訴我們有 \(H(2n)=2\) , 而對 \(n\geq 1\) 有 \(H(2n+1)=J(2n+2)-J(2n+1)=(2J(n+1)-1)-(2J(n)+1)=2H(n)-2\). 於是, 看起來有可能通過對 \(n\) 用歸納法, 證明對所有 \(n\) 都有 \(H(n)=2\). 這里什么地方有錯?
\(H(2n+1)=2H(n)-2\nRightarrow H(2n+1)=2\)
T8:
\(Q_0=\alpha;~Q_1=\beta;\\Q_n=(1+Q_{n-1})/Q_{n-2},(n>1)\)
假設對於所有 \(n\geq 0\) , \(Q_n\neq0\). 提示:\(Q_4=(1+\alpha)/\beta\).
\(Q=\{\alpha,\beta,\frac{1+\beta}{\alpha},\frac{1+\alpha+\beta}{\alpha\beta},\frac{1+\alpha}{\beta},\alpha,\beta,\dots\}\)
顯然,函數 \(Q\) 是周期函數, 周期大小為 \(5\) .
T9:
有時用向后歸納是可能的, 采用從 \(n\) 到 \(n-1\)來證明而不是從 \(n-1\) 到 \(n\). 例如, 考慮命題
\[P(n):if(x,\dotsb,x_n\geq 0),~x_1\dotsb x_n\leq(\frac{x_1+\dotsb+x_n}{n})^n. \]
由於 \((x_1+x_2)^2-4x_1x_2=(x_1-x_2)^2\geq0\) , 所以當 \(n=2\) 時, 這是真的.
\((a)\) . 通過置 \(x_n=(x+\dotsb+x_{n-1})/(n-1)\) , 證明 \(\forall n>1\) , \(P(n)\) 蘊涵 \(P(n-l)\) .
\[x_1\dotsb x_n\leq(\frac{x_1+\dotsb+x_n}{n})^n\\ =(\frac{(x_1+\dotsb+x_{n-1})\cdot\frac{1+(n-1)}{n-1}}{n})^n=(\frac{x_1+\dotsb+x_{n-1}}{n-1})^n\]
\[\therefore x_1\dotsb x_{n-1}\cdot\frac{x+\dotsb+x_{n-1}}{n-1}=(\frac{x_1+\dotsb+x_{n-1}}{n-1})^n \]
\[\therefore P(n-1):x_1\dotsb x_{n-1}\cdot=(\frac{x_1+\dotsb+x_{n-1}}{n-1})^{n-1} \]
\((b)\) . 證明 \(P(n)\) 和 \(P(2)\) 蘊涵 \(P(2n)\) .
由 \(x_1,\dotsb,x_{2n}\geq 0\), 可知計算過程中所有數均大於等於 \(0\) .
已知 \(P(2) \And P(n)\) 成立, 可得:
\[x_1\dotsb x_n\leq(\frac{x_1+\dotsb+x_n}{n})^n, x_{n+1}\dotsb x_{2n}\leq(\frac{x_{n+1}+\dotsb+x_{2n}}{n})^n\\ \Rightarrow x_1\dotsb x_n\cdot x_{n+1}\dotsb x_{2n}\leq(\frac{x_1+\dotsb+x_n}{n})^n\cdot(\frac{x_{n+1}+\dotsb+x_{2n}}{n})^n\\ \leq(\frac{\frac{x_1+\dotsb+x_n}{n}+\frac{x_{n+1}+\dotsb+x_{2n}}{n}}{2})^{2n}=(\frac{x_1+\dotsb+x_{2n}}{2n})^{2n}\]
即 \(P(2n)\) 成立.
\((c)\) . 闡明為什么對所有 \(n\) 蘊涵着 \(P(n)\) 的真實性.
顯然, \(P(1)\) 與 \(P(2)\) 為真, 由 \((b)\) 可得, \(P(2^n)\) 均為真.
\(\therefore\forall n>1,~P(2^{n+1})\Rightarrow P(2^{2n+1}-1)\Rightarrow\dotsb\Rightarrow P(2^{n+1}-2^n+1)\)
T11:
雙重河內塔包含 \(2^n\) 個圓盤, 它們有 \(n\) 種不同的尺寸, 每一種尺寸的圓盤有兩個. 如通常那樣, 要求每次只能移動一個圓盤, 且不能把較大的圓盤放在較小的圓盤上面.
\((a)\) 如果相同尺寸的圓盤是相互不可區分的,要把一個雙重塔從一根樁柱移動到另一根樁柱需要移動多少次?
用 \(A_n\) 來表示雙重河內塔的最少移動次數, \(T_n\) 表示普通河內塔的最少移動次數.
顯然, \(A_n=2T_n=2^{2n+1}-2\) .
\((b)\) 如果在最后的排列中要把所有同樣尺寸的圓盤恢復成原來的從上到下的次序, 需要多少次移動?
設 \(B_n\) 是最少移動次數, \(B(1)=3\). 可以證明, 當 \(n>1\) 時任何策略都做不到優於 \(B_n=A_{n-1}+2+A_{n-1}+2+B_{n-1}\) .
以上為標准答案, 然而我不會做.
T12:
我們進一步推廣習題 \(11a\) . 假設圓盤具有 \(n\) 種不同的尺寸, 且恰好有 \(m_k\) 個圓盤的尺寸是 \(k\) . 當相同尺寸的圓盤被視為不可區分的時候, 確定移動一個塔所需要的最少移動次數 \(A(m_1,\dotsb,m_n)\) .
\[A(m_1,\dotsb,m_n)=2A(m_1,\dotsb,m_{n-1},0)+m_n\\=4A(m_1,\dotsb,m_{n-2},0,0)+2m_{n-1}+m_n\\=\dotsb=\sum_{i=1}^n2^{n-i}\cdot m_i \]
T14:
在一塊厚奶酪上划出五道直的切痕, 可以得到多少塊奶酪? ( 在你划切痕時, 奶酪必須保持在它原來的位置上,且每道切痕必定與三維空間中的一個平面相對應. ) 對 \(P_n\) 求一個遞歸關系, 這里 \(P_n\) 表示 \(n\) 個不同的平面所能定義的三維區域的最大個數.
\[P_0=1\\ P_n=P_{n-1}+L_{n-1}\\=P_{n-1}+\frac{n^2-n}{2}+1\\ =P_{n-2}+\frac{(n-1)^2-(n-1)+n^2-n}{2}+2\\ =\dotsb\\ =P_0+\frac{1^2+\dotsb+n^2-(1+\dotsb+n)}{2}+n\\ =n+1+\frac{\frac{n(n+1)(2n+1)}{6}-\frac{n(n+1)}{2}}{2}\\ =\frac{1}{6}n^3+\frac{5}{6}n+1\]
T15:
約瑟夫有一個朋友, 他站在倒數第二的位置上因而獲救. 當每隔一個人就有一人被處死時, 倒數第二個幸存者的號碼 \(I(n)\) 是多少?
\(I=undefined,2,1,3,5,1,3,5,7,9,11,1,3,5,7,9,11,13,15,17,19,21,23,1,\dotsb\)
T16:
用成套方法來解一般的四參數遞歸式
\[g(1)=\alpha~;\\g(2n+j)=3g(n)+\gamma n+\beta_j~;~~j=0,1~;~~n\geq1. \]
提示: 嘗試用函數 \(g(n)=n\) .
\[設~g(n)=A(n)\alpha+B_0(n)\beta_0+B_1(n)\beta_1+C(n)\gamma~;\\ 將~g(n)=A(n)~代入,~可得:\\ A(n)=A(n)\alpha+B_0(n)\beta_0+B_1(n)\beta_1+C(n)\gamma\\ \therefore(\alpha,\beta_0,\beta_1,\gamma)=(1,0,0,0)\\ \therefore\left\{ \begin{array}{l} A(1)=1\\ A(2n)=A(2n+1)=3A(n) \end{array}\right.\\ \therefore A(2^m+j)=3^m~;~~m\geq0,0\leq j<2^m\\ 將~g(n)=C(n)~代入,~可得:\\ C(n)=C(n)\alpha+B_0(n)\beta_0+B_1(n)\beta_1+C(n)\gamma\\ \therefore(\alpha,\beta_0,\beta_1,\gamma)=(0,0,0,1)\\ \therefore\left\{ \begin{array}{l} C(1)=0\\ C(2n)=C(2n+1)=3C(n)+n \end{array}\right.\\ \therefore C((b_mb_{m-1}\dotsb b_1b_0)_2)=3C((b_mb_{m-1}\dotsb b_2b_1)_2)+(b_mb_{m-1}\dotsb b_2b_1)_2\\ =9C((b_mb_{m-1}\dotsb b_3b_2)_2)+3(b_mb_{m-1}\dotsb b_3b_2)_2+(b_mb_{m-1}\dotsb b_2b_1)_2\\ =\dotsb\\ =3^mC((b_m)_2)+3^{m-1}(b_m)_2+\dotsb+3^0(b_mb_{m-1}\dotsb b_2b_1)_2\\ =3^m+\sum_{i=1}^mb_i\sum_{j=0}^{i-1}3^j~;~~(b_m=1)\\ 將~g(n)=1~代入,~可得:~\left\{ \begin{array}{l} 1=\alpha~;\\ 1=3+\gamma n+\beta_0\\ 1=3+\gamma n+\beta_1 \end{array}\right.\\ \therefore (\alpha,\beta_0,\beta_1,\gamma)=(1,-2,-2,0)\\ \therefore A(n)-2B_0(n)-2B_1(n)=1\\ 將~g(n)=n~代入,~可得:~\left\{ \begin{array}{l} 1=\alpha~;\\ 2n=3n+\gamma n+\beta_0\\ 2n+1=3n+\gamma n+\beta_1 \end{array}\right.\\ \therefore (\alpha,\beta_0,\beta_1,\gamma)=(1,0,1,-1)\\ \therefore A(n)+B_1(n)-C(n)=n\\ 綜上, 可得:~\left\{ \begin{array}{l} A(2^m+j)=3^m&m\geq0,0\leq j<2^m\\ C((b_mb_{m-1}\dotsb b_1b_0)_2)=3^m+\sum_{i=1}^mb_i\sum_{j=0}^{i-1}3^j&b_m=1\\ A(n)-2B_0(n)-2B_1(n)=1&n\geq1\\ A(n)+B_1(n)-C(n)=n&n\geq1 \end{array}\right.\\ 接下來直接解方程即可. %~\left\{ % \begin{array}{l} % A((b_mb_{m-1}\dotsb b_1b_0)_2)=3^m\\ % C((b_mb_{m-1}\dotsb b_1b_0)_2)=3^m+\sum_{i=1}^mb_i\sum_{j=0}^{i-1}3^j\\ % A((b_mb_{m-1}\dotsb b_1b_0)_2)-2B_0((b_mb_{m-1}\dotsb b_1b_0)_2)-2B_1((b_mb_{m-1}\dotsb b_1b_0)_2)=1\\ % A((b_mb_{m-1}\dotsb b_1b_0)_2)+B_1((b_mb_{m-1}\dotsb b_1b_0)_2)-C((b_mb_{m-1}\dotsb b_1b_0)_2)=(b_mb_{m-1}\dotsb b_1b_0)_2 % \end{array}\right.b_m=1 \]
T18:
當有 \(4\) 根而不是 \(3\) 根樁柱時, 如果 \(W_n\) 是將一個有 \(n\) 個圓盤的塔從一根樁柱移動到另一根樁柱所需要的最少移動步數, 證明
\[W_{n(n+1)/2}\leq2W_{n(n-1)/2}+T_n,~~n>0. \]
( 這里 \(T_n=2^n-1\)是 \(3\) 根樁柱時所需要的最少移動次數. ) 利用這個結果求出 \(f(n)\) 的一個封閉形式, 使得對所有 \(n\geq0\) 都有 \(W_{n(n+1)/2}\leq f(n)\)
T19:
當每一個鋸齒的角度為 \(30\degree\) 時, 有可能由 \(n\) 條折線得到 \(Z_n\) 個區域嗎?
T20:
用成套方法來解一般的四參數遞歸式
\[h(1)=\alpha~;\\h(2n+j)=4h(n)+\gamma_j n+\beta_j~;~~j=0,1~;~~n\geq1. \]
提示: 嘗試用函數 \(h(n)=n\) 和 \(h(n)=n^2\) .
和式
和式和遞歸式
\[a_nT_n=b_nT_{n-1}+c_n\\ 求出求和因子~s_n~滿足~s_nb_n=s_{n-1}a_{n-1}\\ s_na_nT_n=s_nb_nT_{n-1}+s_nc_n\\ 記~S_n=s_na_nT_n~,~可得~S_n=S_{n-1}+s_nc_n\\ \therefore S_n=s_0a_0T_0+\sum_{k=1}^{n}s_kc_k=s_1b_1T_0+\sum_{k=1}^{n}s_kc_k\\ \therefore T_n=\frac{1}{s_na_n}(s_1b_1T_0+\sum_{k=1}^{n}s_kc_k).\\ 可以發現~s_n=\frac{a_{n-1}a_{n-2}\dotsb a_1}{b_nb_{n-1}\dotsb b_2}~滿足求和因子的條件.\\ 注:~需防止~a~或~b~中存在~0~. \]
" 快速排序" 的比較步驟的平均次數的遞歸式為:
\[C_0=C_1=0~;\\C_n=n+1+\frac{2}{n}\sum_{k=0}^{n-1}C_k~,~~n>1. \]
\[\times n~避免除法:~nC_n=n^2+n+2\sum_{k=0}^{n-1}C_k\\ 作差規避~\Sigma:\\nC_n-(n-1)C_{n-1}=n^2+n+2\sum_{k=0}^{n-1}C_k-((n-1)^2+(n-1)+2\sum_{k=0}^{(n-1)-1}C_k)\\ =2n+2C_{n-1}\\ \therefore 原遞歸式可轉化為:~\\ C_0=C_1=0~;~~C_2=3~;\\ nC_n=(n+1)C_{n-1}+2n~,~~n>2\\ 於是便可以用之前的方法了.\\ s_n=\frac{a_{n-1}a_{n-2}\dotsb a_1}{b_nb_{n-1}\dotsb b_2}=\frac{(n-1)(n-2)\dotsb1}{(n+1)n\dotsb3}=\frac{2}{n(n+1)}\\ 顯然~s_n~滿足s_n\cdot(n+1)=s_{n-1}\cdot (n-1)\\ s_n\cdot nC_n=s_n\cdot(n+1)C_{n-1}+s_n\cdot 2n~,~~n>2\\ 記~S_n=s_n\cdot nC_n~,~則\\ S_n=S_{n-1}+2s_nn=S_{n-1}+\frac{4}{n+1}\\ \therefore S_n=S_2+4\sum_{k=3}^{n}\frac{1}{k+1}\\ =\frac{1}{3}\cdot2\cdot3+4\sum_{k=1}^{n}\frac{1}{k+1}-4(\frac{1}{2}+\frac{1}{3})=4\sum_{k=1}^{n}\frac{1}{k+1}-\frac{4}{3}~,~~n>2\\ \therefore C_n=\frac{1}{s_nn}S_n=\frac{n+1}{2}S_n\\=2(n+1)\sum_{k=1}^{n}\frac{1}{k+1}-\frac{2}{3}(n+1)~,~~n>2 \]
規定 調和數 \(H_n=1+\frac{1}{2}+\dotsb+\frac{1}{n}=\sum_{k=1}^n\frac{1}{k}\) .
顯然, 可以用 \(H_n\) 來表達 \(C_n\).
\[C_n=2(n+1)H_n-\frac{8}{3}n-\frac{2}{3}~,~~n>1 \]
和式的處理
\[\sum_{k\in K}c\cdot a_k=c\sum_{k\in K}a_k~;~~(~分配律)\\ \sum_{k\in K}(a_k+b_k)=\sum_{k\in K}a_k+\sum_{k\in K}~;~~(~結合律)\\ \sum_{k\in K}a_k=\sum_{p(k)\in K}a_{p(k)}~;~~(~交換律) \]
若 \(K\) 和 \(K'\) 為整數的任意集合
\[\sum_{k\in K}a_k+\sum_{k\in K'}a_k=\sum_{k\in K\cap K'}a_k+\sum_{k\in K\cup K'}a_k \]
等差級數的一般和
\[S=\sum_{0\leq k\leq n}(a+b_k)\Rightarrow S=\sum_{0\leq n-k\leq n}(a+b(n-k))=\sum_{0\leq k\leq n}(a+bn-bk)\\ \therefore2S=\sum_{0\leq k\leq n}((a+bk)+(a+bn-bk))=\sum_{0\leq k\leq n}(2a+bn)\\ =(2a+bn)\sum_{0\leq k\leq n}1=(2a+bn)(n+1).\\ \therefore \sum_{k=0}^{n}(a+bk)=(a+\frac{1}{2}bn)(n+1) \]
擾動法
令
\[S_n=\sum_{0\leq k\leq n}a_k \]
於是可以改寫 \(S_{n+1}\) ;
\[S_n+a_{n+1}=\sum_{0\leq k \leq n+1}a_k=a_0+\sum_{0\leq k\leq n}a_{k+1} \]
若可以用 \(S_n\) 來表示 \(\sum_{0\leq k\leq n}a_{k+1}\), 就可以得到一個方程, 解便是我們求的和式.
比如 幾何級數 ( 等差數列求和 ) :
\[S_n=\sum_{0\leq k\leq n}ax^k \]
通過擾動法可得:
\[S_n+ax^{n+1}=ax^0+\sum_{0\leq k\leq n}ax^{k+1} \]
顯然, \(\sum_{0\leq k\leq n}ax^{k+1}=xS_n\)
\[\therefore S_n+ax^{n+1}=a+xS_n\\ \therefore S_n=\frac{a-ax^{n+1}}{1-x} \]
多重和式
\[A=\begin{bmatrix} a_1a_1&a_1a_2&a_1a_3&\dotsb&a_1a_n\\ a_2a_1&a_2a_2&a_2a_3&\dotsb&a_2a_n\\ a_3a_1&a_3a_2&a_3a_3&\dotsb&a_3a_n\\ \vdots&\vdots&\vdots&\ddots&\vdots\\ a_na_1&a_na_2&a_na_3&\dotsb&a_na_n \end{bmatrix}\\ \]
目標求出
\[\sum_{1\leq j\leq k\leq n}a_ja_k \]
的一個簡單的公式.
\[\sum_{1\leq j\leq k\leq n}a_ja_k=\sum_{1\leq k\leq j\leq n}a_ka_j=\sum_{1\leq k\leq j\leq n}a_ja_k\\ \because [1\leq j\leq k\leq n]+[1\leq k \leq j\leq n]=[1\leq j,k\leq n]+[1\leq j=k\leq n]\\ \therefore \sum_{1\leq j\leq k\leq n}a_ja_k=\frac{1}{2}(\sum_{1\leq j\leq k\leq n}a_ja_k+\sum_{1\leq k\leq j\leq n}a_ja_k)\\ =\frac{1}{2}(\sum_{1\leq j,k\leq n}a_ja_k+\sum_{1\leq j=k\leq n}a_ja_k)\\ =\frac{1}{2}((\sum_{k=1}^{n}a_k)^2+\sum_{k=1}^{n}a_k^2). \]
習題
T19
利用求和因子來求解遞歸式
\[T_0=5~;\\2T_n=nT_{n-1}+3\times n! \]
\[令求和因子~s_n=\frac{a_{n-1}a_{n-2}\dotsb a_1}{b_nb_{n-1}\dotsb b_2}=\frac{2^{n-1}}{n!}\\ s_n\cdot2T_n=s_n\cdot nT_{n-1}+s_n\cdot3\cdot n!\\ 令~S_n=s_n\cdot2T_n=\frac{2^n}{n!}T_n\\ \therefore S_n=S_{n-1}+\frac{2^{n-1}}{n!}\cdot3\cdot n!=S_{n-1}+3\cdot2^{n-1}\\ =S_0+\sum_{k=1}^{n}3\cdot2^{k-1}=\frac{2^{-1}}{0!}\cdot2T_0+3\cdot\frac{1-2^n}{1-2}\\ =2+3\cdot2^n~,~~n\geq1\\ \therefore S_n=2+3\cdot2^n~,~~n\geq0\\ \therefore T_n=\frac{1}{2s_n}S_n=\frac{n!}{2^n}(2+3\cdot2^n)\\ \therefore T_n=\frac{n!}{2^{n-1}}+3\cdot n!~,~~n\geq0 \]
T20
試用擾動法計算 \(\sum_{k=0}^{n}kH_k\) , 不過改為推導出 \(\sum_{k=0}^{n}H_k\) 的值.
\[\sum_{k=0}^{n}kH_k+(n+1)H_{n+1}=\sum_{k=0}^{n+1}kH_k\\ =\sum_{k=0}^{n}(k+1)H_{k+1}\\ =\sum_{k=0}^{n}kH_k+\sum_{k=0}^{n}H_k+\sum_{k=0}^{n}(k+1)\frac{1}{k+1}\\ =\sum_{k=0}^{n}kH_k+\sum_{k=0}^{n}H_k+n+1\\ \therefore (n+1)H_{n+1}=\sum_{k=0}^{n}H_k+n+1\\ \therefore \sum_{k=0}^{n}H_k=(n+1)(H_{n+1}-1) \]
T21
假設 \(n\geq 0\) , 用擾動法計算和式 \(S_n=\sum_{k=0}^{n}(-1)^{n-k}\) , \(T_n=\sum_{k=0}^{n}(-1)^{n-k}k\) 以及 \(U_n=\sum_{k=0}^{n}(-1)^{n-k}k^2\) .