蘇珊很為難.她步行去學校,路上老是遇到斯廷基.斯廷基:"嘿嘿,蘇珊,我可以陪你一起走嗎?" 蘇珊:"不!請走開."
蘇珊心想:我有辦法了.每天早上我走不同的路線去學校.這樣斯廷基就不知道在哪兒找到我了.這張地圖表示蘇珊的住所和學校之間的所有街道.蘇珊去學校時,走路的方向總是朝南或朝東.她總共有多少條路線呢?
蘇珊:"我真想知道有多少條路線可走.讓我想一想.要算出多少條路線看來並不簡單.嗯.啊哈!一點不難,簡單的很!"蘇珊想到了什麼好主意?
她的推理如下:蘇珊:"在我家這個角點上寫一個1,因為我只能從這一點出發.然後在遇刺相隔一個街區的兩個角點上各寫一個1,因為到那裡只有一條途徑.現在,我在這個角點上寫上2,因為到達那裡可以有兩條途徑.蘇珊發現2是1加1之和,她忽然領悟:若到某一個僅有一條途徑,則該角點上的數字為前一個角點上的數字;若有兩條途徑,則為前兩個角點上的數字之和.
蘇珊:"瞧,又有四個角點標上了數字,我馬上把其他角點也標上數字."請你替蘇珊把剩下的角點標上數字,並且告訴她步行到學校共有多少條不同的路線.
蘇珊的家H
學校 G
剩下的5個點,自上而下,從左至右分別標以1,4,9,4,13.最後一點上的13表示蘇珊去學校共有十三條最短路徑.
蘇珊所發現的是一種快速而簡單的演算法,用來計算從她家到學校的最短路徑共有多少條.要是她把這些路徑一條一條地畫出來,然後再計數,這樣肯定麻煩,還容易出錯.如果街道的數目很多,那麼這種方法根本就行不通.你不妨把這十三條路線都畫出來,這樣你就更能體會到蘇珊的演算法是多麼地有效了.
你對這種演算法是否已經理解,可以再畫一些不同的街道網路,然後用這種演算法來確定從任意點A到另一任意點B的最短路線共有多少條.網路可以是矩形網格,三角形網格,平行四邊形網格和蜂窩狀的正六邊形網格.也可以用其他方法(例如組合公式)求解,但這種方法十分複雜,需要很高的技巧.
在國際象棋棋盤上,"車"從棋盤的一角到對角線上另一角的最短路徑共有多少條?就像蘇珊給街道交點標上數字一樣,把棋盤上所有格子也都填上數字,於是問題就迎刃而解了."車"只能沿著右上方向朝另一個角的目標移動,便可以求出共有多少條最短路徑.:
| 1 |
8 |
36 |
120 |
330 |
792 |
1716 |
3432 |
| 1 |
7 |
28 |
84 |
210 |
462 |
924 |
1716 |
| 1 |
6 |
21 |
56 |
126 |
252 |
462 |
792 |
| 1 |
5 |
15 |
35 |
70 |
126 |
210 |
330 |
| 1 |
4 |
10 |
20 |
35 |
56 |
84 |
120 |
| 1 |
3 |
6 |
10 |
15 |
21 |
28 |
36 |
| 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
| 車 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
把整個棋盤正確標號,根據所標的數字,一眼就能看出在棋盤上從一個角出發到任意一角,有多少條最短路線.右上方的數字是3432,所以"車"從一角到對角線的另一角的最短路徑共有3432條.
讓我們把棋盤沿著左上至右下的對角線一截為二,使其成為如所示的陣列.此三角形上的數字與著名的怕斯卡三角形(我國叫做楊輝三角形)的數字是相同的,當然,計算街道路徑條數的演算法,恰恰就是構造怕斯卡三角形所依據的過程.這種同構現象使得怕斯卡三角形成為無數有趣特性的不竭的源泉.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
...........
利用怕斯卡三角形立即可以求出二項式展開的係數,即求(a+b)的任意次冪,同樣也可以用來解出初等機率論中的許多問題.請注意,中自頂部至底部,從邊沿一格來說是1,隨著向中間移動,數字逐漸增加.也許你見過根據怕斯卡三角形所製成的一種裝置:在一快傾斜的板上,成百個小球滾過木釘進入各格的底部.全部小球呈現出一條鐘形的二項式分布曲線,因為到達每個底部孔位的最短路徑的條數就是二項式展開的係數.
顯然,蘇珊的演算法同樣適用於由矩陣格子組成的三維結構.設有一個邊長為3的立方體,分成27個立方體單元,把它看成棋盤,處於某一個角格上的"車"可以向三個座標上的任何位置作直線移動,試問"車"到空間對角線的另一個角格有多少條最短路徑?