3

如果我将多项式时间子程序运行多项式次数,那么在指数时间内完成此操作的方式有哪些示例?

“表明对多项式时间子程序的多项式调用可能会导致指数时间算法。” - 硬件问题

4

3 回答 3

7

好吧,如果我们将此视为“肮脏的把戏”问题:

def g(a):
    b = 0
    for i in range(a * 2):
        b += 1
    return b

def f(x):
    a = 1
    for i in range(x):
        a = g(a)

g(a) 在 O(a) 中运行,f(x) 在调用 之前运行 O(x) 次g,但总体而言是O(2 ^ n)

于 2013-04-26T17:41:36.763 回答
1

你的问题有点令人困惑。但是,如果您将多项式时间子例程运行多项式次数,您将永远不会得到指数时间函数。在运行多项式时间子例程多项式次数后,您仍将获得多项式时间运行时间复杂度。

例如,如果您以n 2复杂度n 3次运行子例程,则生成的算法将具有n 5运行时间复杂度,这仍然是多项式时间算法。

于 2013-04-26T17:29:54.090 回答
0

f(a) = 2^a

g(b) =总和=0;对于 (i = 1..b) sum=sum+i

f(a) 是 O(n)

g(b) 是 O(n)

g(f(a)) 是指数的

于 2013-04-27T08:07:46.550 回答