一次编程的线性编程解决方案,带有有序变量


9

我遇到了一系列线性编程问题:最大化 cx 服从 Axbx0。的要素Abc 是非负整数 c严格肯定。(x 也应该是必不可少的,但我稍后会担心。)

在我的应用程序中经常会遇到系数 Ac 简化的单程算法为每种选择提供了最佳解决方案 b:单遍算法确定元素 x1,,xn 依次选择每个 xj 尽可能与已确定的值一致 x1,,xj1。在单纯形语言中,输入变量的顺序只是x1xn,它在之后终止 n脚步。与完整的单纯形相比,这节省了大量时间。

当以下列的列 A 和的元素 c从“便宜”到“昂贵”排序。“便宜”变量是A 通常具有较小的值,为此, c 很大:对于 x 您会获得很多输出,并且对约束的需求不是很高 b。因此该算法只是说“先做简单的事情”。

我的问题是: Ac 可以向我们保证,这种简化算法适用于所有 b?我最初的猜想是A 应该在每一行中增加,但这是不正确的。

这是一些例子 c=(1,1,1)A1=(111123320)A2=(001302032)A3=(111100101)A4=(101010011)。对于所有这些,顺序算法为的所有值提供了最佳解决方案。b (通过数值实验)。 A3 是所有列排列也适用的唯一方法。 A1A3 特别令人困惑,因为 (1,1,3) 看起来比 (1,3,0)(1,1,1) 比。。。更贵 (1,0,0)

我将非常感谢您提供任何有关文学的指导,此类问题或任何建议。肯定还有其他情况,其中某些变量可以确定为比其他变量“便宜”,并且可以安全地首先完成。多年来,在线性编程方面已经完成了所有工作,似乎必须提出类似的建议,但我一直找不到。

Answers:


4

对于运输问题的特殊情况,可能最著名的例子是用贪婪算法解决LP。霍夫曼(“简单线性程序”,在“ 性”中,《纯数学研讨会论文集》第7卷,第317-327页,1963年)证明,如果(最大化)运输问题的成本矩阵满足Monge属性cij+cklcil+ckj 什么时候 1i<kn1j<ln),然后可以像您描述的那样以贪婪的方式找到最佳解决方案。

霍夫曼(Hoffman)也有一份1985 的调查论文(“ 成功的贪婪算法 ”),他讨论了贪婪算法为LP提供最佳解决方案的已知案例。除了上面引用的他自己的著作(他说:“ [到1963年时,已知大多数容易受到贪婪算法影响的线性编程问题都是Monge想法的特例”),他还提到了Edmonds对a的线性编程解释。拟阵的一般化和对时的讨论A 是非负的。

我想会有更多的最新结果,但希望这至少可以部分回答您的问题,并为您提供一些其他方面的想法。


2
我要感谢斯皮维教授的建议。我花了一些时间来查找参考文献,但我将提供更完整的描述作为答案。
罗伯特·阿尔姆格伦

3

多亏了Spivey教授的建议,我终于找到了我认为最先进的技术:Ulrich Faigle,Alan J. Hoffman和Walter Kern,“非负Box-Greedy矩阵的表征”,SIAM J. Disc。数学。9(1996)1-6。如果上述算法为所有矩阵提供了最优解,则矩阵为“贪心”b。如果贪心算法在附加条件下给出最优解,则矩阵为“盒贪心”xd 对所有人 b 和所有 d0。显然,盒子贪婪是比贪婪更强的条件。

始终假设 c1cn>0。Faigle,Hoffman和Kern证明了A 是盒子贪婪,当且仅当它没有 k×(k+1) (对于任何 k)形式的子矩阵 (r1s1r2s2rksk) 与每个 rj>0i:si>0risi>1。在提取子矩阵时,允许对行进行任意排列,但不允许对列进行排列,并且允许对行和列进行任意子集。因此,特别是k=1,每行中的非零元素 A 必须不减少。

不幸的是,事实证明,虽然我仍然相信矩阵是贪婪的,但在我的问题中矩阵不是盒贪婪的。例如,在我的A1上面的条件被违反,尽管这个矩阵是贪婪的,但它不是盒子贪婪的。据我所知,识别贪婪矩阵没有任何结果。


我很高兴我的回答帮助您找到了这个!
Mike Spivey

3

诸如此类的最简单的示例可能是分数背包问题,其中允许对项目进行分数化。这个问题(及其lp双重)可以通过按重量分配项目,按此顺序选择最长的序列(可行的方式)并将最后的项目进行细分来解决。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.