【问题标题】:Unit-Length Closed Intervals单位长度闭合区间
【发布时间】:2013-09-14 19:38:33
【问题描述】:

我正在开发一个有点关注以下内容的程序:

实线上的单位长度闭区间是区间[x, 1+x]。对于给定的输入集

X={x1,x2,..., Xn}, x1

我不需要代码,但正确设置我的程序的算法就可以了

谢谢

【问题讨论】:

  • 您尝试了哪些方法?有什么问题?
  • 间隔是否可以重叠?
  • @MSN 任何区间重叠不是最优的解决方案

标签: algorithm


【解决方案1】:

您的积分按升序排列。我们可以通过贪婪的方法来解决这个问题。使第一个间隔从 x1 开始。然后从第一个间隔中的第一个点开始设置第二个间隔。以此类推。

【讨论】:

  • +1,实际上可以证明这会产生最佳解决方案。 (证明草图:最低点需要被一些区间覆盖。因此,至少有一个这样的区间必须是覆盖的一部分,并将区间的低端放置在在 i> 最低点最大化相同区间可以覆盖的其他点的数量。现在删除我们刚刚添加的区间所覆盖的所有点,并考虑覆盖剩余点所需的最小区间集。 )
【解决方案2】:

由于它是集合覆盖问题的一个实例,因此多项式时间算法不太可能比贪心解决方案好太多。因此,您可以尝试放置覆盖最多尚未发现点的单位间隔。通过将其与 X 中的某个数据点对齐,您不会丢失间隔的位置。

【讨论】:

  • 它不是套套的一般实例。你可以说它是一个非常特殊的封面。
【解决方案3】:

贪婪: 时间复杂度为 O(n),最大值。 就像 x1<...>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    相关资源
    最近更新 更多