给定约束

时间:2015-04-27 14:13:14

标签: algorithm graph

我一定是在这个问题上敲了几个小时;它如下(转移删除愚蠢的故事和背景):

  

给定有N个点的间隔,每个点都有一个点   最终,和一系列限制最多相隔多远   成对的点可以和至少相隔多远的一对   必须点,尽量最大化间隔的长度。要点   可以重叠。

似乎归结为:

  

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

     

l(i)+ l(i + 1)+ .... l(j)< = C,或l(i)+ l(i + 1)+ .... l(j)> ; = C,

     

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

我在Maths Stackexchange上犹豫不决,因为这是图搜索算法算法课后的练习的一部分;你看到一种方法可以将其转化为图形问题吗?你怎么解决它?

感谢。

2 个答案:

答案 0 :(得分:0)

如何将其转换为图形问题:按升序对数字进行排序。拿最小的一个,这将是' root',(最左边)的起点。然后选择满足约束的下N个元素,即从起点可到达。这些将是起点的孩子,并被表示为有向边。为每个孩子重复上述程序,直到你用完为止。如果在任何迭代中你无法添加新的孩子,那意味着你的约束使得无法到达间隔的最右边点...你有点做广泛的第一次搜索。

答案 1 :(得分:0)

我想出了一些想法之后想出来了

  1. 将所有"至少"相乘约束为-1,因此它们采用以下形式:
  2.   

    - (l(i)+ l(i + 1)+ ... l(j))< = -C

    1. 将所有"放在最多"约束和消极"至少"约束在一起制作矩阵。

    2. 执行"高斯消除的形式"在矩阵上,注意不平等的添加方式

    3. 遍历矩阵并尝试汇总一个总和。这一步应该很简单。

    4. 没有有效解决方案和无限多解的情况应该以类似于用于求解线性方程组的正规矩阵的方式检测。

      你有什么想法?