Algorithm 最大化给定约束条件下多个变量的总和

Algorithm 最大化给定约束条件下多个变量的总和,algorithm,graph,Algorithm,Graph,我一定为这个问题绞尽脑汁好几个小时了;内容如下(意译为删除愚蠢的故事和上下文): 给定一个区间,其中有N个点,每个点上都有一个点 结束时,一系列的限制条件最多只能相距多远 点对可以是,并且至少可以是某些点对之间的距离 点必须是,尽量使间隔的长度最大化。要点 可以重叠 这似乎可以归结为: 有N-1个变量,每个变量的长度l(1..N-1)>=0。有一个 此表单的约束列表: l(i)+l(i+1)+。。。。l(j)=C 任务是最大化l(1)+l(2)+。。。。l(n-1) 我不太愿意在数学Stacke

我一定为这个问题绞尽脑汁好几个小时了;内容如下(意译为删除愚蠢的故事和上下文):

给定一个区间,其中有N个点,每个点上都有一个点 结束时,一系列的限制条件最多只能相距多远 点对可以是,并且至少可以是某些点对之间的距离 点必须是,尽量使间隔的长度最大化。要点 可以重叠

这似乎可以归结为:

有N-1个变量,每个变量的长度l(1..N-1)>=0。有一个 此表单的约束列表:

l(i)+l(i+1)+。。。。l(j)=C

任务是最大化l(1)+l(2)+。。。。l(n-1)

我不太愿意在数学Stackexchange上问这个问题,因为这是在图形搜索算法的算法课程之后的一个练习的一部分;你有没有看到一种方法可以把它转化成一个图问题?否则你会怎么解决呢


谢谢。

如何将其转化为图形问题:将数字按升序排序。以最小的一个为例,这将是“根”,最左边的起点。然后选取满足约束条件的下N个元素,即从起点可以到达的元素。这些将是起点的子对象,并表示为有向边。对于每个孩子,重复上述步骤,直到分数用完为止。如果在任何迭代中都无法添加新的子项,这意味着您的约束使其无法到达间隔的最右边点……您正在进行广度优先搜索。

我经过一些思考后提出了这个问题

  • 将所有“至少”约束乘以-1,使其为以下形式:
  • -(l(i)+l(i+1)+…l(j))