在区间中寻找点的另一种贪婪策略:这种方法有效吗



我正试图解决以下问题:

您会得到一组间隔。找出最小数量的点,使每个区间至少包含一个点。

我知道这个问题的一个解决方案是根据区间的结束时间对区间进行排序,然后贪婪地重复选择尚未覆盖的最早区间的终点,并将其添加到结果中。

然而,我也想到,可以通过选择一次消除更多间隔的点来解决这个问题。我知道这个想法不正确,但我找不到任何反例。有人能帮我找到这个策略的反例吗?

这里有一个假设区间包含在内的例子。

间隔:

[1, 4], [2, 5], [3, 6], [4, 7], [5, 8], [5, 9], [5, 10], [8, 12]

Greedy将把一个点放在5中,因为它有最多的区间(除两个区间外的所有区间(。然后,它将把一点放在区间[1, 4]的某个地方,另一点放进区间[8, 12]

Greedy的答案是3。但最好的方法是在4分中加1分,在8分中加一分,它们都会被覆盖。

编辑:在纸上画出间隔,以便更好地理解。

反例:

[-----]         [-----]
[------------]
[-------------]
[------------]
[-------------]

最新更新