Meine iterative DP Lösung wird wie folgt dar:Permutationen Laufzeitanalyse: Iterative DP Lösung
def permutations(string):
# let n = len(string)
N = [[] for _ in range(len(string) + 1)] # O(n)
N[0].append("")
for i in range(1, len(string) + 1): # O(n)
N[i] = [perm[:j] + string[i - 1] + perm[j:] for j in range(i) for perm in N[i - 1]] # O(???)
return N[-1]
Aber ich habe Probleme mit der Laufzeit des obigen Programms zu analysieren. Insbesondere begrenzt die Laufzeit der Linie for perm in N[i - 1]
. Ich bin mir bewusst, dass die rekursive Lösung O(n!)
ist, aber wie können wir die Laufzeit des obigen Programms finden, ohne auf die rekursive Laufzeit zu vertrauen?