Jak wspomniano w odpowiedzi na powiązane pytanie, powszechnym sposobem, aby algorytm miał złożoność czasową O(log n) jest aby ten algorytm działał poprzez wielokrotne zmniejszanie rozmiaru danych wejściowych przez pewien stały współczynnik w każdej iteracji.
Co oznacza log n?
O(log N) zasadniczo oznacza czas rośnie liniowo, podczas gdy n rośnie wykładniczo. Jeśli więc obliczenie 10 elementów zajmie 1 sekundę, obliczenie 100 elementów zajmie 2 sekundy, 1000 elementów – 3 sekundy i tak dalej. Jest to O(log n), gdy wykonujemy algorytmy typu dziel i zwyciężaj, np. wyszukiwanie binarne.
Co to jest O i log n?
Dla danych wejściowych o rozmiarze n, algorytm O(n) wykona kroki proporcjonalne do n, podczas gdy inny algorytm O(log(n)) wykona kroki z grubsza log(n). Oczywiście log(n) jest mniejsze niż n, stąd algorytm złożoności O(log(n)) jest lepszy.
Jak obliczyć log n?
Pomysł polega na tym, że algorytm to O(log n), jeśli zamiast przewijać strukturę 1 na 1, dzielisz ją na pół raz za razem i wykonujesz stałą liczbę operacji dla każdego podziału. Algorytmy wyszukiwania, w których przestrzeń odpowiedzi jest dzielona, to O(log n).
Co to jest log n Square?
Log ^2 (
) oznacza, że jest proporcjonalna do log log dla problemu o rozmiarze
. Dziennik(
)^ 2 oznacza, że jestproporcjonalna do kwadratu log.