阿 凡提巧拆金環與完備分拆
柳柏濂
一 . 阿凡提的故事
阿凡提是維吾爾族傳說中的聰明人, 在 民間中流傳著不少關於他機靈智巧的故事。
一次, 阿凡提給巴依打短工, 商定的時 間是十天。 三天以後, 貪婪的巴依想出一個壞 點子賴賬。 他拿出一串光燦燦的金鏈, 當著大 家的面對阿凡提打賭道:“這是 7 個環連成的 金鏈, 如果從今天起, 你能夠第一天取1個環, 第二天取 2個環, 第三天取3個環,· · ·, 第七天 取 7 個環, 而你只准許砍斷一個環。 那麼, 這 串金鏈就歸你所有。 要是你辦不到的話, 別說 金鏈, 甚至工錢也休想拿走, 十天的工作也算 是白幹了。”
阿凡提默然應允。 他把金鏈的第 3 個環 砍斷, 七個環的鏈就被分成1個,2個,4個環的 小鏈。
.. .. . .. .. . .. .. .. . .. .. .. . .. .. .. .. . .. . .. . . .. . . .. . . . . . . . . . . . . . . . . . . . . . .. . . .. . . .. .. . .. . .. .. .. .. . .. . .. .. .. . .. .. .. .. . .. . .. .. .. .
...
. .. . .. .. .. . .. .. .. .. . . .. . . .. .. .. . .. . .. . .. . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . .. . . .. . .. .. . .. .. .. .. .. .. .. .. .. . .. .. . .. .. .. . .. .. .
...
... . . . . . . . .. . . . . . .. . .. . . .. .. . .. . .. .. .. .. .. .. .. .. . .. .. .. . .. .. . .. .. .. . ...
. .. . .. .. .. . .. .. .. .. . . .. . . .. .. .. . .. . .. . .. . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . .. . . .. . .. .. . .. .. .. .. .. .. .. .. .. . .. .. . .. .. .. . ..
...
第一天, 阿凡提拿走 1個環。
第二天, 他把 1個環放回去拿走 2個環。
第三天, 他把 1個與 2個環一起拿走。
第四天, 放回 3個環拿走 4個環。
第五天, 把 1個與 4個環一起拿走。
第六天, 放回 1 個換走 2 個, 即共拿走 6 個環。
第七天, 把整條金鏈拿走。
愚蠢的巴依捶胸頓足地哀嘆:“跟有學問 的人是不能隨便開玩笑的。”
二 . 並非用在打賭上
誠然, 我們講的僅僅是一個杜撰的故事。
巴依再愚蠢, 也不至於到第七天才頓悟到自 己已經輸定了。
文獻中沒有記載過阿凡提是否學過代數 或組合數學。 然而, 他確實用到了“數分拆”的 道理。 儘管, 今後我們無須企望再遇見第二個 如此愚蠢的巴依, 然而, 深入思考和探索故事 中的數學, 也決非只能用在打賭上。
我們考察下面的問題, 要解決它仍然需 要阿凡提式的機智。
73
問題: 有一堆重量為整數克的零件, 其 重量範圍是 1 克至 n 克均齊備。 現要用天平 在一邊放砝碼的方法秤量它們, 如何選取一 組砝碼, 使每個零件可用唯一的一種方法秤 出來。
問題: 找一組電阻, 使它可用唯一的方 法配成 1到 n 個單位齊備的電阻箱。
這 類 問 題, 在 數 學 上稱 為 完 備分 拆 (perfect partition) 問題。
讓我們還是從阿凡提的故事, 領悟一下 什麼是完備分拆。
眾所周知,7 這個正整數可以寫成若干個 正整數之和。 例如,
7 = 3 + 4 = 1 + 2 + 4 = 1 + 1 + 2 + 3
= 1 + 1 + 1 + 1 + 1 + 1 + 1,
這裡的每一個和式 (尚未全部列出), 稱為7的 一個分拆 (partition)。 如果和式中有 r 項, 稱為 r 分拆。 例如上述從左至右的式子可分 別稱為 7 的 1 分拆,2 分拆,3 分拆,4 分拆, 7 分 拆。 在分拆中, 我們並不考慮各部分的次序。
因此, 上述各分拆可分別記為 3, 4;
1, 2, 4; 1
2
,2, 3; 17
。 我們考察 1,2,4, 它正是 阿凡提的傑作。 它的特別之處在於: 僅用 3部 分 1, 2, 4 可以唯一地表示一切不大於 7 的正 整數的分拆 (當然, 故事中沒有要求唯一性)。易見
6 = 2 + 4, 5 = 1 + 4, 4 = 4, 3 = 1 + 2, 2 = 2, 1 = 1, 分拆 1, 2, 4 稱為 7 的完備分拆。
作為嚴格的數學定義, 我們有
定義(分拆和完備分拆): 把正整數 n 表 成若干個正整數之和, 叫做 n 的分拆。 分拆 中所分成的正整數的個數稱為分拆的部分數。
若一個分拆包含不大於 n 的所有正整數的一 個唯一分拆, 則這個分拆稱為 n 的完備分拆。
容易知道: 一個正整數 n 的完備分拆 是必定存在的。 誰都能夠立即看出來的一個 完備分拆是 1
n
, 稱之為平凡完備分拆。 那麼, 自然而來的問題是: 我們能否把 n 的所有完 備分拆都找出來呢?回答是肯定的。
三 . 一一對應找出完備分拆
我們先注意到一個明顯的事實: 一個完 備分拆必須含有一個部分是 1, 否則, 它就不 能包含 1這個正整數的分拆。
設分拆中有 (q
1
− 1) 個 1(q1
> 1), 則所有小於 q1
的數都必可唯一地 (用 1) 表 成分拆。 但是, 要把數 q1
表成分拆, 必須 有另一部分 q1
。 若分拆的下一部分是 q1 q
2−1
, 則所有小於 q1
q2
的數都可用 1q
1−1
q1 q
2−1
唯一地表成分拆, 但數 q1
q2
表成分拆, 必 須要增加一部分 q1
q2
。 若分拆的下一部分是 (q1
q2
)q
3−1
(q3
> 1), 則所有小於 q1
q2
q3
的 數可用 1q
1−1
q1 q
2−1
(q1
q2
)q
3−1
唯一地表成分 拆。 但要把數 q1
q2
q3
表成分拆, 必須增加另 一部分 q1
q2
q3
。如此繼續, 得
1
q
1−1
q1 q
2−1
(q1
q2
)q
3−1
(q1
q2
q3
)q
4−1
· · · (q1
q2
· · ·qk−1
)q
k−1
, (1)它能把 [1, n] 中的所有整數唯一地表成分拆。
這裡,
n = 1 · (q
1
−1) + q1
(q2
−1)+q
1
q2
(q3
−1) + q1
q2
q3
(q4
−1) +· · ·+ q
1
q2
· · ·qk−1
(qk
−1)= q
1
q2
· · ·qk
−1(q
i
>1, i = 1, 2, · · · , k) 於是n+ 1 = q
1
q2
· · ·qk
。 (2) 上述分析表明: n 的每一個形如 (1) 式的完備分拆一一對應於 n + 1 的一個形 如 (2) 式的有序分解。 (請注意:(2) 式的 q1
, q2
, · · · qk
是有序的)。 於是, 要找出 n 的 所有完備分拆 (1), 只須做出 n + 1 的所有 有序分解 (2)。歸納上述結論, 得到
定理1(Rirdon [1]): 正整數 n 的完備 分拆的個數與 (n + 1) 的無單位 1 的正因子 的有序分解的個數相等。 若
n+ 1 = q
1
q2
· · ·qk
, qi
>1, i = 1, 2, · · · , k,則 n 的完備分拆是 1
q
1−1
q1 q
2−1
(q1
q2
)q
3−1
· · ·(q
1
q2
· · ·qk−1
)q
k−1
(或簡記為 n ∼ 1q
1−1
q1 q
2−1
(q1
q2
)q
3−1
· · ·(q1
q2
· · ·qk−1
)q
k−1
)。例如, 求 7 的所有完備分拆。
解: 先把 7 + 1 = 8 作有序分解, 得 8 ; 4 × 2 ; 2 × 4 ; 2 × 2 × 2.
由定理 1, 對應的完備分拆是
1
8−1
= 17
; 13
,4 ; 1, 23
; 1, 2, 4 由定理 1, 我們可以看到, 只要作出了 n 的一個有序分解, 我們無須做出完備分拆, 就 能知道它的部分數 Q, 因為Q = (q
1
−1)+(q2
−1)+· · ·+(qk
−1)= (q
1
+ q2
+ · · · + qk
) − k (3) 運用 (3) 式, 我們可以直接對上述 7 的 完備分拆作出驗證。四 . 數學比阿凡提更聰明
阿凡提不愧為聰明人。 他的機靈之處不 僅在於找出了 7的完備分拆, 而且按照巴依只 准斷開一個環的限制, 準確地選擇了7的一個 部分數最小的完備分拆 1,2,4。
對於不大的數 7, 阿凡提當然能憑他的 機智的直觀。 然而, 對於任意一個 n, 如何能 夠做到, 無須把所有完備分拆羅列出來, 就直 接找出具有最小的部分的一個呢?
這必須依靠比阿凡提更聰明的數學了。
注意到 (3) 式, 用數學的語言表達, 我 們的問題是: 在約束條件 q
1
q2
· · ·qk
= n + 1, qi
≥2 下, 求目標函數 (3) 的最小值。乍看起來, 這似乎是一個熟知的極值問 題: 在 k 個正數積為定值時, 求它們和的極小 值。 然而, 注意到目標函數 Q 右邊的 k 仍是 一個變量, 我們就不能用慣常的手法去求解。
為此, 先證明下列
引理1: 設 m = q
1
q2
· · ·ql
, qi
≥ 2, i= 1, 2, · · · l 且 σ(m) = q1
+ q2
+ · · · + ql
, 則 σ(m) ≤ m 。證明: 因 q
i
≥2, i = 1, 2, · · · , l, 故 σ(m)m = q
1
+ q2
+ · · · + ql
q
1
q2
· · ·ql
≤ 1
q
2
· · ·ql
+ 1q
1
q3
· · ·ql
+ · · · + 1q
1
· · ·ql−1
≤ 1
2
l−1
·l = 2l
2l
≤1 。引理2: 設 m = q
1
· · ·qk
, qi
≥ 2, i = 1, 2, · · · , k, 則當且僅當 q1
, q2
, · · · qk
均是素 數時, k 最大, 因而 σ(m)最小。證明: 設
m = q
1
q2
· · ·ql
(4)= p
1
p2
· · ·pk
(5) 這裡 (5) 是 m 的一個素分解。熟知, 若不考慮因子的次序, m 的素分 解是唯一的, 故 l ≤ k, 若且唯若 (4) 是素分 解時 l = k。
注意到 (4) 中有可能有合數的因子, 依 據引理 1, 便得
p
1
+ p2
+ · · · + pk
≤q1
+ q2
+ · · · + ql
。 反之, 若 k 最大 (σ(m)最小), 顯然, m 必是素分解。於是, 我們便立即得到如下一個完整的 回答。
定理2: 設 n + 1 = q
1
q2
· · ·qk
, qi
≥2, i = 1, 2, · · · , k, 若且唯若 q1
, q2
· · ·, qk
均 是素數時, 其對應的 n 的完備分拆1
q
1−1
q1 q
2−1
(q1
q2
)q
3−1
· · ·(q1
q2
· · ·qk−1
)q
k−1
的部分數
Q= (q
1
+ · · · + qk
) − k 最小。定理 2 告訴我們: 對於任一個給定的正 整數 n, 欲做出它的部分數最小的完備分拆, 只需寫出 n + 1 的素分解式並作出相應的完 備分拆, 而無須把所有的完備分拆都列出來 加以比較。 由於 n + 1 的素分解可有多種順 序的因子排列, 故 n 對應的部分數最小的完 備分拆不是唯一的。
具體地, 若 n + 1 = p
α 1
1pα 2
2· · ·pα k
k, p1
, p2
, · · · , pk
是不同的素數。 由定理 2, 容易 知道1. n 帶最小部分數的完備分拆有
k
P
i=1
α
i
(pi
−1) 部分。2. n 帶最小部分數的完備分拆個數有
(α
1+α
2+···+α
k)!
α
1!α
2!···α
k!
個。例如, 考察 35 的完備分拆。
因 35 + 1 = 2
2
·32
, 放 35 的所有完 備分拆中, 最小部分數是 2 × (2 − 1) + 2 × (3 − 1) = 6。這一類完備分拆共有
(2+2)!
2!2!
= 6 個。 它 們是(1)1, 2, 4
2
,122
(2)1, 22
,6, 122
(3)1, 22
,62
,18 (4)12
,32
,9, 18 (5)12
,3, 62
,18 (6)12
,3, 6, 122
(想想看, 它們是怎樣構作出來的?)五 . 遞歸—用電腦求出完備分
拆個數
至此, 我們已經明瞭了: 對任一個自然 數 n, 如何構作出所有完備分拆。 當然, 有多 少個完備分拆的問題也就迎刃而解了。
然而, 如果僅僅通過構作並羅列出所有 完備分拆的方法去求出分拆的個數, 這未免 太笨拙了。 況且, 對於較大的 n, 即使有了構 作完備分拆的可行方法, 但要把所有這類分 拆構作出來, 也是不勝其繁的。
為了敘述方便, 我們把 n 的完備分拆的 個數記作 P e(n)。 既然, 僅對於較大的 n, 求 P e(n) 難於對付, 那麼, 一個自然的想法是, 能否把 P e(n) 用一些 P e(k) (k < n) 表示。
這就是數學上的遞歸思想。 如果有了 P e(n) 的遞歸式, 我們就能按 n 的數值從小到大地 求出 P e(n)。 運用電腦及遞歸式, 我們將容 易求得任何 P e(n)。
由定理 1, 我們已經知道, n+ 1 = q
1
q2
· · ·qr
⇔ n ∼1
q
1−1
qq 1
2−1
(q1
q2
)q
3−1
· · ·(q
1
· · ·qr−1
)q
r−1
(qi
>1, i = 1, 2, · · · r) 這裡, 因 “ ⇒ ” 表示導出。 “ ∼ ” 意義見定 理 1。考察 n + 1 的任一個真因子 k, 1 <
k < n+ 1, 於是 k = q
1
· · ·ql
→ k −1∼1
q
1−1
q1 q
2−1
(q1
q2
)q
3−1
· · ·(q1
· · ·ql−1
)q
l−1
⇒ 1
q
1−1
q1 q
2−1
(q1
q2
)q
3−1
· · ·(q1
· · ·ql−1
)q
l−1
·(q
1
· · ·ql−1
ql
)n+1k−1
∼ n 上面的最後一式 是 n 的一個完備分拆。這表明: k − 1 的一個完備分拆對應於 n 的一個完備分拆。 易見, n + 1的不同真因
子 k (因而, 不同的k − 1) 的完備分拆對應 於 n 的不同完備分拆。
最後, 我們還應注意一個事實: 若 n + 1 沒有大於 1的真因子, 即 n + 1 = q
1
(等價於 q1
−1 = n) 它一一對應於 n 的平凡完備分 拆 n ∼ 1n
。 於是, 我們得到下列遞歸關係。定理3:
P e(n) =
X
1<k<n+1 k|(n+1)
P e(k − 1) + 1 (6)
初始值 P e(1) = P e(2) = 1。
例: 求P e(11)
解: 11 + 1 = 2
2
· 3, 12 的真因子是 2,3,4,6P e(2 − 1) = 1, P e(3 − 1) = 1, P e(4 − 1) = 2, P e(6 − 1) = 3 故
P e(11) = P e(1) + P e(2) + P e(3) +P e(5) + 1 = 8
誠然, 依據定理 3, 用手算仍嫌不便。 如 果運用電腦, 可以對 n 的數由小到大, 編製 出關於 P e(n) 的表, 方便於直接查閱。
六 . 反演—直接求出 P e(n) 的 顯式。
從應用上, 定理 3 已經解決了求 P e(n) 的問題。 然而, 作為一個數學問題來說, 僅僅 得到 (6) 式, 總覺得未臻完美。 數學家追求 的, 是徹底而漂亮地解決問題, 即求出 P e(n) 的顯表達式。
在我們的面前, 有一條顯見的路: 通過遞 歸式 (6), 解出 P e(n) 的表達式。 這涉及到 一個解遞歸式的問題。 然而, 細看 (6) 式, 用 現成的方法 (例如特徵方程方法) 極難求出 P e(n) 的顯表達式。 因此, 這是一條僅有路 口, 而通不到目的的路。
於是, 我們再從 n 的完備分拆的構作中 尋找突破口。
由定理 1, 我們知道: 求 P e(n), 即求 n+ 1 中不同有序分解的個數。 於是, 問題歸 結為如何求出 n + 1 的所有有序分解的個數 來。
我們把這一問題賦予組合意義而解決 之。
考察 (n + 1) 的有序素分解 n+ 1 = p
α 1
1pα 2
2· · ·pα k
k, pi
素數, i = 1, 2, · · · , k。記α
1
+ α2
+ · · · + αk
= s。求 n + 1 的所有有序分解 (不一定是 素分解), 相當於把 α
1
個第一類物 (即 p1
), α2
個第二類物 (即p2
), · · · , αk
個第 k 類物 (即pk
) 放入 m (m = 1, 2, · · · s) 個有標號 的盒中, 使這些盒無一是空的方法總數。上述的 α
1
, α2
, · · · , αk
類物, 我們記為 [n + 1] = (α1
, α2
, · · · , αk
)。把 (α
1
, α2
, · · · , αk
) 放進 m 個盒中的 方法數記為 U ([n + 1], m), 而其中每一盒都 非空的方法數記為 R([n + 1], m)。由排列組合的知識, 我們知道: 放 α
i
個相同的物到 m 個不同的盒的方法數是
α
i
+m−1 α
i 。 按乘法原則U([n + 1], m) = Π
k i=1
αi
+ m − 1 αi
!
(7) 另一方面, 把 (α
i
, α2
, · · · , αk
) 個物放 到 m 個不同盒裡, 恰有 j 個 (0 ≤ j ≤ m) 盒空的方法數是m j
!
R([n + 1], m − j) 於是
U([n+1], m) =
m
X
j=0
m j
!
R([n+1], m−j) (8) 由 (8) 式, 只要能反過來, 用 U([n + 1], m) 表示 R([n+1], m), 就能求出我們需要的解。
下面將要用到一個稱為二項式反演的公 式:
V
n
=n
X
k=0
n k
!
U
k
⇔U
n
=n
X
k=0
(−1)
n−k
n k!
V
k
(9) 證明: 先證 “ ⇒ ” 部分。n
X
k=0
(−1)
n−k
n k!
V
k
=
n
X
k=0
(−1)
n−k
n k! k X
i=0
k i
!
U
i
=
n
X
i=0
h X n
k=i
(−1)
n−k
n k!
k i! i
Ui
=
X
i
δ
ni
Ui
= Un
,這裡 δ
ni
是 Kroneker 符號, 即 n = i 時 δni
= 1, 其餘δni
= 0。同理可證 “⇐” 部分, 留給讀者作為一 個練習。
用反演公式 (9), 由 (8) 立即得 R([n + 1], m)
=
m
X
j=0
(−1)
j
m j!
U([n + 1], m − j) 把 (7) 代入上式, 得
R([n + 1], m) =
m
X
j=0
(−1)
j
m j!
Π
k i=1
αi
+ m − j − 1 αi
!
注意到 P e(n)的組合意義, 得 P
e
(n) =s
X
m=1
R([n + 1], m) 於是, 便證明了下列定理。
定理4: 若因子分解 n + 1 = p
α 1
1 pα 2
2· · ·pα k
k, p1
, p2
, · · · pk
是不同的素數, α1
+ α2
+ · · · + αk
= s, 則P e(n) =
s
X
m=1 m
X
j=0
(−1)
j
m j!
·
k
Y
i=1
α
i
+ m − j − 1 αi
!
(10)
茲舉一例。 求 P e(35)。
35 + 1 = 2
2
·32
, α1
= 2, α2
= 2s= 4, k = 2 由 (10) 式
P e(35)
=
4
X
m=1 m
X
j=0
(−1)
j
m j!
· 2 + m − j − 1 2
!
2 + m − j − 1 2!
= 1 + 7 + 12 + 6
= 26 。
運用 (10) 式僅涉及到 n + 1 的素分解 (無序), 因此, 便於應用。 運算表明,(10) 的結 果和遞歸式 (6) 的結果是完全一致的。