Was ist das große O von T (n)?

7

Ich habe eine Hausaufgabe, bei der ich die Formel und die Reihenfolge von die durch gegeben istT(n)

T(1)=1T(n)=T(n1)T(n1)+1.

Ich habe festgestellt, dass aber jetzt bin ich ein wenig verwirrt. Ist die richtige Antwort für den zweiten Teil?T(n)=1nT(n)O(1n)

Basierend auf der Definition von Big-O haben wir das

O(g(n))={f(n)c,n0>0 s.t. 0f(n)cg(n) for all nn0}.

Dies gilt für . Basierend auf der Definition sollte korrekt sein, aber in der realen Welt ist dies unmöglich Dieser Algorithmus kann schneller als .f(n)=g(n)=1nO(1n)O(1)

Karo
quelle

Antworten:

8

Ja, alle Funktionen erfüllen . Die Definitionen sind auch dann sinnvoll, wenn nicht die Laufzeit einer Funktion ist. In der Tat stammt diese Notation aus der Zahlentheorie, wobei normalerweise ein Fehlerterm ist. Selbst in der Informatik werden manchmal große O-Notationen verwendet, wenn Algorithmen auf etwas anderes als Laufzeit- oder Platzanforderungen analysiert werden.f(n)f(n)O(f(n))f(n)f(n)

Yuval Filmus
quelle
Es sieht so aus, als ob der Unterschied darin besteht, dass mit wächst, wenn zunimmt, aber die Anzahl der Operationen zur Berechnung von ist wenn Sie zu vereinfachen oder wenn Sie die im Hausaufgabenproblem angegebene Definition direkt verwenden. T(n)1nnT(n)O(1)T(n)T(n)=1nO(n2)
Kevin
1
@ Kevin Die Frage sagt überhaupt nichts über die Anzahl der Operationen aus, die erforderlich sind, um etwas zu berechnen: Sie fragt nur nach der Lösung für eine Wiederholungsbeziehung. Lösungen für Wiederholungen müssen keine Laufzeiten für Algorithmen sein, genauso wie Zahlen keine Längen oder Gewichte sein müssen.
David Richerby