Notacja Big O zapewnia górną granicę funkcji, podczas gdy Big Theta zapewnia ścisłą granicę. Uważam jednak, że notacja Big O jest zwykle (i nieformalnie) nauczana i stosowana, gdy naprawdę mają na myśli Big Theta.
np. „Quicksort to O (N ^ 2)” może przekształcić się w znacznie silniejsze zdanie „Quicksort to Θ (N ^ 2)”
Chociaż użycie Big O jest technicznie poprawne, czy bardziej powszechne stosowanie Big Theta nie byłoby bardziej wyraziste i nie prowadziło do mniejszego zamieszania? Czy jest jakiś historyczny powód, dla którego ten Big O jest częściej używany?
Notatki Wikipedii :
Nieformalnie, szczególnie w informatyce, często dopuszcza się nadużywanie notacji Big O w celu opisania asymptotycznej ścisłej więzi, w której użycie notacji Big Theta może być bardziej odpowiednie w danym kontekście.
Odpowiedzi:
Ponieważ zazwyczaj interesuje Cię najgorszy przypadek podczas analizy wydajności. Zatem znajomość górnej granicy jest wystarczająca.
Gdy działa on szybciej niż oczekiwano dla danego wejścia - to dobrze, nie jest to punkt krytyczny. To w większości nieistotna informacja.
Niektóre algorytmy, jak zauważył @Peter Taylor, wcale nie są ściśle powiązane. Zobacz na przykład quicksort, który jest O (n ^ 2) i Omega (n).
Co więcej, ciasne granice są często trudniejsze do obliczenia.
Zobacz też:
źródło
Jednym z powodów jest to, że istnieje wiele przypadków, w których Θ po prostu nie jest znany. Na przykład, mnożenie macierzy wynosi O (n ^ 2,376), ale nie ma znanych ścisłych ograniczeń. Oczywiście, o ile mogę powiedzieć, że jest mocno związany na mnożenie macierzy, ale nie znamy jego wartość.
źródło