为什么使用线性整数编程(ILP)虽然是NP-Complete?

时间:2016-02-12 11:53:48

标签: np-complete integer-programming

这个问题可能很愚蠢,但很长一段时间我都很困惑。

我在无线传感器网络上阅读了很多论文。许多研究人员将他们的问题模型化为ILP。但是,ILP是NP-Complete,因此解决问题效率不高。

那么为什么人们将他们的问题写成ILP?他们这样做是为了让他们的问题清晰易懂吗?或者我是否在理解ILP和NPC之间的关系时犯了一些错误?

非常感谢您能帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

虽然这个问题可能被认为是偏离主题的,但基本上还有几点需要解决。

  1. 你是对的,一般整数线性规划是NP - 很难。
  2. 如果需要解决一个特定问题,并且通用整数线性规划是最具体的方法来制定它,那么就无法做任何事情;有些问题很难解决。
  3. 在某些情况下,可以使用LP松弛来代替,因为可以证明启发式或某种近似比率。
  4. 这里的关键点是整数线性规划是一种表达问题的普遍形式。基本上我把你的问题理解为以下问题。

      

    "为什么人们使用算法难以解决的模型   描述实际问题?"

    好吧,如果这个缺点一般可以避免,那么就排序来表达每个问题是个好主意,这在算法上很容易。

答案 1 :(得分:0)

NP-hard指的是算法的复杂性在最坏的情况下。对于大多数NP难问题,我们有有效的算法(启发式或精确的),即使在最坏的情况下表现不佳,也能在<大部分时间中表现良好。因此,ILP在实践中是一个非常有用的工具,即使存在一些不能很好地解决的问题。

我有一把锤子。有一些工作,我的锤子是没有好处,或将需要很长时间。但它仍然是一个非常有用的工具,因为它可以为我做很多工作。

ILP在很多方面都是一样的。