分数规划用来求一个分式的极值。其形式化表述是,给出 ,求一组 ,最小化或最大化

通俗来讲,这类问题类似于:每种物品有两个权值 ,选出若干个物品使得 最小或最大。

一般分数规划问题还会有一些特殊的限制,比如「分母至少为 」。

求解

二分法

分数规划问题的通用方法是二分答案法。假设当前二分到的答案为 ,则一组满足条件的 会让权值大于等于 。根据这一条件列不等式并变形

那么只要求出不等号左边的式子的最大值就行了。如果最大值比 要大,说明 是可行的,否则不可行。分数规划的主要难点就在于如何求 的最大值或最小值。

Dinkelbach 算法

Dinkelbach 算法 1 的大概思想是每次用上一轮的答案当做新的 来输入,不断地迭代,直至答案收敛。

例题

个物品,每个物品有两个权值 。求一组 ,满足 中恰好有 ,最大化 的值。

个物品,每个物品有两个权值

你需要确定一组 ,使得 最大。

要求

每条边有两个权值 ,求一棵生成树 使得 最小。

每条边的边权为 ,求一个环 使得 最小。

习题

参考资料与注释

Footnotes

  1. Dinkelbach, Werner. “On nonlinear fractional programming.” Management science 13.7 (1967): 492-498.

此文件夹下有0条笔记。