【发布时间】:2015-08-29 05:14:04
【问题描述】:
我想找到 WIS 问题的变体,其中结果必须是具有最小权重和的较大子集。例如,在:
Input: Number of Intervals n = 5
Interval Details: (start-finish, weight)
Interval 1: (0-5, 15)
Interval 2: (4-9, 18)
Interval 3: (10-15, 12)
Interval 4: (8-21, 19)
Interval 5: (25-30, 25)
答案必须是子集 {3, 1, 5},因为这是具有最大元素和最小权重总和 ws = 52 (12 + 15 + 25) 的子集。
这个问题是一个项目的一部分,我为此搜索了很多,但以这种方式找到了任何东西。我不熟悉算法和编程,如果我在这里写一些愚蠢的东西,很抱歉。
你知道如何解决这个问题吗?
【问题讨论】:
-
我们处理的输入大小是多少?看起来这个问题是 NP 完全的,因为在最坏的情况下,我们需要计算所有可能的最大子集,并选择具有最小权重和的那个。
-
@Jakob,大约 40 个间隔。一位朋友建议我找到非重叠区间的最大子集的大小 K,然后使用蛮力找到 K 区间的所有组合,并获得具有最小权重和的组合。这可能对我有用,但我不知道如何获取仅包含非重叠间隔的 K 元素的所有子集。你知道一些可以帮助我解决这个问题的算法吗?
标签: algorithm scheduling intervals