本文的閱讀等級:中級
線性規劃的標準型問題具有下列形式:
其中 是一個 階矩陣, 是 維向量, 是 維向量, 是 維未知向量 (見“線性規劃 (一):標準型問題”)。如果 無解,線性規劃問題即不成立。因為這個緣故,我們要求 ,即約束等式的數目不多於未知數的數目。如果 有線性相關的列向量 (row vector),表示系統存在冗餘的約束條件 (可將多餘條件刪除),譬如,,,或約束條件彼此矛盾 (此時系統無解),譬如,,。為了避免捲入這些無謂的情況,以下假設 有 個線性獨立的列向量,即 ,且 (若 ,則 有唯一解)。
我們先看一個例子:
加入鬆弛變數 ,將問題轉換為標準型:
從線性代數角度出發,或許我們設想:何不先解出線性方程組 的通解?於是寫出增廣矩陣,使用高斯消去法化簡 (見“高斯消去法”),
故得等價的梯形陣式:
每一個方程式的領先變數被該方程式鎖定,稱為軸變數 (pivot variable);其他的變數未受限制,稱為自由變數 (free variable)。上式中, 是軸變數, 是自由變數。係數矩陣 的軸行 (對應軸變數的行向量) 是線性獨立的,也就是說, 是可逆矩陣。設定自由變數為任意參數,線性方程的通解 (即解集合) 可表示為
其中 和 是任意數。給定 和 的數值,我們便得到一個特解。如果特解滿足所有不等式 ,,便稱該特解為可行解 (feasible solution)。我們要解決的問題是:從包含無窮多成員的可行解集合,稱為可行域 (feasible set),找出一個使目標函數最小化的可行解。這個問題似乎不屬於線性代數的範疇,那麼接下來該怎麼辦呢?
波利亞 (George Polya) 說[1]:「如果你解不出手邊的問題,試著先解決其他的相關問題。」問題可以更換,方法也可以改變。當代數方法暫時走不通時,何妨嘗試幾何方法?回到我們的例子,圖一顯示給定的5個不等式交集成的可行域 (橘色區域),不難確認可行域的邊界為超平面 , (見“超平面”)。每一不等式 描述一個閉半空間,也就是無界凸集。因為凸集的交集仍為一個凸集 (見“凸組合、凸包與凸集”),所有不等式交集而成的可行域是一個有界或無界閉凸集。由圖一可知上例的可行域是一個有界閉凸集,其邊界都是平的,稱為多胞形。
對於凸集 ,我們稱 是一個端點 (extreme point),若不存在兩相異點 和 屬於 使得 ,其中 。換句話說,不位於凸集中任何線段內的點即是端點。上圖顯示可行域 (多邊形) 的頂點都是端點。給定目標函數 ,最佳解發生在端點 ,見圖二。這並不是一個特例。事實上,對於任一非空有界閉凸集 ,必定存在 的一端點 使得 ,其中 是目標函數 (見“多胞形”,定理三)。我們有了重大突破:若可行域是一個有界閉凸集,只要求出所有的端點並逐一代入目標函數計算即可得到最佳解。(這是截至目前為止我們想出的唯一一個方法,但未必是一個好方法。)
接下來,我們想知道如何計算可行域的端點。比較圖一與圖二,可知最佳解所在的端點發生於 和 。將兩式代入約束等式,
對應此線性方程組的 階係數矩陣可逆,故得唯一解 。這個結果衍生出一個新概念。考慮 ,其中 是一個 階矩陣,。挑選 的 個線性獨立行向量 (即 的一組基底),將它們組成一 階可逆矩陣 。對應 的行向量的 個變數稱為基變數 (basic variable),其餘 個變數稱為非基變數 (nonbasic variable)。設所有非基變數等於零,可得唯一一組基變數解,此解稱為基解 (basic solution)。上例中, 是基變數, 是非基變數, 是一個基解。下面解釋基解的計算過程。令 是 的任一基解。一旦選擇了一組基變數,我們可以重新排列變數使基變數置前,非基變數置後,如下:
,
其中 表示 個基變數, 表示 個非基變數。重新排列的約束矩陣具有分塊形式
,
其中 階 和 階 分別是對應 和 的係數矩陣。對於基解 ,我們要求 可逆且 。使用此條件,
,
故 ,基解即為 。
若 是一個基解且 ,我們稱屬於可行域的基解 為一個基可行解 (basic feasible solution)。對於 階約束矩陣 ,因為我們要求對應基變數的 階子陣 可逆,基解總數不大於 取 的組合數,即二項式係數
。
如果加上不等條件 ,實際的基可行解總數要比二項式係數給出的上界來的小。下面的定理說明基可行解與端點是等價的代數與幾何概念。
基可行解─端點定理:若 是約束集 的一個基可行解,則 是一端點,反之亦然。
證明於下。若 是一個基可行解,則 是一個可行解。將 個基變數置前,即有 。令 表示對應基變數的可逆係數矩陣。使用反證法。假設 不是端點,則存在兩相異可行解 和 使得 ,其中 。將 和 表示為 和 。因為 和 都是可行解, 且 。但 ,,可知等號右邊的所有項皆不為負,故推論 。又因為 都是可行解,故滿足 。但 可逆,推得 ,即有 ,這與 矛盾,因此證明 是一個端點。
再看相反方向的論證。假設 是一個端點。我們知道端點 必定是可行解,使得 且 。同樣地,排列變數使得非零變數置於前,,其中 且 。寫出 ,這裡 和 對應 和 。不過, 未必是一個方陣,設 為 階矩陣。如果 有線性獨立的行向量,則 是一個基解,證明即告結束。使用反證法。假設 的行向量不是線性獨立的,將 以其行向量表示為 。因為 是一個線性相關集,可知存在一非零向量 使得
。
對於任意 ,則有
。
因為 ,故存在極小的正數 使得 且 。令
。
以上結果表明 和 是異於 的可行解,然而,,這與 是一端點相矛盾,故證得所求。
我們要求基可行解的非基變數等於零,但基變數也可能為零。如果基解的一個或多個基變數等於零,我們稱該基解為退化 (degenerate) 基解,這時我們無法從基解的數值來判斷某變數究竟是基變數還是非基變數。見下例,
。
對於基可行解 ,基變數與非基變數可能有兩種情況:(1) 且 ,(2) 且 。退化發生的原因在於線性系統存在多餘的限制。對應上面線性方程組的約束不等式為
顯然,第一式和第三式相等,刪除其中之一並不會影響結果。
下文我們將探討可行域的表述問題,並證明線性規劃的一個基本定理:若線性規劃標準型問題有一個最佳解,則存在一個最佳基可行解。
引用來源:
[1] G. Polya,How to Solve It,1957年出版,頁114。原文是 “If you cannot solve the proposed problem, try to solve first some related problem.”
教授,我現在有個問題! 如果是多維向量空間,在不投影的情況下,可以比大小或找最佳解嗎?
最佳解必須針對一目標函數才有意義,但不知目標函數為何?
老師,請問這專題還會出後續嗎?
當然會有後續。不只這個專題,其他幾個也都還沒寫完。
感謝教授的分享,對於學習線性規劃的我,非常受用。^_^