從樓梯模型談起
柳柏濂
一. 上樓梯引發的聯想
我住在六樓, 從地上到我的房子恰好是 104級。 每天上下班, 在單調的上上落落之中, 自我尋找一點樂趣。 當我回家拾級而上, 時而 走一級, 時而跨兩級, 甚至跳三級。 走的日子 長了, 便聯想出一個有趣的問題: 若每步至多 走三級, 從下而上可走出多少條不同的路?
先從一個簡單的例子觀察, 以了解我們 問題的內容。
若樓梯僅有三級, 因每步至多跨三級, 可 列舉出不同的路共有 4 條。(如圖 1)
圖 1
回到我們的問題, 設走完 104 級的一條 樓梯, 有 j
1
個 1級步, j2
個 2級步, j3
個 3級步, 即 j
1
+ 2j2
+ 3j3
= 104。如果把 j
1
個 1 級步看作 j1
個 1, j2
個 2 級步看作 j2
個 2, j3
個 3 級步看作 j3
個 3, 易見, 任一條上樓的路, 一一對應於1, 1, · · · , 1
| {z }
j
1
個2, 2, · · · , 2
| {z }
j
2
個3, 3, · · · , 3
| {z }
j
3
個 的一個排列。 例如:1 2 2 1 3 2 3 1 2 對應於下面的一條上樓的路。 我們把它垂直 投影到地面上 (如圖 2)
... .
.. .. . ...
. .. .. . ...
. .. .. . ...
. .. .. . ...
. .. .. . ...
. .. .. . ...
. .. .. . ...
. .. .. . ...
. .. .. . ... .
.. .. .. . . . . .. . . . . . . . . . . .. . . . .. . ..
.. ...
圖 2
由排列組合知識易知, 這樣的路數是 (j
1
+ j2
+ j3
)!j
1
!j2
!j3
!考慮到 j
1
+ 2j2
+ 3j3
= 104。 本文開頭問 題的答案是X
j
1+2j
2+3j
3=104
(j
1
+ j2
+ j3
)!j
1
!j2
!j3
!77
上述
P
是對於所有滿足 j1
+ 2j2
+ 3j3
= 104 的非負整數解 (j1
, j2
, j3
)求和。自然, 若樓梯僅有 3 級, 則我們的解是
X
j
1+2j
2+3j
3=3
(j
1
+ j2
+ j3
)!j
1
!j2
!j3
! (1) 因 j1
+ 2j2
+ 3j3
= 3 有 3 組非負整數解 (3,0,0), (1,1,0), (0,0,1)。 故 (1) 式為3!
3!0!0!+(1 + 1)!
1!1!0! + 1!
0!0!1! = 1 + 2 + 1 = 4 這與窮舉的結果是一致的。
把我們的問題更一般化。 若允許每一步 不超過 k 級, (k 為正整數), 走一條有 n 級 的樓梯, 一共有多少條不同的路?
設所求的路數是 f (n)。 我們已經求出 f(3) = 4。 仿照上面的思維, 不難得出
f(n) =
X
(j
1,j
2,···,j
k)
(j
1
+ j2
+ · · · + jk
)!j
1
!j2
! · · · jk
! , (2) 其中(j1
, j2
,· · · , jk
) 是方程 j1
+ 2j2
+ · · ·+kj
k
= n 的所有非負整數解。二. 來一個“倒行逆施”
上一節, 我們用組合方法, 把樓梯問題 的一般解 (2) 求出來。 現在, 來一個“倒行逆 施”, 從樓頂的最後幾級倒過來考慮, 用遞歸 的方法, 寫出 f (n) 的一個代數模型。
為了方便說話, 我們把 n 級樓梯由下至 上按順序 1, 2, . . . , n 編號。 現在, 從上樓路 線的最後一步考慮問題。
最後一步只能是 1 級步, 2 級步, . . . , k 級步, 共 k 種可能。
若最後一步是 1 級步, 則從第 1 級到第 n− 1 級共有 f(n − 1) 條路。
若最後一步是 2 級步, 則從第 1 級到第 n− 2 級共有 f(n − 2) 條路。
· · ·
若最後一級是 k 級步, 則從第 1 級到第 n− k 級共有 f(n − k) 條路。
於是
f(n)=f (n−1)+f(n−2)+· · ·+f(n−k)
=
X k
i=1
f(n − i) (3)
這是一個關於 f (n) 的遞歸式。
(3) 式看起來是一個很漂亮而整齊的式 子。 讓我們考慮 k = 2 的情形, 這時 (3) 變 成
f(n) = f (n − 1) + f(n − 2) (4) 易見, f (n) 的初始值
f(1) = 1, f (2) = 2 (5) 從初始值開始, 利用關係 (4) 得到 f (n) 的值如下
n 1 2 3 4 5 6 7 8 9 · · · f(n) 1 2 3 5 8 13 21 34 55 · · · 易見, f(n) 是一個菲波那契 (Fi- bonacci) 數列。 事實上, 從 (4) 和 (5), 用 特徵方程方法可解得
f(n) = 1
√5
h
1+√ 5 2n+1
−
1−√ 5 2
n+1 i
(6)
注意到 (2) 式, 從組合模型我們得到 f(n) =
X
j
1+2j
2=n
(j
1
+ j2
)!j
1
!j2
!=
[
n2]
X
j
2=0
(n − 2j
2
+ j2
)!(n − 2j
2
)!j2
!=
[
n2]
X
α=0
(n − α)!
(n − 2α)!α!
=
[
n2]
X
α=0
n− α α
!
(7) (7) 正是菲波那契數列的組合表達式。 比較 (6) 和 (7), 還得到一個有趣的恆等式
[
n2]
X
α=0
n− α α
!
= 1
√5
h
1+√ 5 2n+1
−
1−√ 5 2
n+1 i
(6) 和 (7) 都是我們熟知的結果。 但是, 這一 比較, 令我們躍躍欲試, 去探索一些鮮為人知 的結論。 例如, 令 k=3, 由 (3) 可得
f(n) = f (n−1)+f(n−2)+f(n−3) f(1) = 1, f (2) = 2, f (3) = 4 (8) 解 (8) 可不像 (4) 那樣得心應手。 如果用特 徵方程法, 我們需要解一個 t
3
= t2
+ t + 1 的特徵方程, 這可不是好對付的呵! 在這山窮 水盡之際, (2) 式給我們一條通向“又一村”的 途徑。 於是, 我們可得 (8) 的解f(n)=
X
j
1+2j
2+3j
3=n
(j
1
+j2
+j3
)!j
1
!j2
!j3
!=
[
n3]
X
j
3=0 [
n−3j32]
X
j
2=0
(n−2j
2
−3j3
+j2
+j3
)!(n−2j
2
−3j3
)!j2
!j3
!=
[
n3]
X
α=0 [
n−3α2]
X
β=0
(n−β−2α)!
(n − 2β − 3α)!β!α!
當我們考慮 k = 2, k = 3 時, 分別 得到了 (4) 和 (8)。 然而, 對於一般的 k, 特 別是較大的 k, 要完整地寫出遞歸式 (3), 必 須完成一系列初值 f (1), f (2), . . . , f (k)。 那 麼, 我們不得不又要回到 (2) 的組合手法了。
三. 得寸進尺
數學就是這樣奧妙, 它往往“不擇手段”
採用一些超乎常理的方法, 以達到它的目的。
超常的方法需要我們有超常的思維, 恐怕這 就是我們常說的數學靈感吧!
我們解決問題不是常要求“把複雜化為 簡單”嗎 ? 數學往往反其道而行之。 在證明 三角恆等式中, 有時需要把 1 變成 cos
2
α+ sin2
α 呢!上一節, 我們把一個樓梯模型表達成代 數遞歸式, 使數學的味道更濃了。 可是, 從 (8) 的求解, 我們得到啟示: 何不得寸進尺, 把一般常係數齊次差分方程退回到一個樓梯 模型去求解。
一般地, 我們考慮常係數齊次差分方程 f(n) = α
1
f(n − 1) + α2
f(n − 2) + · · ·+α
p
f(n − p)f(0) = C
0
, f(1) = C1
, . . . , f(p − 1)= C
p−1
(9)α
i
(i = 1, 2, . . . , p) 及 Ci
(i = 0, 1, . . . , p − 1) 均是常數。 眾所周知, 要寫出解 f (n) 的 顯式可不是一件容易的事。(9) 和 (3) 的不同 是, 它的 f (n − i) 的係數不一定是1。 於是, 我們構造一個經過改良的樓梯模型。我們的模型是一個賦權有向圖 G: 設 A
i
(i = 0, 1, 2, . . .) 是數軸上座標為 i 的 點, 對任意的 Ai
(i = 0, 1, 2, . . .), Ai
與A
j
(j = i + 1, i + 2, . . . , i + p) 有邊 −−→Ai
Aj
(從 Ai
指向 Aj
的有向邊) 相連, −−→Ai
Aj
的權 為 αj−i
。α p
α 3
α p−1
α 2 α 2 α 1 α 1
A 0 A 1 A 2 A 3 A p A n
G 設 n 是任一正整數, ℓ 是 G 中由 A
0
到 An
的任一條有向路徑。 ℓ 中各有下邊的權之 積定義為 ℓ 的權。 以 Fn
表示 G 中由 A0
到 An
的所有路徑的權之和, 並令 F0
= 1。 例 如, 若 ℓ 取 A0
→ A1
→ A3
→ Ap
→ An
(p >n 2
), 則 ℓ 的權是 α1
, α2
, αp−3
, αn−p
我 們試對 n = 3, p = 3, 計算 F3
。 因為由 A0
到 A3
有 4條路徑, 它們是ℓ
1
: A0
→ A1
→ A2
→ A3
, 權是 α3 1
ℓ2
: A0
→ A1
→ A3
權是 α1
α2
ℓ3
: A0
→ A2
→ A3
權是 α1
α2
ℓ4
: A0
→ A3
權是 α3
於是, 由定義 F
3
= α3 1
+ 2α1
α2
+ α3
。 對於圖 G 的 Fn
的計算, 我們有下列引 理F
n
=X
j
1+···+pj
p=n
M
N · α
j 1
1· · · αj p
p, 其中 M = (j1
+ · · · + jp
)!, N = j1
! · · · jp
! n ≥ 0 (10) 其中, j1
, j2
, . . . , jp
是非負整數, 若 αt
= jt
= 0, 則令 αj t
t = 1(1 ≤ t ≤ p)。證明: 設 ℓ 是 G 中由 A
0
到 An
的任一條有向路徑, 且在 ℓ 中有 jt
(t = 1, 2, . . . , p) 條權為 αt
的有向邊, 則 ℓ 的 權為 αj 1
1αj 2
2· · · αj p
p, 且j
1
+ 2j2
+ . . . + pjp
= n (11) 又因對不定方程 (11) 的任一組非負整數解 j1
, j2
, . . . , jp
, G 中有(j
1+j j
2+...+j
p)!
1
!j
2!...j
p!
條不同 的由 A0
到 An
的有向路徑, 故 (10) 式成 立。 證畢。現在, 可以用改良了的樓梯模型 G, 得 到差分方程 (9) 的一般解。 我們有
定理: 差分方程 (9) 的一般解為 f(n) =
p−1 X
k=0
p−1 X
i=k
C
i
αp−i+k
Fn−p−k
, n≥ p (12) 其中, 當n − p − k < 0時, Fn−p−k
= 0。證明: 以 A
i
表示數軸上坐標為 i(i = 0, 1, 2, . . .) 的點, G′
是以 {A0
, A1
, A2
, . . .} 為頂點的一個賦權有向圖: A0
與 Ai
(i = 1, 2, . . . , p) 之間有邊 −−→A0
Ai
, 其方向由 A0
指向 A
i
。 −−→A0
Ai
(i = 1, 2, . . . , p − 1) 的權為 C
i
, −−→A0
Ap
的權為 C0
αp
。 對任一自然數 j, 當 j ≤ p − 1 時, Aj
與 As
(s = p, p + 1, . . . , p + j) 之間有邊 −−→Aj
As
; 當 j > p − 1 時, Aj
與 As
(s = j + 1, j + 2, . . . , j + p) 之間有邊 −−→Aj
As
。 每一有向邊 −−→Aj
As
的權為 αs−j
, 其方向由 Aj
指向 As
。(仿照圖 G, 讀 者可自行描繪出 G′
)。設 ℓ 是 G
′
中由 A0
到 An
的任一條有 向路徑, ℓ 中各條有向邊的權之積定義為 ℓ 的 權。 以 bn
表示 G′
中由 A0
到 An
的所有不 同路徑之權的和。 並令 b0
= c0
。 由 G′
的構 造, 易見 bi
= ci
(i = 1, 2, . . . , p − 1)b
p
=X p
i=1
α
i
cp−i
=X p
i=1
α
i
bp−i
當 n > p 時, 在由 A
0
到 An
的一條有向路 徑中, 最後一條邊必帶權 αj
(1 ≤ j ≤ p)。 於 是b
n
=X p
j=1
α
j
bn−j
從而有
b
n
= α1
bn−1
+ α1
bn−2
+ . . . + αp
bn−p
, n≥ pb
0
= c0
, b1
= c1
, . . . , bp−1
= Cp−1
(13) 比較 (9) 和 (13), 得 f (n) = bn
(n = 0, 1, 2, . . .)。現在求 b
n
, 在 A0
到 An
的任一條有向 路徑中, 其第一邊只能是 −−→A0
Ai
(1 ≤ i ≤ p)。我們把第一邊是 −−→A
0
Ap
的路徑稱為 0類路徑,把第一邊是 −−→A
0
Ai
(1 ≤ i ≤ p − 1) 的路徑稱 為第 i 類路徑。 易知, 第 i(0 ≤ i ≤ p − 1) 類路徑的權之和為 Ci P i k=0
αp−i+k
Fn−p−k
。 於是b
n
=p−1 X
i=0
C
i
X i
k=0
α
p−i+k
Fn−p−k
=
p−1 X
k=0
p−1 X
i=k
C
i
αp−i+k
Fn−p−k
。 由 f (n) = bn
, 即得 (12)。 證畢。誠然, (9) 式的解我們也以用生成函數 的方法得到。 (見參考文獻 [3])。 然而, 這裡, 用一個中學生也能接受的方法, 我們得到了 常係數線性齊次差分方程的一般解的顯式。
更進一步, 如果我們把模型稍加改進, 亦能解 決非齊次的情形, 有興趣的讀者可參看文獻 [2]。