JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
Back to the library
數學 1947

受線性不等式約束的線性函數最大化

喬治·B·丹齊格

線性規劃的最優解,永遠落在一個「角」上——於是沿著角走,便能找到它。

Choose your version
In depth · the introduction

每一條運轉良好的供應鏈、每一張航班時刻表背後,都藏著 1947 年的一個洞見:最優的方案,永遠住在一個角上。

核心想法

想像你要在種種限制下定一個計畫——一筆預算、若干小時、一批原料——而你想從中榨出最大的成效。如果一切都是「線性」的(雙倍的料,雙倍的錢;雙倍的工,雙倍的產出),那麼這些規則就劃出了「你被允許的全部方案」所構成的一塊多邊形,而你的目標,則朝著它的某個方向。

喬治·丹齊格證明了一件既出人意料、又極其有用的事:那個最優的方案,絕不會含含糊糊地落在中間——它永遠落在這塊形狀的一個角上。於是,你不必去試無窮多種可能,只需從一個角跳到另一個角,一路向上,直到沒有相鄰的角更好為止。那個角,就是答案。他把這套步驟稱為單純形法,它讓「找出最優方案」成了機器真能辦到的事。

它是如何誕生的

1947 年,丹齊格是美國空軍的一位數學家,研究如何安排整支軍隊的訓練、補給與部署——當時的規劃者稱之為一份「program(方案)」。他把這些難題提煉成單一的數學形式,再發明了單純形法去求解它。那年十月,當他向偉大的約翰·馮·諾伊曼描述這個問題時,馮·諾伊曼一眼便認出了它的骨架:那正是他剛剛寫成一本書的賽局理論裡、同樣的極小極大結構——他當場就勾勒出了它那隱藏的孿生兄弟,「對偶」。

圍繞它,有一團署名的糾葛。在蘇聯,列昂尼德·康托洛維奇早在 1939 年就已找到線性規劃,但他的工作在西方多年無人知曉。當 1975 年的諾貝爾經濟學獎表彰線性規劃時,獎項授予了康托洛維奇與佳林·庫普曼斯——卻沒有丹齊格,而正是他的演算法,讓這個領域得以實用;庫普曼斯認為這不公平。(丹齊格也是一則著名傳說背後那個真實的學生:讀研時他遲到進教室,把黑板上的兩道題當作業抄了下來、並解了出來——事後才知道,那是統計學裡兩個著名的未解難題。)

它為何重要

幾乎任何「我們如何最好地利用手上所有」這種形式的問題,都能寫成一個線性規劃,而單純形法第一次解出了其中海量的問題。它讓規劃——為軍隊、為工廠、為航空公司、為電網、為整個經濟體——從憑猜測與經驗法則,變成了一項計算;而這項計算,還會順帶告訴你:你所面對的每一份稀缺資源,究竟值多少。

一個可以想像的畫面

想像一塊由筆直的牆圍起來的、平面的田地,再把整塊田輕輕往某個方向一傾。放開一顆球,它滾下坡、停下來——絕不會停在空曠的中央,而是卡進兩堵牆相交的一個角裡。正因為牆是直的、坡也是直的,那個最低點(反過來看,就是最高點)必定是一個角。單純形法,無非是一種沿著圍牆、一路走到那個角的巧辦法,而不必去搜遍整塊田。

一個可互動的線性規劃:一塊四角的可行區域,兩個滑桿設定目標;當你改變獎勵什麼,被高亮的最優角便在頂點間跳動,從不落在內部。

它的位置

線性規劃,生長自一支古老的、關於線性不等式的數學(一個世紀前傅立葉就曾擺弄過它),又與馮·諾伊曼和摩根斯特恩的賽局理論一同到來——那同一個極小極大的念頭,戴著兩頂帽子。從這裡,一條線通向貝爾曼的動態規劃、通向卡馬卡的內點法,並匯入今天悄然驅動著物流與機器學習的最佳化之中;而「一條約束值多少」的念頭,那個影子價格,則成了經濟學日常語言的一部分。

The original document
Original source text
G. B. Dantzig · “Maximization of a Linear Function of Variables Subject to Linear Inequalities” · in Activity Analysis of Production and Allocation (ed. T. C. Koopmans), Wiley, 1951, pp. 339–347 · method devised 1947 at Project SCOOP
The problem
[Annotation] Choose nonnegative quantities x₁, x₂, … to make a linear objective c·x as large as possible, subject to a set of linear inequalities A x ≤ b. An astonishing variety of planning problems take exactly this shape: feeding an army at least cost, scheduling aircraft, blending crude into fuels, routing freight. Dantzig called such a problem a “program” in the military planner's sense of the word — a schedule of activities — long before “programming” meant writing software.
The geometry
[Annotation] Each inequality is a half-plane; together they fence off a convex region (a polytope) of all feasible plans. Its flat faces meet at corners — the vertices, or “basic feasible solutions.” The fundamental theorem of linear programming: if a best plan exists at all, one of these corners is best. The interior never wins on its own; you only ever need to look at corners.
The method
[Annotation] Start at a corner. Look along each edge leaving it and ask whether moving that way increases the objective. If one does, slide along that edge until a new constraint becomes binding — you have arrived at the next corner, and the objective is no lower than before. Repeat. When no leaving edge improves the objective, that corner is the optimum and the method stops. A walk along the skeleton of the polytope, corner to corner.
Duality
[Annotation] When Dantzig described the problem to John von Neumann in October 1947, von Neumann at once tied it to his theory of two-person zero-sum games: every maximization program has a dual minimization program with the same optimal value, and the dual's variables are the “shadow prices” of the constraints — what one more unit of each scarce resource is worth at the optimum.
G. B. Dantzig · Project SCOOP, U.S. Air Force · 1947 (published 1951)