为什么线性时间可简化很重要
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^n
和 h(n) = n+log(n))
.
通过将已知复杂度的现有问题归约来证明新问题的下界时,重点是线性时间减少。我猜测对于大于线性时间(比如大于线性 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^n
和 h(n) = n+log(n))
.