開頭:今天剛考完試,還有就是下雨就不太想出去了,長春也有點冷,咱們接着上次寫的繼續寫,我也把這個發在其餘博客上了,感受o(╯□╰)o,沒人看啊,哈哈,自嘲結束,今天寫遞歸的下一節平面中的直線(Lines in the Plane)
1.2平面中的直線(Lines in the Plane) 算法
不黑不吹,這本書沒一節的故事也是很吸引人的:一我的用刀在乎大利餡餅上作n次直線切割,能把餡餅切成多少份?或者,較正式地說:由平面中n條直線肯定的最大區域數Ln是多少?瑞士數學家Jacob Steiner在1826年首先予以解決(圖論、算法中的Steiner樹以其名字命名,該問題是NPC的) 函數
套路來了,其實就是老的套路: spa
(1)n=0:L0=1 orm
(2)n=1:L1=2 遞歸
(3)n=2:L2=4 博客
記住從最小的開始,沒有直線的平面具備1個區域;有1條直線的平面具備2個區域;有2條直線的平面有4個區域;但當咱們加入第3條直線,咱們當即發現,無論如何放前2條直線,它至多能切3個老區域; 數學
所以L3=4+3=7是咱們能夠獲得的結果. 擴展
冷靜一下.....仔細想一想....... im
直覺上來看,直線對區域的剖分,表現爲在區域中加上了1條分界線,也正是區域邊界與直線相交造成的一段 總結
若是將直線劃分紅不一樣的段(閉區段和開區段都算),則每一個段剖分1個區域,每剖分1個區域,新增長1個區域。
所以,新增長的區域數應該等於新直線被劃分的段數!!!
每條直線至多相交一次,所以新直線最多與原來的n - 1直線相交n – 1次,造成n個段(注意兩端開放的段)
倒着反推再反推,新直線最多剖分出來n個新的區域!!!
因此咱們能夠獲得
Ln ≤ Ln-1 + n
和上篇的漢諾塔同樣,是時候拿出數學概括法了,易證咱們能達到此公式中的等式,咱們只要使第n條直線不和其餘任何直線平行(所以它和其餘任何直線相交),且使它不經過任何存在的交點(它和其餘任何直線交於不一樣位置),因此遞歸式爲
L0=1;
Ln=Ln-1+n(n>0)
下面來解這個遞歸式:
Ln=Ln-1+n;
=Ln-2+(n-1)+n
=L0+1+2+....+(n-2)+(n-1)+n
=1+Sn
其中Sn=1+2+3+...+(n-1)+n。
這些值也稱爲三角數,由於Sn是n行三角形陣中球狀針孔個數.例如,一般4行陣 * * * *
* * *
* *
*
有S4=10個針孔
小學其實咱們就會算Sn的和,因此Ln=n*(n+1)/2+1(n>=0)
要進行嚴格的數學概括證實,關鍵概括步是Ln=Ln-1+n=1/2n(n+1)+1
關於書上講的閉形式:對一個量f (n)的表達式而言,若是可以最多用固定次數(這次數獨立於n )的「經常使用」標準運算來算出結果,則稱其爲封閉形式的。So,
1、遞歸方程不是封閉形式,由於求解次數依賴於n。
2、咱們獲得的Tn和Ln的結果是封閉形式的:
Tn :1次exp,1次—
Ln :2次+,1次× ,1次÷
3、1 + 2 + … + n之類的和不是封閉的(用…省略了中間的加法計算,其次數與n有關)
4、n(n+1)/2等表達式是封閉的( 1次+,1次×,1次÷)
5、n!是否是呢?
關於n!等封閉形式的例外情形:
簡單閉形式的總數是有限的,而一些經常使用、重要的遞歸方程並無簡單閉形式
爲了更好地表達數學運算結果,咱們就增長了一些「經常使用」的標準運算,以擴展封閉形式的範圍。例如階乘n! (儘管它的等價形式1·2·…·n並非封閉的),也就是說計算階乘被視爲1次運算。
平面中的直線—變形
下面考慮Lines in Plane問題的變形:假設用彎曲線代替直線,並且每條彎曲線都含有一個「銳角的鋸齒形轉角」,那麼平面中n條彎曲線圍成的區域最多有多少呢?
先來觀察一下n = 1和n = 2的情形:
容易看出:每加入1條彎曲線,就像加入了2條直線,只是這「兩條」直線在交點處沒有延伸,所以致使了區域2、3、4的合併(3變1):
每加入1條新彎曲線,在新增長區域的數量中都要至少減去2。同時,若是把拐點地放到一個開區域,使得隱去的直線不會與原來的直線相交,咱們只會減小2個區域
也就是說,新彎曲線增長的區域數爲2n – 2 (先像2條直線同樣考慮區域的剖分,獲得2n,再考慮區域的合併,獲得-2)
Zn = Zn-1 + 2n - 2
或者,先統一地像2n條直線同樣考慮區域的剖分,獲得L2n;再考慮區域的合併,獲得-2n,因此
Zn = L2n – 2n
= 2n(2n + 1) / 2 + 1 – 2n
= 2n2 – n + 1
對Ln和Zn的封閉形式進行比較,咱們發現對於大的n,有下面的關係,
所以,彎曲線狀況獲得的區域數目大概是直線狀況的4倍。(第9章會討論如何分析整函數的近似狀態,符號‘~’的定義可見9.1節,其實學太高數的應該知道這什麼。。。。)
總結:其實這小節不是很難的,下一節就有點難了,我但願我能堅持寫下去,也能堅持把書看完,雖然很吃力,但我更想看高老頭的TAOCP,應該算是神做了,號稱計算機中的聖經啊,昨天母親節,謝謝個人母親。。你們也應該多去關心一下家人,加油,我但願我每星期都能寫那麼一點點。。。