【问题标题】:Why is linear time reducible important为什么线性时间可约重要
【发布时间】:2020-03-14 19:19:04
【问题描述】:

当通过减少已知复杂度的现有问题来证明新问题的下限时,重点是线性时间减少。我有点猜测,对于大于线性时间(例如大于线性 omega n 的 omega n^2),我们无法比较这两个问题。但是怎么正式说呢。

另外,假设已知问题是 omega n^3。现在欧米茄 n^2 减少是否可以安全地证明未知问题具有 n^3 复杂性?

【问题讨论】:

  • ... linear time (say omega n^2) 线性时间不在Omega(n^2) 中。我认为您混淆了问题的复杂性(即 Omega)和归约的复杂性。能否请您复习一下问题并澄清一下?
  • 你是想说polynomial complexity吗?
  • 同样,归约是将一个问题转化为另一个问题的过程(或用另一个问题的解决方案来解决问题)。如果你证明一个 n^3 的问题可以通过一个 n^2 算法来解决,那么这个问题一开始就不是 n^3。
  • @Daniel 如果您花时间O(n^2) 将问题简化为可以在O(n^3) 中解决的问题,那么这会及时解决最初的问题O(n^3)。我相信,这就是海报想要描述的情况。
  • @amit 我的意思是 n^2 不是线性的。我已经更改了句子以使其更清楚。感谢您的回复。

标签: algorithm complexity-theory


【解决方案1】:

这是正式声明。

假设A类问题可以及时解决O(f(n)

假设问题 B 可以在时间 O(g(n)) 上缩减为大小为 h(n) 的问题。

那么我们可以及时解决问题BO(g(n) + f(h(n)))

理想情况下,我们希望减少速度很快,并且问题不会太大。你通常不能做得比线性时间减少更好,因为它需要线性时间才能进入问题。这就是为什么这是理想的原因。

请注意,如果f(n) 具有多项式上限,则“h(n) 大小的问题”可以放宽为“O(h(n)) 大小的问题”。这通常是正确的,并且可以节省很多精力。然而,这种简化失败的例子是f(n) = 2^nh(n) = n+log(n))

【讨论】:

  • @rajesh 你总是得到一个下限。你可能得不到一个非常的下限。举个例子,NP 中的任何问题都可以简化为 NP 完全问题,这为您提供了一个下限。但它往往是一个穷人。但是,如果您手边有一个 SAT 求解器,这可能仍然是一个有用的尝试。
  • 感谢您的回答。因此,如果 g(n) 的阶项低于 f(h(n)),则基本上 O(g(n) + f(h(n))) 为 O(fh(n))。我有这种直觉。但是,问题是声称 B 有一个下界(在线性归约中等于 A),A 的实例应该归约为 B。
  • 对不起。 5 分钟后我无法编辑我的评论。所以我在删除旧的后发布了一个新的。我没有看到你的回复。
猜你喜欢
  • 2013-01-03
  • 1970-01-01
  • 2016-09-03
  • 2020-04-12
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多