放置间隔以最大化邻接数

时间:2013-05-01 11:02:02

标签: algorithm language-agnostic

我的问题: 我有n个“项目”放在整数轴上。每个项目包含多个放置选项,表示为整数的闭合间隔。这些间隔可以具有一些重叠元素。目标是在int轴上找到n个项目的非重叠位置(如果有的话),并且最大间隔邻接数。

上述字词的更多细节: 1)重叠:区间[1,4]和[3,6]有两个重叠元素{3}和{4};区间[2,5]和[6,10]不重叠。 2)区间邻接:区间[a,b]和[b + 1,c]被称为相邻。该示例的间隔邻接的数量是1.n个项目的间隔邻接的最大可能数量是n-1,这在放置使n个间隔成对相邻时发生。

示例: 共有3个项目;他们的位置选择列在这里

item1 has 2 choices: [1, 4], [2, 5]
item2 has 3 choices: [5, 8], [9, 11], [16, 18]
item3 has 2 choices: [3, 5], [13, 15]

一个可行的位置是

[1, 4](item1), [5, 8](item2), [13, 15](item3)

另外两个可行的位置是

[1, 4](item1), [16, 18](item2), [13, 15](item3);

[2, 5](item1), [16, 18](item2), [13, 15](item3). 

此示例中的所有这三个位置都是最佳的。间隔邻接的数量是1。

我的问题: 是否有比列举所有可能性更好的方法? 我只能想到如果项目的间隔选择与另一个项目的所有选项重叠,则可以排除该选择。欢迎任何想法:)

0 个答案:

没有答案