從線性規劃到八個皇后
黃華民
數學中有一類問題, 當變數很少, 或限制 條件不多的時候, 困難不大。 但若變數增加, 或限制條件變多, 就會變的相當困難。 例如線 性規劃, 離散數學上許多問題都有這種特點。
比方說, 有 n 個數目 a
1
, a2
, · · · , an
, 我們想把最大的一個挑出來, 這在傳統的數 學家看來, 根本就不是一個問題。 但就實際的 狀況考慮, 這 n 個數目可能是電腦資料庫中 的數據, 而且 n 很大, 比方說是 100 萬。 想 要在這一百萬個數據中, 很快的將最大的一 個挑出來, 就是一個實際的數學問題了。 數學 家、 電腦專家花了相當多的力氣在這方面, 研 究過各式各樣的辦法。同樣的情況, 假使要考慮解一個線性目 標函數
f (x
1
, x2
, · · · , xn
)= c
1
× x1
+ c2
× x2
, · · · + cn
× xn
在下述線性限制條件下
a
11
×x1
+ a12
×x2
+ · · · + a1n
×xn
= b1
a21
×x1
+ a22
×x2
+ · · · + a2n
×xn
= b2
· · ·
a
m1
×x1
+am2
×x2
+· · ·+amn
×xn
= bm
x
1
, x2
, · · · , xn
≥ 0或是這樣的線性限制條件下
a
11
×x1
+ a12
×x2
+ · · · + a1n
×xn
≤ b1
a21
×x1
+ a22
×x2
+ · · · a2n
×xn
≤ b2
· · ·
a
m1
×x1
+am2
×x2
+· · ·+amn
×xn
≤ bm
x
1
, x2
, · · · , xn
≥ 0的極大或極小, 就是一個線性規劃的問題。 這 種問題, 當變數 n 或限制條件 m 不大時並 不困難。 比方說, 當 m = 2, n = 4 時, 想求 得目標函數 f (x, y, x, u) = x + y 在
x + 2y + z = 5, 3x + y + u = 6, x, y, z, u ≥ 0
限制下的極大值, 可以用下面的方法考慮:
因為滿足限制條件的區域 (稱之為可行 區域), 是一個封閉且有限的二維多面體。 函 數 f 的極大值一定出現在“角落”點, 也就是 在限制條件
x + 2y + z = 5, 3x + y + u = 6, x, y, z, u ≥ 0
45
中, 任令二變數為零, 求的其它二變數之解 (稱作基本解), 所對應的點。 只需要把這些點 都解出來, 代入函數 f 中, 便知道極大值是多 少。 在這個例子中, 可能的解 (x, y, z, u) 只 有
(0, 0, 5, 6), (0, 5/2, 0, 7/2), (0, 6, −7, 0), (5, 0, 0, −9), (2, 0, 3, 0), (7/5, 9/5, 0, 0).
六組, 其中 (0, 6, −7, 0), (5, 0, 0, −9) 二組 為非可行解, 而因為
f (0, 0, 5, 6) = 0,
f (0, 5/2, 0, 7/2) = 5/2, f (2, 0, 3, 0) = 2,
f (7/5, 9/5, 0, 0) = 16/5.
故知極大值為 16/5。
然而若 n 或 m 的值很大, 上面的辦法 便不可行。 因為若 n = 20, m = 10, 則要測 試的基本解, 會增加到 (20!)/(10! × 10!) 之 多, 大約接近 18 萬組解。 而且還要驗證解集 合, 是否為有限且封閉的區域。
在二次世界大戰時, 美軍就遭遇這樣的 問題。 因為要經濟有效的處理戰區物資運補、
儲存的問題。 發現這種問題與線性規劃的模 式相近。 然而變數和限制條件動輒成千上萬, 要如何處理就要大費周章。 Dantzig 提供的
一個辦法 (Simplex method 單純形法) 在 某種意義下, 解決了這個問題。
Dantizig 的 Simplex method 想法其 實很簡單。 基本解雖然可能有很多, 但卻沒有 必要每一個都找出來。 因為可行區域一定是 凸的, 而且在可行區域中, 任一局部極大值一 定就是極大值。 所以只要在任一基本可行解 的附近去尋找是否還有目標函數值更大的其 它的基本可行解就行了。
假設 x = (x
1
, x2
, · · · , xn
) 是一基本 可行解。 若 y = (y1
, y2
, · · · , yn
) 是在 x 附 近的基本解, 這表示 y 中非零分量的為位置, 和 x 中非零分量的為位置, 最多只能有一個 不同。 如果從任一基本可行解出發, 一路在附 近的基本可行解尋找看看, 是否有目標函數 值更大的可能? 如果有, 就移到那一點繼續 尋找, 如果沒有, 就表示已經找到極大值了。單純形法這套理論看起來很好, 但是有 一個缺點, 就是它其實並不能保證, 在搜尋的 過程中, 能避開大多數的“角落”( 基本可行 解)。 事實上, 有一些例子顯示, 利用單純形 法, 從特定點出發, 會繞過所有的“角落”點才 找到極大值。 然而單純形法的擁護者爭辯說, 在實際的應用問題上, 這種情況幾乎從未出 現。 反而經常顯示出極高的效率, 能夠在極少 數次的搜尋後, 就找到解答。
數學家顯然不滿意這種情況。 二十多年 前, Karmarkar 證明可以改採用內點搜尋法 (單純形法可視為邊界搜尋法), 則即使在最壞 的狀況下, 要得到任意精確度的近似的極大 值, 搜尋的次數都不會超過變數個數 n 的常 數倍。 這當然是一個突破的結果。 但對一般的
問題而言, 到底那一種方法較好, 仍是各說各 話, 爭議不休。
線性規劃的電腦軟體很多, 幸運的是, 有 一些免費的公用軟體, 例如 lp solve 就是一 個很適合入門級的公用軟體。 有興趣的讀者 可以從下列網站下載
ftp://ftp.ics.ele.tue.nl/pub/lp slove/
lp solve 有工作站 Unix 版, PC dos 版, 也有 Windows 版。 可自行選取合用的 程式下載。
如果要求不高, 自行製作一個簡易的, 單 純形法自助軟體, 也不十分困難。 利用類似 Matlab 的高階套裝語言設計, 只需要 50 行 以下的指令, 就可有一個堪用線性規劃的程 式了。 Matlab 的 Optimization Toolbox 可以參考 (當然不只有50 行)。 其它的數學軟 體, 例如 Maple 也有這樣的 Toolbox。
這樣的程式往往是一個很好的解題黑盒 子。 離散數學的題目, 往往都可以用這個黑盒 子來解決。
配對問題就是一個很好的例子。 假如有 五個女孩 { A, B, C, D, E }, 和五個男孩 { a, b, c, d, e }, 希望配對參加化裝舞會, 但 五個女孩各自心有所屬。 A 只肯和 a, c, e 作 伴, B 只肯和 a, b, d 作伴, C 只肯和 a, c, e 作伴, D 只肯和 b, d, e 作伴, E 只肯和 b, c, d 作伴。 如何安排, 讓參加的對數最多, 就 是配對問題。
這個問題可以用圖來表示。 五個女孩 { A, B, C, D, E }, 和五個男孩 { a, b, c, d, e }, 分別用頂點表示。 願意配對作伴的男女 用邊連起來, 以下圖表示
.. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. . .. .
...
... ..
.. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. . .. .
...
... ..
. .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. . .. .. .. .. . .. .
.. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. . .. .
... ..
. .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. . .. .. .. .. . .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .
.. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. . .. .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. .. . .. .. . .. . .. .. . .. .
... . .. . .. . . .. . . .. . . .. . .. . . .. . . .. . .. . . . .. . .. . . .. . .. . . .. . . .. . . .. . . .. . .. . . .. . .. . . . .. . .. . . .. . .. . . .. . . .. . . .. . . .. . .. . . .. . .. . . . .. . .. . . .. . . .. . .. . . .. . . .. . . .. . .. . . .. . .. . . . .. . . .. . .. . . .. . .. . . .. . . .. . . .. . .. . . .. . . .. . . .. . . .. . .. . . .. . .. . . .. . . .. . . .. . . .. . .. . . .. . .. . . . .. . .. . . .. . .. . . .. . . .. . . .. . . .. . .. . . .. . .. . . . .. . .. . . .. . . .. . .. . . .. . . .. . . .. . .. . . .. . .. . . . .. . . .. . .. . . .. . .. . . .. . . .. . . .. . .. . . .. . . .. . . .. . . .. . .. . . .. . .. . . .. . . .. . . .. . . .. . .. . . .. . . .. . . .. . .. . . .. . .. . . .. . . .. . . .. . . .. . .. . . .. . . .. . . .. . .. . . .. . . .. . .. . . .. . . .. . . .. . .. . . .. . .. . . . .. . .. . . .. . . .. . .
.. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. . .. .. .. .. . .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. . .. .. .. .. . .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. .. . .. .. . .. .. .. .. . .. .. . .. .. .. . .. .
.. .. .. .. .. . .. .. .. .. .. .. . .. .. .. .. .. .. . . .. . .. .. .. .. .. .. . .. .. .. .. .. .. . .. .. .. .. .. . . .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. .. .. .. .. .. . . .. . .. .. .. .. .. .. . .. .. .. .. .. .. . .. .. .. .. .. . . .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. .. .. .. .. .. .. .. . .. .. .. .. .. .. . .. .. .. .. .. .. . .. .. .. .. .. . . .. . .. .. .
a b c d e
A B C D E
e
5
e14
e6
e3
e11
e12
e1
e4
e13
e
15
e2
e
7
e8
e
9
e10
配對問題等於在上面的圖中, 指定一些邊, 使 任一點最多落在一條指定的邊上。 試看最多 可以找到多少指定的邊?
這個題目可以表成下列極大值問題:
max : e
1
+e2
+e3
+e4
+e5
+e6
+e7
+e8
+e9
+e10
+e11
+e12
+e13
+e14
+e15
; e1
+ e2
+ e3
≤ 1;e
4
+ e5
+ e6
≤ 1;e
7
+ e8
+ e9
≤ 1;e
10
+ e11
+ e12
≤ 1;e
13
+ e14
+ e15
≤ 1;e
1
+ e4
+ e7
≤ 1;e
5
+ e10
+ e13
≤ 1;e
2
+ e8
+ e14
le1;e
6
+ e11
+ e15
≤ 1;e
3
+ e9
+ e12
≤ 1;(且假設變數e
1
, · · · , e15
都是非負實數) 若線性規劃的解 e1
, e2
, · · · , e15
的值不是 1 就是 0。 如果是1, 代表對應邊屬於指定邊。 這 樣的話, 配對問題就可以用線性規劃來解。從題型看來, 此題的極大值最多是 5, 而 e
1
= e2
= e3
= e4
= e5
= e6
= e7
=e
8
= e9
= e10
= e11
= e12
= e13
= e14
= e15
= 1/3 顯然就是一個解。 如果線 性規劃這個黑盒子, 提供的解就是這一組。 那 就壞了。不過如果是採用單純形法的黑盒子, 可 知在加上一些變數 {f
1
, f2
, · · · , f10
} 後 (稱 作剩餘變數), 原來的限制條件變為:e
1
+ e2
+ e3
+ f1
= 1;e
4
+ e5
+ e6
+ f2
= 1;e
7
+ e8
+ e9
+ f3
= 1;e
10
+ e11
+ e12
+ f4
= 1;e
13
+ e14
+ e15
+ f5
= 1;e
1
+ e4
+ e7
+ f6
= 1;e
5
+ e10
+ e13
+ f7
= 1;e
2
+ e8
+ e14
+ f8
= 1;e
6
+ e11
+ e15
+ f9
= 1;e
3
+ e9
+ e12
+ f10
= 1;(e
1
, · · · , e1
5, f1
, · · · , f10
≥ 0) 一共有 25 個變數, 10 個方程式。 任令其中 15 個變數為 0 求得之解為基本解。 因為這種 10 × 25 的係數矩陣中, 任一子方陣的行列式 的值, 一定是 1, −1 或 0。(這種矩陣我們稱為 totally unimodular 矩陣)。 在這種情況下, 所有的基本可行解的分量一定是 0 或 1。 所 以假使利用單純形法, 得到的解 e1
, · · · , e15
的值一定是 0 或 1。如果想要利用 lp solve 試驗一下。 只需 要把上述的題目抄下存檔, 就叫 matching 好了。 執行下列命令 lp solve < matching 就可以看到下面的結果:
Value of objective function: 5
e
1
0e
2
0e
3
1e
4
1e
5
0e
6
0e
7
0e
8
1e
9
0e
10
0 e11
1 e12
0 e13
1 e14
0 e15
0這看起來好像很不錯, 但不要忘了, 單純形法 雖然對絕大部分的題目都能處理的很快, 但 卻不能保證永遠如此。 改用 Karmarkar 的 內點收斂法如何? 不幸的是, 它經常會收斂 到, 如上面所提到的非整數解, 像是 e
1
= e2
= e3
= e4
= e5
= e6
= e7
= e8
= e9
= e10
= e11
= e12
= e13
= e14
= e15
= 1/3 的地方去, 通常需要用 branch and bound 之類的技巧作後處理, 才能得 到整數解。 這種方法就是所謂的整數規劃 in- teger programming。 通常線性規劃的程式, 也可以處理整數規劃。 但是整數規劃後處理 的部份, 經常會比線性規劃的部份麻煩許多。電腦程式教科書中很喜歡提到的一個八
個皇后 (8 queens) 問題。 是這樣說的: 在一 個 8 × 8 的西洋棋盤上, 皇后 (queen) 是 一個威力最大的棋子, 只要與她同行, 同列, 正負 45 度分角線上的敵對棋子, 都會被她 吃掉。 問在一個西洋棋盤上, 一共可以放多少 個, 互不威脅, 彼此敵對的皇后?
這是電腦程式設計課程中, 用來考驗學 生 Backtracking 能力, 一個標準的習題。 但 是利用整數線性規劃這個黑盒子, 也可以輕 易的解決這個問題。
假設我們用 x
ij
這個變數, 表示是否要 在第 i 行 第 j 列, 要放皇后。 (xij
= 1 代表 要放 xij
= 0 代表不放) 我們可以用下列極 大值問題來描述這個題目:max :
x
11
+x12
+x13
+x14
+x15
+x16
+x17
+x18
+ x21
+x22
+x23
+x24
+x25
+x26
+x27
+x28
+ x31
+x32
+x33
+x34
+x35
+x36
+x37
+x38
+ x41
+x42
+x43
+x44
+x45
+x46
+x47
+x48
+ x51
+x52
+x53
+x54
+x55
+x56
+x57
+x58
+ x61
+x62
+x63
+x64
+x65
+x66
+x67
+x68
+ x71
+x72
+x73
+x74
+x75
+x76
+x77
+x78
+ x81
+x82
+x83
+x84
+x85
+x86
+x87
+x88
;x
11
+x12
+x13
+x14
+x15
+x16
+x17
+x18
≤ 1;x
21
+x22
+x23
+x24
+x25
+x26
+x27
+x28
≤ 1;x
31
+x32
+x33
+x34
+x35
+x36
+x37
+x38
≤ 1;x
41
+x42
+x43
+x44
+x45
+x46
+x47
+x48
≤ 1;x
51
+x52
+x53
+x54
+x55
+x56
+x57
+x58
≤ 1;x
61
+x62
+x63
+x64
+x65
+x66
+x67
+x68
≤ 1;x
71
+x72
+x73
+x74
+x75
+x76
+x77
+x78
≤ 1;x
81
+x82
+x83
+x84
+x85
+x86
+x87
+x88
≤ 1;x
11
+x21
+x31
+x41
+x51
+x61
+x71
+x81
≤ 1;x
12
+x22
+x32
+x42
+x52
+x62
+x72
+x82
≤ 1;x
13
+x23
+x33
+x43
+x53
+x63
+x73
+x83
≤ 1;x
14
+x24
+x34
+x44
+x54
+x64
+x74
+x84
≤ 1;x
15
+x25
+x35
+x45
+x55
+x65
+x75
+x85
≤ 1;x
16
+x26
+x36
+x46
+x56
+x66
+x76
+x86
≤ 1;x
17
+x27
+x37
+x47
+x57
+x67
+x77
+x87
≤ 1;x
18
+x28
+x38
+x48
+x58
+x68
+x78
+x88
≤ 1;x
11
+x22
+x33
+x44
+x55
+x66
+x77
+x88
≤ 1;x
12
+x23
+x34
+x45
+x56
+x67
+x78
≤ 1;x
13
+x24
+x35
+x46
+x57
+x68
≤ 1;x
14
+x25
+x36
+x47
+x58
≤ 1;x
15
+x26
+x37
+x48
≤ 1;x
16
+x27
+x38
1 ≤ 1;x
17
+x28
≤ 1;x
21
+x32
+x43
+x54
+x65
+x76
+x87
≤ 1;x
31
+x42
+x53
+x64
+x75
+x86
≤ 1;x
41
+x52
+x63
+x74
+x85
≤ 1;x
51
+x62
+x73
+x84
≤ 1;x
61
+ x72
+ x83
≤ 1;x
71
+ x82
≤ 1x
81
+x72
+x63
+x54
+x45
+x36
+x27
+x18
≤ 1;x
71
+x62
+x53
+x44
+x35
+x26
+x17
≤ 1;x
61
+x52
+x43
+x34
+x25
+x16
≤ 1;x
51
+x42
+x33
+x24
+x15
≤ 1;x
41
+x32
+x23
+x14
≤ 1;x
31
+x22
+x13
≤ 1;x
21
+x12
≤ 1;x
82
+x73
+x64
+x55
+x46
+x37
+x28
≤ 1;x
83
+x74
+x65
+x56
+x47
+x38
≤ 1;x
84
+x75
+x66
+x57
+x48
≤ 1;x
85
+x76
+x67
+x58
≤ 1;x
86
+x77
+x68
≤ 1;x
87
+x78
≤ 1;把上述的題目抄下, 存檔。 檔名就叫 8queens 好了。 執行下列命令 lp solve < 8queens 得 到下列的結果
Value of objective Value of objective Value of objective
function: 8 function: 8 function: 8
x 11 0 x 37 0 x 64 0
x 12 0 x 38 0 x 65 0.041237
x 13 0.49141 x 41 0 x 66 0
x 14 0.0034364 x 42 0.27491 x 67 0.89347
x 15 0 x 43 0.41924 x 68 0
x 16 0 x 44 0 x 71 0
x 17 0 x 45 0 x 72 0
x 18 0.50515 x 46 0.19931 x 73 0
x 21 0 x 47 0.10653 x 74 0.85223
x 22 0.25086 x 48 0 x 75 0
x 23 0.024055 x 51 0.58076 x 76 0.065292
x 24 0.14433 x 52 0 x 77 0
x 25 0.58076 x 53 0 x 78 0.082474
x 26 0 x 54 0 x 81 0.16151
x 27 0 x 55 0.37801 x 82 0
x 28 0 x 56 0 x 83 0
x 31 0.25773 x 57 0 x 84 0
x 32 0.47423 x 58 0.041237 x 85 0
x 33 0 x 61 0 x 86 0.46735
x 34 0 x 62 0 x 87 0
x 35 0 x 63 0.065292 x 88 0.37113
x 36 0.26804
雖然得到正確的極大值, 但找不到正確皇后 的位置。 理由很簡單。 因為對應的限制條件的 係數矩陣不是 totally unimodular。
int 這個指令代表以後的變數都是整數, 所以只要在上述極大問題後面加上下面這些 指令
int
x
11
x12
x13
x14
x15
x16
x17
x18
x21
x22
x23
x24
x25
x26
x27
x28
x31
x32
x33
x34
x35
x36
x37
x38
x41
x42
x43
x44
x45
x46
x47
x48
x51
x52
x53
x54
x55
x56
x57
x58
x61
x62
x63
x64
x65
x66
x67
x68
x71
x72
x73
x74
x75
x76
x77
x78
x81
x82
x83
x84
x85
x86
x87
x88
; 再用 lp solve 試驗一下, 就可得到正確解的 位置x
14
= x22
= x37
= x46
= x56
= x68
= x
75
= x81
= 1。有了這個整數線性規劃的黑盒子, 可以把很 多離散數學的題目拿來試驗。 真正試驗一番 以後, 應該會對離散數學有不同的感受。 例如 下面這個和八個皇后對應的問題:
問在一個 8 × 8 的西洋棋盤上, 最少需 要幾個皇后, 才能使棋盤上任一個位置, 都會 受到至少一位皇后的威脅?
有八個皇后問題的經驗, 這個問題當然 可以很輕易寫成下列有限制條件的極小值問 題
min :
x
11
+x12
+x13
+x14
+x15
+x16
+x17
+x18
+ x21
+x22
+x23
+x24
+x25
+x26
+x27
+x28
+ x31
+x32
+x33
+x34
+x35
+x36
+x37
+x38
+ x41
+x42
+x43
+x44
+x45
+x46
+x47
+x48
+ x51
+x52
+x53
+x54
+x55
+x56
+x57
+x58
+ x61
+x62
+x63
+x64
+x65
+x66
+x67
+x68
+ x71
+x72
+x73
+x74
+x75
+x76
+x77
+x78
+ x81
+x82
+x83
+x84
+x85
+x86
+x87
+x88
;x
11
+x12
+x13
+x14
+x15
+x16
+x17
+x18
+x21
+x31
+x41
+x51
+x61
+x71
+x81
+x22
+x33
+x44
+x55
+x66
+x77
+x88
≥ 1;x
11
+x12
+x13
+x14
+x15
+x16
+x17
+x18
+x22
+x32
+x42
+x52
+x62
+x72
+ x82
+x23
+x34
+x45
+x56
+x67
+x78
+x21
≥ 1;x
11
+x12
+x13
+x14
+x15
+x16
+x17
+x18
+x23
+x33
+x43
+x53
+x63
+x73
+x83
+x24
+x35
+x46
+x57
+x68
+x31
+x22
≥ 1;x
11
+x12
+x13
+x14
+x15
+x16
+x17
+x18
+x24
+x34
+x44
+x54
+x64
+x74
+x84
+x25
+x36
+x47
+x58
+x41
+x32
+x23
≥ 1;x
11
+x12
+x13
+x14
+x15
+x16
+x17
+x18
+x25
+x35
+x45
+x55
+x65
+x75
+x85
+x26
+x37
+x48
+x51
+x42
+x33
+x24
≥ 1;x
11
+x12
+x13
+x14
+x15
+x16
+x17
+x18
+x26
+x36
+x46
+x56
+x66
+x76
+x86
+x27
+x38
+x61
+x52
+x43
+x34
+x25
≥ 1;x
11
+x12
+x13
+x14
+x15
+x16
+x17
+x18
+x27
+x37
+x47
+x57
+x67
+x77
+x87
+x28
+x71
+x62
+x53
+x44
+x35
+x26
≥ 1;x
11
+x12
+x13
+x14
+x15
+x16
+x17
+x18
+x28
+x38
+x48
+x58
+x68
+x78
+x88
+x81
+x72
+x63
+x54
+x45
+x36
+x27
≥ 1;x
21
+x22
+x23
+x24
+x25
+x26
+x27
+x28
+x11
+x31
+x41
+x51
+x61
+x71
+x81
+x
32
+x43
+x54
+x65
+x76
+x87
+x12
≥ 1;x
21
+x22
+x23
+x24
+x25
+x26
+x27
+x28
+x12
+x32
+x42
+x52
+x62
+x72
+x82
+x11
+x33
+x44
+x55
+x66
+x77
+x88
+x31
+x13
≥ 1;x
21
+x22
+x23
+x24
+x25
+x26
+x27
+x28
+x13
+x33
+x43
+x53
+x63
+x73
+x83
+x12
+x34
+x45
+x56
+x67
+x78
+x41
+x32
+x14
≥ 1;x
21
+x22
+x23
+x24
+x25
+x26
+x27
+x28
+x14
+x34
+x44
+x54
+x64
+x74
+x84
+x13
+x35
+x46
+x57
+x68
+x51
+x42
+x33
+x31
≥ 1;x
21
+x22
+x23
+x24
+x25
+x26
+x27
+x28
+x15
+x35
+x45
+x55
+x65
+x75
+x85
+x14
+x36
+x47
+x58
+x61
+x52
+x43
+x34
+x16
≥ 1;x
21
+x22
+x23
+x24
+x25
+x26
+x27
+x28
+x16
+x36
+x46
+x56
+x66
+x76
+x86
+x15
+x37
+x48
+x71
+x62
+x53
+x44
+x35
+x17
≥ 1;x
21
+x22
+x23
+x24
+x25
+x26
+x27
+x28
+x17
+x37
+x47
+x57
+x67
+x77
+x87
+x16
+x38
+x81
+x72
+x63
+x54
+x45
+x36
+x18
≥ 1;x
21
+x22
+x23
+x24
+x25
+x26
+x27
+x28
+x18
+x38
+x48
+x58
+x68
+x78
+x88
+x
17
+x82
+x73
+x64
+x55
+x46
+x37
≥ 1;x
31
+x32
+x33
+x34
+x35
+x36
+x37
+x38
+x11
+x21
+x41
+x51
+x61
+x71
+x81
+x42
+x53
+x64
+x75
+x86
+x22
+x13
≥ 1;x
31
+x32
+x33
+x34
+x35
+x36
+x37
+x38
+x12
+x22
+x42
+x52
+x62
+x72
+x82
+x
21
+x43
+x54
+x65
+x76
+x87
+x41
+x23
+x14
≥ 1;x
31
+x32
+x33
+x34
+x35
+x36
+x37
+x38
+x13
+x23
+x43
+x53
+x63
+x73
+x83
+x11
+x22
+x44
+x55
+x66
+x77
+x88
+x51
+x42
+x24
+x15
≥ 1;x
31
+x32
+x33
+x34
+x35
+x36
+x37
+x38
+x14
+x24
+x44
+x54
+x64
+x74
+x84
+x12
+x23
+x45
+x56
+x67
+x78
+x61
+x52
+x43
+x25
+x16
≥ 1;x
31
+x32
+x33
+x34
+x35
+x36
+x37
+x38
+x15
+x25
+x45
+x55
+x65
+x75
+x85
+x13
+x24
+x46
+x57
+x68
+x71
+x62
+x53
+x44
+x26
+x17
≥ 1;x
31
+x32
+x33
+x34
+x35
+x36
+x37
+x38
+x16
+x26
+x46
+x56
+x66
+x76
+x86
+x14
+x25
+x47
+x58
+x81
+x72
+x63
+x54
+x45
+x27
+x18
≥ 1;x
31
+x32
+x33
+x34
+x35
+x36
+x37
+x38
+x17
+x27
+x47
+x57
+x67
+x77
+x87
+x15
+x26
+x48
+x82
+x73
+x64
+x55
+x46
+x28
≥ 1;x
31
+x32
+x33
+x34
+x35
+x36
+x37
+x38
+x18
+x28
+x48
+x58
+x68
+x78
+x88
+x16
+x27
+x83
+x74
+x65
+x56
+x47
≥ 1;x
41
+x42
+x43
+x44
+x45
+x46
+x47
+x48
+x11
+x21
+x31
+x51
+x61
+x71
+x81
+x52
+x63
+x74
+x85
+x32
+x23
+x14
≥ 1;x
41
+x42
+x43
+x44
+x45
+x46
+x47
+x48
+x12
+x22
+x32
+x52
+x62
+x72
+x82
+x31
+x53
+x64
+x75
+x86
+x51
+x33
+x24
+x15
≥ 1;x
41
+x42
+x43
+x44
+x45
+x46
+x47
+x48
+x13
+x23
+x33
+x53
+x63
+x73
+x83
+x21
+x32
+x54
+x65
+x76
+x87
+x61
+x52
+x34
+x25
+x16
≥ 1;x
41
+x42
+x43
+x44
+x45
+x46
+x47
+x48
+x14
+x24
+x34
+x54
+x64
+x74
+x84
+x11
+x22
+x33
+x55
+x66
+x77
+x88
+x71
+x62
+x53
+x35
+x26
+x17
≥ 1;x
41
+x42
+x43
+x44
+x45
+x46
+x47
+x48
+x15
+x25
+x35
+x55
+x65
+x75
+x85
+x12
+x23
+x34
+x56
+x67
+x78
+x81
+x72
+x63
+x54
+x36
+x27
+x18
≥ 1;x
41
+x42
+x43
+x44
+x45
+x46
+x47
+x48
+x16
+x26
+x36
+x56
+x66
+x76
+x86
+x13
+x24
+x35
+x57
+x68
+x82
+x73
+x64
+x55
+x37
+x28
≥ 1;x
41
+x42
+x43
+x44
+x45
+x46
+x47
+x48
+x17
+x27
+x37
+x57
+x67
+x77
+x87
+x14
+x25
+x36
+x58
+x83
+x74
+x65
+x56
+x38
≥ 1;x
41
++x42
+x43
+x44
+x45
+x46
+x47
+x48
+x18
+x28
+x38
+x58
+x68
+x78
+x88
+x
15
+x26
+x37
+x84
+x75
+x66
+x57
≥ 1;x
51
+x52
+x53
+x54
+x55
+x56
+x57
+x58
+x11
+x21
+x31
+x41
+x61
+x71
+x81
+x62
+x73
+x84
+x42
+x33
+x24
+x15
≥ 1;x
51
+x52
+x53
+x54
+x55
+x56
+x57
+x58
+x12
+x22
+x32
+x42
+x62
+x72
+x82
+x41
+x63
+x74
+x85
+x61
+x43
+x34
+x25
+x16
≥ 1;x
51
+x52
+x53
+x54
+x55
+x56
+x57
+x58
+x13
+x23
+x33
+x43
+x63
+x73
+x83
+x31
+x42
+x64
+x75
+x86
+x71
+x62
+x44
+x35
+x26
+x17
≥ 1;x
51
+x52
+x53
+x54
+x55
+x56
+x57
+x58
+x14
+x24
+x34
+x44
+x64
+x74
+x84
+x21
+x32
+x43
+x65
+x76
+x87
+x81
+x72
+x63
+x45
+x36
+x27
+x18
≥ 1;x
51
+x52
+x53
+x54
+x55
+x56
+x57
+x58
+x15
+x25
+x35
+x45
+x65
+x75
+x85
+x11
+x22
+x33
+x44
+x66
+x77
+x88
+x82
+x73
+x64
+x46
+x37
+x28
≥ 1;x
51
+x52
+x53
+x54
+x55
+x56
+x57
+x58
+x16
+x26
+x36
+x46
+x66
+x76
+x86
+x12
+x23
+x34
+x45
+x67
+x78
+x83
+x74
+x65
+x47
+x38
≥ 1;x
51
+x52
+x53
+x54
+x55
+x56
+x57
+x58
+x17
+x27
+x37
+x47
+x67
+x77
+x87
+x13
+x24
+x35
+x46
+x68
+x84
+x75
+x66
+x48
≥ 1;x
51
+x52
+x53
+x54
+x55
+x56
+x57
+x58
+x18
+x28
+x38
+x48
+x68
+x78
+x88
+x14
+x25
+x36
+x47
+x85
+x76
+x67
≥ 1;x
61
+x62
+x63
+x64
+x65
+x66
+x67
+x68
+x11
+x21
+x31
+x41
+x51
+x71
+x81
+x72
+x83
+x52
+x43
+x34
+x25
+x16
≥ 1;x
61
+x62
+x63
+x64
+x65
+x66
+x67
+x68
+x12
+x22
+x32
+x42
+x52
+x72
+x82
+x51
+x73
+x84
+x71
+x53
+x44
+x35
+x26
+x17
≥ 1;x
61
+x62
+x63
+x64
+x65
+x66
+x67
+x68
+x13
+x23
+x33
+x43
+x53
+x73
+x83
+x41
+x52
+x74
+x85
+x81
+x72
+x54
+x45
+x36
+x27
+x18
≥ 1;x
61
+x62
+x63
+x64
+x65
+x66
+x67
+x68
+x14
+x24
+x34
+x44
+x54
+x74
+x84
+x31
+x42
+x53
+x75
+x86
+x82
+x73
+x55
+x46
+x37
+x28
≥ 1;x
61
+x62
+x63
+x64
+x65
+x66
+x67
+x68
+x15
+x25
+x35
+x45
+x55
+x75
+x85
+x21
+x32
+x43
+x54
+x76
+x87
+x83
+x74
+x56
+x47
+x38
≥ 1;x
61
+x62
+x63
+x64
+x65
+x66
+x67
+x68
+x16
+x26
+x36
+x46
+x56
+x76
+x86
+x
11
+x22
+x33
+x44
+x55
+x77
+x88
+x84
+x75
+x57
+x48
≥ 1;x
61
+x62
+x63
+x64
+x65
+x66
+x67
+x68
+x17
+x27
+x37
+x47
+x57
+x77
+x87
+x12
+x23
+x34
+x45
+x56
+x78
+x85
+x76
+x58
≥ 1;x
61
+x62
+x63
+x64
+x65
+x66
+x67
+x68
+x18
+x28
+x38
+x48
+x58
+x78
+x88
+x
13
+x24
+x35
+x46
+x57
+x86
+x77
≥ 1;x
71
+x72
+x73
+x74
+x75
+x76
+x77
+x78
+x11
+x21
+x31
+x41
+x51
+x61
+x81
+x82
+x62
+x53
+x44
+x35
+x26
+x17
≥ 1;x
71
+x72
+x73
+x74
+x75
+x76
+x77
+x78
+x12
+x22
+x32
+x42
+x52
+x62
+x82
+x61
+x83
+x81
+x63
+x54
+x45
+x36
+x27
+x18
≥ 1;x
71
+x72
+x73
+x74
+x75
+x76
+x77
+x78
+x13
+x23
+x33
+x43
+x53
+x63
+x83
+x51
+x62
+x84
+x82
+x64
+x55
+x46
+x37
+x28
≥ 1;x
71
+x72
+x73
+x74
+x75
+x76
+x77
+x78
+x14
+x24
+x34
+x44
+x54
+x64
+x84
+x41
+x52
+x63
+x85
+x83
+x65
+x56
+x47
+x38
≥ 1;x
71
+x72
+x73
+x74
+x75
+x76
+x77
+x78
+x15
+x25
+x35
+x45
+x55
+x65
+x85
+x31
+x42
+x53
+x64
+x86
+x84
+x66
+x57
+x48
≥ 1;x
71
+x72
+x73
+x74
+x75
+x76
+x77
+x78
+x16
+x26
+x36
+x46
+x56
+x66
+x86
+x21
+x32
+x43
+x54
+x65
+x87
+x85
+x67
+x58
≥ 1;x
71
+x72
+x73
+x74
+x75
+x76
+x77
+x78
+x17
+x27
+x37
+x47
+x57
+x67
+x87
+x11
+x22
+x33
+x44
+x55
+x66
+x88
+x86
+x68
≥ 1;x
71
+x72
+x73
+x74
+x75
+x76
+x77
+x78
+x18
+x28
+x38
+x48
+x58
+x68
+x88
+x12
+x23
+x34
+x45
+x56
+x67
+x87
≥ 1;x
81
+x82
+x83
+x84
+x85
+x86
+x87
+x88
+x11
+x21
+x31
+x41
+x51
+x61
+x71
+x72
+x63
+x54
+x45
+x36
+x27
+x18
≥ 1;x
81
+x82
+x83
+x84
+x85
+x86
+x87
+x88
+x12
+x22
+x32
+x42
+x52
+x62
+x72
+x71
+x73
+x64
+x55
+x46
+x37
+x28
≥ 1;x
81
+x82
+x83
+x84
+x85
+x86
+x87
+x88
+x13
+x23
+x33
+x43
+x53
+x63
+x73
+x61
+x72
+x74
+x65
+x56
+x47
+x38
≥ 1;x
81
+x82
+x83
+x84
+x85
+x86
+x87
+x88
+x14
+x24
+x34
+x44
+x54
+x64
+x74
+x51
+x62
+x73
+x75
+x66
+x57
+x48
≥ 1;x
81
+x82
+x83
+x84
+x85
+x86
+x87
+x88
+x15
+x25
+x35
+x45
+x55
+x65
+x75
+x41
+x52
+x63
+x74
+x76
+x67
+x58
≥ 1;x
81
+x82
+x83
+x84
+x85
+x86
+x87
+x88
+x16
+x26
+x36
+x46
+x56
+x66
+x76
+x31
+x42
+x53
+x64
+x75
+x77
+x68
≥ 1;x
81
+x82
+x83
+x84
+x85
+x86
+x87
+x88
+x17
+x27
+x37
+x47
+x57
+x67
+x77
+x21
+x32
+x43
+x54
+x65
+x76
+x78
≥ 1;x
81
+x82
+x83
+x84
+x85
+x86
+x87
+x88
+x18
+x28
+x38
+x48
+x58
+x68
+x78
+x11
+x22
+x33
+x44
+x55
+x66
+x77
≥ 1;上述的式子雖然又臭又長, 但卻是可以利用電腦很容易就可以製造出來, 利用 lp solve 很 快可看到下面的解答:
Value of objective Value of objective Value of objective
function: 2.764420302 function: 2.764420302 function: 2.764420302
x 11 0.10096 x 37 0.0096126 x 64 0.073718
x 12 0.080529 x 38 0 x 65 0.069311
x 13 0 x 41 0.030048 x 66 0.064904
x 14 0.030048 x 42 0.064904 x 67 0.0096154
x 15 0.030048 x 43 0.073718 x 68 0
x 16 0 x 44 0 x 71 0.080529
x 17 0.080529 x 45 0 x 72 0.012019
x 18 0.10096 x 46 0.069311 x 73 0.0096154
x 21 0.080529 x 47 0.064904 x 74 0.064904
x 22 0.012019 x 48 0.030048 x 75 0.064904
x 23 0.0096154 x 51 0.030048 x 76 0.0096154
x 24 0.064904 x 52 0.064904 x 77 0.012019
x 25 0.064904 x 53 0.069311 x 78 0.080529
x 26 0.0096154 x 54 0 x 81 0.10096
x 27 0.012019 x 55 0 x 82 0.080529
x 28 0.080529 x 56 0.073718 x 83 0
x 31 0 x 57 0.064904 x 84 0.030048
x 32 0.0096154 x 58 0.030048 x 85 0.030048
x 33 0.064904 x 61 0 x 86 0
x 34 0.069311 x 62 0.0096154 x 87 0.080529
x 35 0.073718 x 63 0.064904 x 88 0.10096
x 36 0.064904
顯然這不是我們要的的答案, 但如果再 加上下列整數的限制條件
int
x
11
, x12
, x13
, x14
, x15
, x16
, x17
, x18
, x21
, x22
, x23
, x24
, x25
, x26
, x27
, x28
, x31
, x32
, x33
, x34
, x35
, x36
, x37
, x38
, x41
, x42
, x43
, x44
, x45
, x46
, x47
, x48
, x51
, x52
, x53
, x54
, x55
, x56
, x57
, x58
, x61
, x62
, x63
, x64
, x65
, x66
, x67
, x68
, x71
, x72
, x73
, x74
, x75
, x76
, x77
, x78
, x81
, x82
, x83
, x84
, x85
, x86
, x87
, x88
;則一如預期, 再花費幾十倍的時間後, 終於才 能看到下列正確的解答
x
27
= x41
= x67
= x83
= x85
= 1.參考文獻
1. Gilbert Strang, Linear algebra and its ap- plications, San Diego: Harcourt, Brace, Jo- vanovich Publishers, c1988.
2. Robert S. Garfinkel, George L. Nemhauser, Integer Programming, John Wieley &
Sons, New York 1972.
—本文作者任教於中央大學數學系—