2016-10-02 5 views
4

In welche große O-Klasse würde die Funktion (1/2)^n fallen?Große O-Klasse für (1/2)^n

Auf einer rein mathematischen Basis scheint es so, als müssten wir es in O (1) schreiben, weil 1/2^n für jedes ausreichend große n 0 ist.

Wenn es jedoch um asymptotische Analyse und Big O geht, tendieren wir dazu, viel Hand-Winken zu machen und auch auf Formeln zurückzugreifen. 1/2 ist technisch eine Konstante, so würde scheinbar in O (c^n) fallen.

Ich lehne mich nach O (c^n), weil das Sagen von "halber Operation" keinen Sinn macht, wenn man von Algorithmen spricht. Welcher Algorithmus benötigt die Hälfte der Zeit, wenn die Eingabe größer wird? Im besten Fall sehe ich die mathematische Formel (1/2)^n, die sich auf die Hälfte einer Zeitkonstante bezieht - etwa eine Minute. Also (30 Sekunden) wird^n zu einer großen Zahl und die Funktion gehört eindeutig in O (c^n).

Ein wenig Hilfe?

+0

Abnehmende Funktionen werden in der Laufzeit-/Raumkostenanalyse nicht häufig verwendet, aber Sie sehen sie ständig in der Analyse numerischer Fehler. Da ist der Unterschied zwischen 1 und 1/n und 1/2^n wirklich wichtig. Natürlich ist 1/n trivialerweise O (1), da Big-O wie <= ist. Vielleicht wollten Sie stattdessen nach Big-Theta fragen? –

+0

Ich versuche, eine Reihe von mathematischen Funktionen in der Reihenfolge von der kleinsten Reihenfolge des Wachstums bis zum höchsten zu platzieren. Die obige Funktion ist eine davon. Und ich versuche herauszufinden, ob es darunter gehört, sagen wir O (logn) oder darüber, sagen wir O (n^3). – zzu

+0

So sicher, funktioniert Big Theta ... was Big Theta Klasse ist (1/2)^n in? – zzu

Antwort

2

Die Funktion 0,5 n ist O (1) sowie O (c) für jede c> 0 (it nichtO (0), da 0,5 n> 0 für irgendeinen n).

Es ist auch o (1) (Hinweis little o).

Es ist nicht Θ (c) für jede konstantec. Wenn c = 0, ist das Problem, dass 0,5 n> c für alle n. Für jede c> 0, lim n → ∞ 0,5 n < c.


Persönlich denke ich, dass sagen, dass es Θ (0,5 n) ist ist die stärkste und genaueste Aussage hier.

+1

Danke, @Am_I_Hilfful! –

0

Sie können keinen O (1/2^N) -Algorithmus schreiben, denn wenn N gegen unendlich geht, wird die Laufzeit infinitesimal, was physikalisch nicht möglich ist. Sie können nicht weniger als eine "Operation" haben.

+4

Big-O beschreibt nicht ausschließlich zeitliches Verhalten. –

+0

Ich stimme nicht zu. Eine der Hauptanwendungen von Big-O ist die Beschreibung der "Zeitkomplexität". Ich glaube nicht, dass dies in der Informatik beim Vergleich von Algorithmen ungewöhnlich ist. – zzu

+0

@Malcolm McLean Ich bin geneigt, Ihnen zuzustimmen. Es kann sein, dass dies im Zusammenhang mit Algorithmen keinen Sinn macht. Ich dachte jedoch, ich würde nachsehen, ob es schon eine gewisse Übereinstimmung über diese Art von Funktion gibt. Ich weiß, dass ich es anderswo gesehen habe, aber ich habe es noch nie explizit gesehen. – zzu