Big-O-Notation mit zwei Variablen

8

Das kommt vom Schreiben eines Programms, finde den Median von zwei sortierten Arrays mit der Größe m bzw. n , mit der zeitlichen Komplexität von O(log(m + n)) .

Ich kann eine Lösung von O(log(m) + log(n)) ausarbeiten. Erfüllt es die obige Zeitanforderung?

Ich denke, es ist positiv, weil:

log(m) + log(n) = log(m*n) <= log((m+n)^2) = 2*log(m+n) = O(log(m+n))

Anders ausgedrückt, existieren k = 2 und m0 = n0 = 1 . Für m > m0 and n > n0 gibt es log(m*n) <= k*log(m + n) .

Gibt es einen Fehler, oder habe ich Recht?

Allgemeiner, können wir bei gegebener Konstante a log(n^a) = O(log(n)) mit derselben Argumentation sagen?

Danke an Davids Antwort. Dies wird auch von Big-O Notation auf Wikipedia erwähnt:

"We may ignore any powers of n inside of the logarithms. The set O(log n) is exactly the same as O(log(n^c))."

    
Eric Z 02.10.2015, 12:53
quelle

1 Antwort

6

Ja, Sie haben in allen Punkten Recht. Log wächst langsam genug, dass die asymptotische Klasse nicht sehr empfindlich auf die Funktion im Inneren reagiert.

    
David Eisenstat 02.10.2015, 13:12
quelle

Tags und Links