Problem: Finden Sie die beste Möglichkeit, eine Stange der Länge zu schneiden n Jeder Schnitt ist Integerlänge Nehmen Sie an, dass jede Länge i Stab hat einen Preis p (i) Gegeben: Stab der Länge n und eine Liste von Preisen p, die den Preis für jede mögliche ganze Zahl zwischen 0 und n angibt.Finden der zeitlichen Komplexität eines Exponentialalgorithmus
Finden Sie den besten Satz von Schnitten, um den Höchstpreis zu erhalten Kann eine beliebige Anzahl von Schnitten verwenden, von 0 bis n-1 Es gibt keine Kosten für einen Schnitt.
Nachstehend präsentiere ich einen naiven Algorithmus für dieses Problem.
CUT-ROD(p,n)
if(n == 0)
return 0
q = -infinity
for i = 1 to n
q = max(q, p[i]+CUT-ROD(p,n-1))
return q
Wie kann ich beweisen, dass dieser Algorithmus exponentiell ist? Schritt für Schritt. Ich kann sehen, dass es exponentiell ist. Ich kann es jedoch nicht beweisen.
Sollte der rekursive Aufruf nicht 'CUT-ROD (p, n - i)' sein? Ansonsten kann sich die Gesamtlänge der Schnitte auf mehr als die Länge der Stange addieren. –
Wie geschrieben, kann man durch Induktion beweisen, dass 'CUT-ROD (p, n)' n macht! total rekursive Aufrufe (für n> = 1). –
OK, Paul. Aber wie können wir das tun? Kannst du mir helfen? – Zaratruta