为什么线性时间可简化很重要

Why is linear time reducible important

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

此外,假设已知问题是 omega n^3。现在 omega n^2 归约是否可以安全地证明未知问题具有 n^3 复杂性?

这里正式声明。

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

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

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

理想情况下,我们希望减少速度快,并且问题不会爆发太多。你通常不能比线性时间减少做得更好,因为仅仅输入问题就需要线性时间。这就是理想的原因。

注意,如果f(n)有一个多项式上界,那么"a problem of size h(n)"可以放宽到,"a problem of size O(h(n))."这通常是正确的,而且省了很多力气。然而,这种简化失败的例子是 f(n) = 2^nh(n) = n+log(n)).