一种顺序决策型问题的贪心策略
先上例题:
给定 n 个二元组 < 𝑎𝑖 , 𝑏𝑖 > 和两个数 𝑎0, 𝑏0,现在你需要将 n 个二元组排序(即不包含 𝑎0, 𝑏0),使得 max𝑛 𝑖=1 { Π 𝑖−1 𝑗=0 𝑎𝑗 𝑏𝑖 } 最小。 1 ≤ 𝑛 ≤ 1000, 0 ≤ 𝑎, 𝑏 ≤ 10000。
对于此题的做法:
首先可以简单看出我们要做的是对于顺序的决策。其次,可以简单地发现在最终的最优解下,相邻两个二元组交换之后,对于其他二元组的计算值并不产生影响,并且存在交换之后不会使得两个二元组计算值的最大值变大。那么我们得到一种贪心策略,对于相邻两个元素,如果交换前计算值的最大值大于交换后,那么交换。
这看起来有点像是排序?
这实质是一个不等关系,把关系式写出来之后对其化简,可以得到一个不等式。这个不等式确立的不等关系具有传递性,因此可以通过以该不等式为依据进行排序的方式来得到最优的顺序。
总结一下,该题有如下特征:
1.对于顺序的决策。
2.每个元素有一个计算值(元素、计算值是两个抽象概念)。
3.相邻两个元素进行交换,对于其它元素的计算值不产生影响。
4.对于最优解,可以得到相邻两个元素之间应当满足的不等式(满足之后不会使得解变劣),并且该不等式具有传递性。
注意:对于这个不等式,如果涉及到max/min函数,可以分类讨论谁为max/min,往往可以把max/min函数丢掉,得到一个简单的不等式。
经典的车间工作安排问题也可以归入此列。

浙公网安备 33010602011771号