【问题标题】:Exponential vs Pseudopolynomial time指数与伪多项式时间
【发布时间】:2019-09-04 06:13:17
【问题描述】:

所以指数和伪多项式时间类别的不同之处在于“指数”分量是基于操作数相对于输入元素数(例如,假设 32 位整数元素的 32 位块)的增长方式前者与后者的位数。如果这是正确的,我目前还不能完全确定,如果有必要可以调整我的问题,

我在视频讲座和文本中看到伪多项式优于指数。

我的问题是,上面突出显示的陈述是否正确,如果是, 为什么?

【问题讨论】:

    标签: algorithm big-o dynamic-programming


    【解决方案1】:

    伪多项式时间复杂度是指多项式在 输入的值/大小(正在处理的输入的数量),但输入大小的指数(用于表示输入的位)。

    如果运行时间是输入数值的某个多项式,而不是表示它所需的位数,则算法在伪多项式时间内运行。例如,一些素数测试算法是伪多项式时间算法,因为它在时间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
    

    【讨论】:

    • 我想我明白了,我想花点时间消化一下。当我们渐近地谈论一个系统时,运行时间每位数增加的方式非常重要,但在更合理的值范围内,就像你说的那样,我们可以达到类似多项式的运行时间。
    猜你喜欢
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    相关资源
    最近更新 更多