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)