【发布时间】:2019-09-04 06:13:17
【问题描述】:
所以指数和伪多项式时间类别的不同之处在于“指数”分量是基于操作数相对于输入元素数(例如,假设 32 位整数元素的 32 位块)的增长方式前者与后者的位数。如果这是正确的,我目前还不能完全确定,如果有必要可以调整我的问题,
我在视频讲座和文本中看到伪多项式优于指数。
我的问题是,上面突出显示的陈述是否正确,如果是, 为什么?
【问题讨论】:
标签: algorithm big-o dynamic-programming
所以指数和伪多项式时间类别的不同之处在于“指数”分量是基于操作数相对于输入元素数(例如,假设 32 位整数元素的 32 位块)的增长方式前者与后者的位数。如果这是正确的,我目前还不能完全确定,如果有必要可以调整我的问题,
我在视频讲座和文本中看到伪多项式优于指数。
我的问题是,上面突出显示的陈述是否正确,如果是, 为什么?
【问题讨论】:
标签: algorithm big-o dynamic-programming
伪多项式时间复杂度是指多项式在 输入的值/大小(正在处理的输入的数量),但输入大小的指数(用于表示输入的位)。
如果运行时间是输入数值的某个多项式,而不是表示它所需的位数,则算法在伪多项式时间内运行。例如,一些素数测试算法是伪多项式时间算法,因为它在时间O(n^4) 上运行,但它不是多项式时间算法,因为作为写出输入所需的位数 x 的函数,运行时间是 @987654324 @。
伪多项式比指数“更好”,因为当输入的大小可以限制为小尺寸时,它具有多项式运行时间。可以利用这一特性。
注意:deep dive 已在 stackoverflow 上找到
算法示例:Prime 测试 (可在this问题中找到)
function isPrime(n):
for i from 2 to n - 1:
if (n mod i) = 0, return false
return true
【讨论】: