分区优化版本的近似算法?
approximation algorithm for optimization version of partitioning?
在分区问题的优化版本中,我们希望将集合 X
分区为不相交的子集 A
和 B
,这样 max(sum(A),sum(B))
就是 minimal.A 近似算法wikipedia 中有建议,但我不明白为什么这个近似值是 4/3。
OPT >= sum(all)/2
考虑贪婪算法给你一些答案,如 S1 和 S2 其中:
max(sum(S1), sum(S2)) > 4/3 OPT
(不失一般性假设 sum(S1) > sum(S2)) 所以我们有:
sum(S1) > 4/3 OPT >= 2 sum(all)/3
所以 :
sum(S1) > 4/3 OPT >= 2 sum(all)/3 so sum(S1) > 2 sum(all)/3
所以 :
sum(S1) > 2 sum(S2)
因此,当 sum(S1) 小于 sum(S2) 时,您必须在其中一个算法步骤中添加像 A
这样的元素到 S1 之后你没有向 S1
添加任何元素
所以 A
必须大于 sum(S2) 的最终状态(因为 A + sum(S1) > 2 总和(S2))
所以 A
大于当前状态 sum(S1) (因为当前状态 sum(S1 ) < 总和的当前状态(S2) < 总和的最终状态(S1) < A )
并且您的列表是按降序排序的,因此 A
必须是排序列表中的第一个元素(最大元素)。所以你的 s1 必须只包含 A
而你有。
你也知道 sum(OPT) >= A 因为它包含 A 或其他部分包含 A 但 sum(OPT) 大于其他部分元素的总和所以
sum(OPT) > A
但是你有:
A = sum(S1) > 4/3 sum(OPT) > sum(OPT) > A
这是一个矛盾:)
在分区问题的优化版本中,我们希望将集合 X
分区为不相交的子集 A
和 B
,这样 max(sum(A),sum(B))
就是 minimal.A 近似算法wikipedia 中有建议,但我不明白为什么这个近似值是 4/3。
OPT >= sum(all)/2
考虑贪婪算法给你一些答案,如 S1 和 S2 其中:
max(sum(S1), sum(S2)) > 4/3 OPT
(不失一般性假设 sum(S1) > sum(S2)) 所以我们有:
sum(S1) > 4/3 OPT >= 2 sum(all)/3
所以 :
sum(S1) > 4/3 OPT >= 2 sum(all)/3 so sum(S1) > 2 sum(all)/3
所以 :
sum(S1) > 2 sum(S2)
因此,当 sum(S1) 小于 sum(S2) 时,您必须在其中一个算法步骤中添加像 A
这样的元素到 S1 之后你没有向 S1
所以 A
必须大于 sum(S2) 的最终状态(因为 A + sum(S1) > 2 总和(S2))
所以 A
大于当前状态 sum(S1) (因为当前状态 sum(S1 ) < 总和的当前状态(S2) < 总和的最终状态(S1) < A )
并且您的列表是按降序排序的,因此 A
必须是排序列表中的第一个元素(最大元素)。所以你的 s1 必须只包含 A
而你有。
你也知道 sum(OPT) >= A 因为它包含 A 或其他部分包含 A 但 sum(OPT) 大于其他部分元素的总和所以
sum(OPT) > A
但是你有:
A = sum(S1) > 4/3 sum(OPT) > sum(OPT) > A
这是一个矛盾:)