(我在这里敲我的头。令 X={x1,x2,...,xn} 是一个整数集。令 A1,A2,...Am 是 X 的 m 个子集。对于任何 i 和 j, Ai 和 Aj 不一定是不相交的,现在的目标是有效地找到每个 Ai (i=1,...,m) 上的最大值,同时尽可能减少操作次数。
例如,给定 X={2,4,6,3,1},其子集 A1={2,3,1},A2={2,6,3,1},A3={4,2, 3,1}。我们需要分别找到 Max{A1}、Max{A2}、Max{A3}。
求Max{A1}、Max{A2}、Max{A3}的蛮力方法是扫描每个Ai中的所有元素,需要(m*d)次操作,其中m是X的子集数,和 d X 的子集 {Ai} 的平均长度。
现在,我有一些观察:
(1) 对于任意集合 Y⊆X,max{Y}≤max{X},
例如,由于 Max{X}=6 且 6 在 A2 中,则可以直接找到 Max{A2}=6。
(2) 对于任意两个集合 A 和 B,如果 A∩B 不为空,则 Max{A} 和 Max{B} 可以识别为:
首先,我们找到 A 和 B 之间的共同部分,表示为 c=max{A∩B}。
然后,我们找到 Max{A}=Max{Max{A-(A∩B)}, c} 和 Max{B}=Max{Max{B-(A∩B)}, c}。
我不确定是否还有其他一些有趣的观察可以找到这些最大值。任何想法都受到热烈欢迎!
我的问题是,如果对于一般情况下 X={x1,x2,...,xn} 并且 X 有 m 个子集,表示为 A1,A2,...Am,是否有一些更有效的技术可以找到这样的最大值 Max{Ai} (i=1,...,m) ?
您的帮助将不胜感激!