最好的东西留到最后介绍。线性规划是我知道的最酷的算法之一。

线性规划用于在给定约束条件下最大限度地改善指定的指标。例如,假设你所在的公司生产两种产品:衬衫和手提袋。衬衫每件利润2美元,需要消耗1米布料和5粒扣子;手提袋每个利润3美元,需要消耗2米布料和2粒扣子。你有11米布料和20粒扣子,为最大限度地提高利润,该生产多少件衬衫、多少个手提袋呢?

在这个例子中,目标是利润最大化,而约束条件是拥有的原材料数量。

再举一个例子。你是个政客,要尽可能多地获得支持票。你经过研究发现,平均而言,对于每张支持票,在旧金山需要付出1小时的劳动(宣传、研究等)和2美元的开销,而在芝加哥需要付出1.5小时的劳动和1美元的开销。在旧金山和芝加哥,你至少需要分别获得500和300张支持票。你有50天的时间,总预算为1500美元。请问你最多可从这两个地方获得多少支持票?

这里的目标是支持票数最大化,而约束条件是时间和预算。

你可能在想,本书花了很大的篇幅讨论最优化,这与线性规划有何关系?所有的图算法都可使用线性规划来实现。线性规划是一个宽泛得多的框架,图问题只是其中的一个子集。但愿你听到这一点后心潮澎湃!

线性规划使用Simplex算法,这个算法很复杂,因此本书没有介绍。如果你对最优化感兴趣,就研究研究线性规划吧!

results matching ""

    No results matching ""