如何将线性规划(LP)问题的凸包表示为积分?有没有通用的技术来执行此操作?
答案 0 :(得分:3)
在公式的意义上,线性程序产生具有(通常)分数极值点的多面体。如果你想要解决这个问题,那么在多面体上没有任何改变/操纵的东西。
如果你有一个(混合)整数线性程序(MIP),你可能会对它的整数点的凸包的描述感兴趣。通常,这可以用于快速求解过程,因为您可以在不执行分支定界过程的情况下解决其线性松弛问题。
这意味着,MIP的线性松弛给出了包含这个凸包的多面体 - 它本身不需要整数极值点。在许多情况下,你想要将这个公式收紧到整数点的凸包,这是由通常的求解器完成的(例如通过添加不等式)。 目的是始终获得所述凸包的配方。然而,发现这种配方通常是NP难的(因此没有已知的通用技术来容易地获得它)。特别是这意味着,这种公式的大小(即不等式的数量)可以是指数级的。
用于计算整数点(或一般多面体)的凸包的算法,但它们并不简单且不“快”。可以帮助您的软件可能是Porta或Polymake。
有些属性描述多面体/公式何时为整数。例如。其中一个名称为total (dual) unimodularity。以这种方式制定您的问题或识别这个属性并不容易,我不知道这样做的任何结构方法。
我希望这会有所帮助:)
亲切的问候,
马丁
答案 1 :(得分:1)
为上面的Martin回答添加一点(我认为评论太长了):
我所知道的一般程序称为Chvátal-Gomorry程序,它允许通过添加Gomorry切割来最终描述凸包。这在理论上非常有趣;然而,有一个众所周知的例子,这个过程需要n
步骤(LP中的参数)来解决具有两个变量和两个约束的问题,即添加的切割数量不能受到大小的限制。问题
完全单模矩阵在图论中出现的问题很常见,但它肯定不是一种“通用”方法:你可以通过A
矩阵的系数必须是定义来说服自己TU矩阵中的0,1或-1,当然在ILP中通常不是这种情况。
当然,由于求解LP是多项式并且求解ILP是NP完全的,人们不能指望有一种通用的有效方法来做你期望的事情,因为这几乎会将ILP减少到LP!
但是如果你特别研究一个问题,特别是如果它有一个简单的结构,它可能是上述两种方法之一有效的“特殊情况”之一。
如果您有兴趣,我可以在本周末提供进一步的参考资料。