/ / Nested Polynomial-Time Funktionen - Algorithmus, Komplexitätstheorie, Polynom-Mathematik

Nested Polynomial-Time Funktionen - Algorithmus, Komplexitätstheorie, Polynom-Mathematik

Wenn ich ein Polynom-Zeit-Subroutine ein Polynom Anzahl Male, was sind einige Beispiele für eine Art, dass dies in der exponentiellen Zeit getan wird?

"zeigen, dass eine polynomische Anzahl von Aufrufen zu Polynomzeit-Unterprogrammen möglich ist Ergebnis in einem Exponentialzeit-Algorithmus. "- ein Problem einer HW

Antworten:

6 für die Antwort № 1

Nun, wenn wir das als eine "schmutzige Trick" -Frage behandeln:

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) läuft in O (a), f (x) läuft in O (x) Zeiten vor dem Aufruf nach g, aber insgesamt ist es O(2 ^ n).


1 für die Antwort № 2

Ihre Frage ist ein wenig verwirrend. Aber wenn Sie eine polynomielle Zeitunterroutine eine Polynomzahl mehrmals ausführen, werden Sie niemals eine exponentielle Zeitfunktion erhalten. Nachdem Sie eine polynomielle Zeitunterroutine mehrmals polynomiell ausgeführt haben, erhalten Sie immer noch eine Polynomzeit-Laufzeitkomplexität.

Zum Beispiel, wenn Sie eine Unterroutine mit ausführen n2 Komplexität n3 Anzahl der resultierenden Algorithmen n5 Laufzeitkomplexität, die immer noch ein Polynomialzeitalgorithmus ist.


0 für die Antwort № 3

f (a) = 2 ^ a

g (b) = Summe = 0; für (i = 1..b) Summe = Summe + i

f (a) ist O (n)

g (b) ist O (n)

g (f (a)) ist exponentiell