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