生成函數與投信問題的解
文耀光 · 潘建強
1. 引言
「如果將 8 封不同的信件隨機地投入 4 個不相同的郵筒中, 而每個郵筒都至少要投入一封, 究竟有多少種不同的投法呢?」
這是一個頗有趣的組合問題, 不妨稱之為 「投信問題」。 有關它的解法有很多種, 本文會介 紹如何應用 「生成函數」 (Generating Functions) 的方法, 去尋求此問題的解。
2. 生成函數的定義
定義: 設 {a0, a1, a2, . . . , ar, . . .} 為一數列。
以下的無窮級數定義為 {a0, a1, a2, . . . , ar, . . .} 的 「生成函數」:
f(z) = a0 + a1z+ a2z2 + · · · + arzr+ · · · .
例一: 對數列 {30,31,32, . . . ,3r, . . .} 而言, 其生成函數是:
f(z) = 30+ 31z+ 32z2+ · · · + 3rzr+ · · · . 若以閉式 (closed form) 表示, f (z) = 1−3z1 。
例二: 設 n ∈ Z+。 由於 (1 + x)n= C0n+ C1nx+ C2nx2+ · · · + Cnnxn, 所以 {C0n, C1n, C2n, . . . , Crn,0, 0, . . .} 的生成函數是 (1 + x)n。
例三: 設 n ∈ Z+。
當 r > 0 時, 定義
−nr
= (−n)(−n−1)(−n−2)···(−n−r+1)
r! 。
當 r = 0 時, 定義
−n0
= 1。
由於 (1 + x)−n = 1 + (−n)x + (−n)(−n − 1)x2!2 + · · · =
P
∞r=0 −nr
xr59
60
數學傳播28
卷2
期 民93
年6
月 所以n
−n0
,−n1
,
−n2
, . . .
o
的生成函數是 (1 + x)−n。 定義: 設 {a0, a1, a2, . . . , ar, . . .} 為一數列。以下的無窮級數定義為 {a0, a1, a2, . . . , ar, . . .} 的 「指數生成函數」:
f(z) = a0 + a1z+a2z2
2! +a3z3
3! · · · +arzr
r! + · · · . 例四: 設 n ∈ Z+。
由於 (1 + x)n= C0n+ C1nx+ C2nx2+ · · · + Cnnxn
= P0n+ P1nx+ P2nx2
2! + · · · + Pnnxn n!
所以 {P0n, P1n, P2n, . . . , Prn,0, 0, . . .} 的指數生成函數是 (1 + x)n。
3. 應用例子
本節是一個有關指數生成函數的應用例子。 相對於列舉法而言, 我們可以看到應用生成函 數去求解, 是一個十分簡便而有效的解題方法。
例五: 若在英文字 ENGINE 中任意選取 4 個字母作排列, 有多少種不同的方式?
解: (列舉法)
選取的字母 排列數目 選取的字母 排列數目
{E,E,N,N} 2!2!4! {E,G,N,N} 4!2!
{E,E,G,N} 4!2! {E,I,N,N} 4!2!
{E,E,I,N} 4!2! {G,I,N,N} 4!2!
{E,E,G,I} 4!2! {E,I,G,N} 4!
因此有 4!
2!2!+ 4!2!× 6 + 4! = 102 種的排列方式。
解: (生成函數方法) 先考慮每個字母可能被選中的個數。 E 和 N 的可能數目都是 0, 1 或 2, 而 G 和 I 的可能數目都是 0或1。 因此, 對 E 和 N 而言, 它們的指數生成函數是 (1+x+x2!2), 而對 G 和 I 而言, 它們的指數生成函數是 (1 + x)。 現在考慮以下的函數:
f(x) =
E
z }| {
1 + x +x2 2!
!
N
z }| {
1 + x + x2 2!
!
Gz }| {
(1 + x)
I
z }| {
(1 + x) .
生成函數與投信問題的解
61
若我們在括號 E, N, G 和 I 中分別選取 x2!2, x2!2, 1 及 1, 則有:
x2 2! × x2
2! × 1 × 1 = x4
2!2! = 4!
2!2!
x4 4!
!
此時 x4
4! 的係數是 4!
2!2!, 正好等於在 ENGINE 中選取 2 個 E 及 2 個 N, 而沒有選取 G 或 I 的 情況。 由此推論, 原問題的解即是 f (x) 展開後 x4!4 之係數。 沿此思路, 容易求得其解是 102。
註: 有時可以利用 ex 或 e−x 來表示一些指數生成函數的閉式。 例如:
ex = 1 + x +x2 2! + · · · 或
e−x = 1 − x + x2 2! − · · ·
4. 投信問題的解
現在讓我們展示如何應用生成函數的方法, 去尋求投信問題的解。
設 A, B, C 和 D 分別代表該 4 個郵筒。 由於每個郵筒所投入的信件數目必大於 0, 仿照 上節的思路方式, 可考慮其對應的指數生成函數 x + x2!2 +x3!3 + · · ·。 然後考慮以下的函數:
f(x) =
A
z }| {
x+x2 2!+x3
3!+ · · ·
!
B
z }| {
x+x2 2!+x3
3!+ · · ·
!
C
z }| {
x+x2 2!+x3
3!+ · · ·
!
D
z }| {
x+x2 2!+x3
3!+ · · ·
!
. 若投入郵筒 A, B, C, D 的信件數目分別是 1, 2, 2, 3, 則在 A 式中選取 x, 在 B 和 C 式中都選取 x2
2!, 在 D 式中選取 x3!3, 則 x8!8 的係數正好反映此種情況之投法數目。 即:
x× x2 2! × x2
2! ×x3
3! = 8!
2!2!3!
!
x8 8!!
. 當然, 其他的可能情況, 亦可以用類似的方法處理。
為了方便計算, 我們可以把 f (x) 記成:
f(x) = (ex− 1)4
= e4x − 4e3x+ 6e2x − 4ex+ 1,
此時, 容易獲得 x8!8 的係數為 48− 4(3)8+ 6(2)8− 4 = 40824。 換言之, 不同的投信方式共有 40824 種。
62
數學傳播28
卷2
期 民93
年6
月5. 總結
生成函數方法是一個解決排列和組合問題的有效工具, 而且可以適應同類型問題的各種變 化情況。 例如, 若要投 8 封不同的信入 4 個郵筒, 要求在第 1 和第 2 個郵筒中至少要投入 1 封, 在 第 3 個郵筒中最多投入 5 封, 而在第 4 個郵筒中要投入偶數封, 有多少種不同的投法呢? 1 若採 用生成函數的方法求解, 會很容易算出結果, 比使用列舉法簡單得多, 有興趣的讀者不妨動手一 試。
參考書目
1. 黃振杰 (2000)。 「離散數學」。 廈門: 廈門大學出版社。
2. Grimaldi, Ralph P. (1994). Discrete and Combinatorial Mathematics: An Applied Introduction (3rd edition). Addison-Wesley Press.
—本文作者任教於香港教育學院數學系—
1
提示 : 考慮以下的展開式 (x +
x2!2+
x3!3+ · · · +
x8!8)
2× (1 + x +
x2
2!