漢諾塔:漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。問:\(n\)層的漢諾塔要移動多少次?
命名並求解:
設\(f(n)\)表示\(n\)層漢諾塔所需的步數。
遞迴的本質思想就是把問題的一部分看做「黑匣子」:
當我們需要移動\(n\)層漢諾塔時,
這裡紅色的代表一片,黑色的就是「黑匣子」,可以代表\(n-1\)片。
那麼我們的移動方案就是:
用\(f(n-1)\)步:
用\(1\)步:
用\(f(n-1)\)步:
一共用了\(2f(n-1)+1\)步。
所以我們可以得到,$$f(n)=2f(n-1)+1$$
又因為\(f(0)=0\)
所以:\[f(n)=
\begin
0 & n=0\\
2f(n-1)+1 & n>0
\end
\]但是我們發現,這種遞推/遞迴式不好,我們至少要用\(o(n)\)的時間來計算它(動態規劃)。
我們希望把它轉化成乙個封閉形式,方便求值。
方法一:
觀察:\(f(0)\)
\(f(1)\)
\(f(2)\)
\(f(3)\)
\(f(4)\)
\(f(5)\)
\(f(6)\)
\(f(7)\)
\(0\)
\(1\)
\(3\)
\(7\)
\(15\)
\(31\)
\(63\)
\(127\)
可以看出有,$$f(n)=2^n-1$$
接下來,證明\(f(n)=2^n-1\):
當\(n=0\)時,\(f(0)=2^0-1=0\)成立。
設\(n=k\)時成立,證\(n=k+1\)時成立:
知,\(f(k+1)=2f(k)+1\)
又,\(f(k)=2^k-1\)
\(\therefore f(k+1)=2\times 2^k-1\)
\(\therefore f(k+1)=2^-1\)
\(\therefore\)當\(n=k+1\)時成立
得證,\(f(n)=2^n-1 \blacksquare\)
方法二:成套方法
後文介紹。
用\(n\)條直線能把乙個平面分為幾部分?命名並求解:
令\(l(n)\)表示用\(n\)條直線能把乙個平面分為的部分數。
有$$l(n)=l(n-1)+n$$
解出封閉形式$$l(n)=\frac$$
可能大家會覺得,剛才介紹的猜的方法不好,萬一猜不到呢qwq
這時候,成套方法閃亮登場了。
我們先來看看平面上的直線問題:
\[l(n)=
\begin
1 & n=0 \\
l(n-1)+n & n>0
\end
\]我們可以研究乙個更通用的形式:
\[r_0=\alpha \\r_n=r_+\beta+\gamma n
\]這個遞推式的值只和\(\alpha,\beta,\gamma\)的取值有關,也就是說:
\[r_n=a(n)\alpha+b(n)\beta+c(n)\gamma
\]其中\(a(n),b(n),c(n)\)是只和\(n\)有關的函式。
令\(r_n=1\)
\(\because r_0=\alpha\)
又\(r_0=1\)
\(\therefore \alpha=1\)
具體數學 直線相交
utf8gbsn 0條直線的空間含有1個區域。一條直線把乙個空間劃分為2個。兩條,可以分為4個區域。那麼n條直線最多可以把乙個平面空間分為多少各區域?針對這個問題,我們任然是採用三步走。簡單公式或者遞推 通項公式 看看簡單情況,第二步是為了分析問題的某種形式的解。可以是遞推公式等。但是怎麼分析這個問...
具體數學 0 前言
具體數學 是2013年人民郵電出版社出版的圖書,是一本在大學中廣泛使用的經典數學教科書 作者是ronald l.grahamdonald e.knuthoren patashnik。具體數學 電腦科學基礎 第2版 第1章遞迴問題1 1.1 河內塔1 1.2 平面上的直線4 1.3 約瑟夫問題7 習題...
具體數學第一 二章總結
找完工後一直在想看什麼書,仔細想想發現工作後可能不是很有時間來看一些很基礎的數學類書籍了,所以就選中了具體數學,其實這本書好早就買了,只是沒時間看罷了。以後會寫一系列總結這本書上知識點以及一些想法的博文,當做備份吧。首先是第一章和第二章。第一章 recurrent problem 這章講了3個非常有...