问题听起来像这样:我们得到n个立方体。每个立方体都有一个长度(边长)和一个颜色。边缘的长度是不同的,但是例如,culours不是:任何两个立方体不能具有相同的长度,但可以具有相同的颜色。颜色从1到p(给出p)。
我们必须按照以下规则建造一个具有最大高度的立方体塔:
1)如果立方体具有相同的颜色,则不能将立方体放置在立方体上;
2)立方体不能放在边长较小的立方体上。
例如:cube c1的长度为3,cube c2的长度为5. cube c1可以放在c2的顶部,但是c2的顶部不能放置c1。
好吧,所以我提出的算法是为了解决这个问题:
现在我遇到的困难是,如何证明这种贪心算法是最优的?我猜这个证据必须看起来像这里的那些:http://www.cs.princeton.edu/~wayne/kleinberg-tardos/pdf/04GreedyAlgorithmsI-2x2.pdf
答案 0 :(得分:2)
问题是:
在每个决策节点,我们必须决定选择 a 或 b ,给定 a> b :
假设选择b是严格最优的(暗示最大高度):
col(a) == col(b)
b optimal => final tower: b, x0, x1, ...
a, x0, x1, ...
col(a) == col(b)
,(a > b) & (b > x0) => (a > x0)
(及物性)矛盾!
案例2 col(a) != col(b)
b optimal -> final tower: b, x0, x1, ...
a, b, x0, x1, ...
(a > b) & (col(a) != col(b)) => a before b
我们假设采摘b是严格优化的并且表现出矛盾。挑选b只能与选择a(剩余的最大长度立方体)同样好或更差。