受线性不等式约束的线性函数最大化
线性规划的最优解,永远落在一个「角」上——于是沿着角走,便能找到它。
每一条运转良好的供应链、每一张航班时刻表背后,都藏着 1947 年的一个洞见:最优的方案,永远住在一个角上。
核心想法
想象你要在种种限制下定一个计划——一笔预算、若干小时、一批原料——而你想从中榨出最大的成效。如果一切都是「线性」的(双倍的料,双倍的钱;双倍的工,双倍的产出),那么这些规则就划出了「你被允许的全部方案」所构成的一块多边形,而你的目标,则朝着它的某个方向。
乔治·丹齐格证明了一件既出人意料、又极其有用的事:那个最优的方案,绝不会含含糊糊地落在中间——它永远落在这块形状的一个角上。于是,你不必去试无穷多种可能,只需从一个角跳到另一个角,一路向上,直到没有相邻的角更好为止。那个角,就是答案。他把这套步骤称为单纯形法,它让「找出最优方案」成了机器真能办到的事。
它是如何诞生的
1947 年,丹齐格是美国空军的一位数学家,研究如何安排整支军队的训练、补给与部署——当时的规划者称之为一份「program(方案)」。他把这些难题提炼成单一的数学形式,再发明了单纯形法去求解它。那年十月,当他向伟大的约翰·冯·诺伊曼描述这个问题时,冯·诺伊曼一眼便认出了它的骨架:那正是他刚刚写成一本书的博弈论里、同样的极小极大结构——他当场就勾勒出了它那隐藏的孪生兄弟,「对偶」。
围绕它,有一团署名的纠葛。在苏联,列昂尼德·康托罗维奇早在 1939 年就已找到线性规划,但他的工作在西方多年无人知晓。当 1975 年的诺贝尔经济学奖表彰线性规划时,奖项授予了康托罗维奇与佳林·库普曼斯——却没有丹齐格,而正是他的算法,让这个领域得以实用;库普曼斯认为这不公平。(丹齐格也是一则著名传说背后那个真实的学生:读研时他迟到进教室,把黑板上的两道题当作业抄了下来、并解了出来——事后才知道,那是统计学里两个著名的未解难题。)
它为何重要
几乎任何「我们如何最好地利用手上所有」这种形式的问题,都能写成一个线性规划,而单纯形法第一次解出了其中海量的问题。它让规划——为军队、为工厂、为航空公司、为电网、为整个经济体——从凭猜测与经验法则,变成了一项计算;而这项计算,还会顺带告诉你:你所面对的每一份稀缺资源,究竟值多少。
一个可以想象的画面
想象一块由笔直的墙围起来的、平面的田地,再把整块田轻轻往某个方向一倾。放开一颗球,它滚下坡、停下来——绝不会停在空旷的中央,而是卡进两堵墙相交的一个角里。正因为墙是直的、坡也是直的,那个最低点(反过来看,就是最高点)必定是一个角。单纯形法,无非是一种沿着围墙、一路走到那个角的巧办法,而不必去搜遍整块田。
它的位置
线性规划,生长自一支古老的、关于线性不等式的数学(一个世纪前傅里叶就曾摆弄过它),又与冯·诺伊曼和摩根斯特恩的博弈论一同到来——那同一个极小极大的念头,戴着两顶帽子。从这里,一条线通向贝尔曼的动态规划、通向卡马卡的内点法,并汇入今天悄然驱动着物流与机器学习的优化之中;而「一条约束值多少」的念头,那个影子价格,则成了经济学日常语言的一部分。