Co to jest asymptotycznie ciasna górna granica?

15

Z tego, czego się nauczyłem, asymptotycznie ścisłe wiązanie oznacza, że ​​jest ono wiązane od góry i od dołu jak w notacji theta. Ale co oznacza asymptotycznie ciasna górna granica dla notacji Big-O?

Vivek Kumar
źródło
To też mnie zdezorientowało. Dlaczego autorzy nie mogą powiedzieć „theta”? Po co wymyślać niepotrzebne warunki?
beroal

Odpowiedzi:

21

Powiedzenie, że granica wielkiej litery O jest „asymptotycznie ciasna” oznacza w zasadzie, że autor powinien napisać . Na przykład O ( x 2 ) oznacza, że ​​jest to nie więcej niż kilka stałych czasów  x 2 dla wszystkich wystarczająco dużych  x ; „asymptotycznie ciasny” oznacza, że ​​tak naprawdę są to stałe czasy  x 2 dla wystarczająco dużego  x, a nie, powiedzmy, pewne stałe czasy  x 1,999 .Θ()O(x2)x2xx2xx1.999

David Richerby
źródło
13

Oto przykład wyjaśniający to (i konkretny przykład dobrej odpowiedzi Davida).

Załóżmy, że masz algorytmu, który jest podany na wejściu tablicę liczb całkowitych . Algorytm skanuje tablicę i inkrementuje licznik początkowo ustawiony na zero za każdym razem, gdy widzi element, który jest parzystą liczbą całkowitą. Można udowodnić uruchamia algorytm powiedzmy O ( N 3 ) czasu, w którym n oznacza liczbę elementów A . Ale możemy również podać ściślejszą granicę i powiedzieć, że biegnie w czasie O ( n ) . Ta granica jest asymptotycznie ciasna: w rzeczywistości, ponieważ odczyt danych zajmuje już czas Ω ( n ) , możemy być bardziej precyzyjni i powiedzieć, że algorytm zajmujeAO(n3)nAO(n)Ω(n) czas.Θ(n)

Juho
źródło
3
+1, ale myślę, że niebezpieczeństwem w twoim przykładzie jest to, że można błędnie zinterpretować twierdzenie, że aby górna granica była asymptotycznie ciasna, musi być tak, że nie jest możliwy szybszy algorytm dla tego problemu, jeśli nie jest to prawdą. (Mówię to, ponieważ ilekroć widzę obserwację „Potrzebujesz czasu co najmniej do odczytania danych wejściowych”), służy ona do uzasadnienia twierdzenia, że ​​„nie może istnieć szybszy algorytm”.)Ω(n)
j_random_hacker
1
@j_random_hacker Masz rację, powinniśmy być z tym ostrożni. Mówiąc jeszcze raz, oczywiście asymptotycznie ścisłe ograniczenie nie mówi nic o możliwości posiadania szybszego algorytmu w ogóle.
Juho