Wenn O (log n) gegen O (n) exponentiell ist, was ist O (1) gegen O (n)?

7

Wenn man die Verwendung eines O(log n)anstelle eines O(n)Algorithmus als exponentielle Beschleunigung bezeichnet, wie würde man dann die Beschleunigung bezeichnen, die durch die Verwendung eines O(1)Algorithmus gegenüber einer erzielt wurde O(n)?

user695652
quelle

Antworten:

4

Es gibt keinen Namen dafür, aber der nächste wäre "unendliche" Beschleunigung. O(logn) wird als exponentielle Beschleunigung angesehen O(n), weil n ist exponentiell in logn: wenn wir die Exponentialfunktion übernehmen f(n)=2n, wir bekommen f(logn)=2logn=n.

Jedoch, n ist nichts drin 1: Es gibt keine Möglichkeit, sich zu erholen n von 1, egal wie schnell die Funktion f das wir nehmen wächst f(1) wird immer eine Konstante sein (und niemals gleich n). Wien, 1 wird unendlich kleiner als n.

Tom van der Zanden
quelle
-1

Ihre Verwirrung scheint mit der technischen Bedeutung des Wortes "exponentiell" zu zusammenhängen.
Da die Definition in http://www.learnersdictionary.com angegeben ist , ist sie definiert als:

Exponentielles Wachstum ist buchstäblich Wachstum, das im weiteren Verlauf immer schneller wird. Im normalen Gebrauch bedeutet Exponential jedoch einfach „sehr schnell“, wenn es mit Worten wie Wachstum und Zunahme verwendet wird.


Betrachten wir nun ein Beispiel mit n = 256 (der Einfachheit halber eine Zweierpotenz). Wenn n = 256, dann ist \ log_2 n = 8. Dies ist aufgrund der Protokollfunktion eine "exponentielle" Beschleunigung.
In Bezug auf O (1) müssen Sie erkennen, dass \ log_n n = 1 im Allgemeinen ist. Wenn dies gesagt ist, wird O (1) auch eine ideale "exponentielle" Beschleunigung sein.
Hoffe das macht die Dinge klar.

Syed Ali Hamza
quelle