Niech będzie najgorszym czasem działania problemu na wejściu wielkości . Uczyńmy ten problem nieco dziwnym, ustalając dla ale dla .
Więc jaka jest dolna granica problemu? Zrozumiałem, że to tylko dolna granica . Ale wiemy, że oznacza, że istnieje stała , taka, że dla wszystkich , , co nie jest prawdą. Wydaje się więc, że możemy powiedzieć tylko . Ale zwykle nazywamy problem dolną granicą , prawda?
Zakładając, że , co oznacza, że istnieje stała , taka, że dla wszystkich , . Załóżmy również, że problem ma czas działania . Jeśli możemy zmniejszyć ten problem dla wszystkich liczb pierwszych do innego problemu (przy tym samym rozmiarze wejściowym), czy możemy powiedzieć, że czas działania innego problemu ma dolną granicę ?
Odpowiedzi:
Prawidłowa definicja jest taka, że istnieje pewne takie, że dla nieskończenie wielu , . Nieskończenie często definicja dolnych granic obsługuje Twoje problemy i określa, w jaki sposób używamy jej w praktyce.f(n)=Ω(n2) k>0 n f(n)≥kn2
Napisałem o tym post w 2005 roku.
Niektóre podręczniki mają tę definicję, inne nie.
źródło
Dzięki definicji Knutha możesz twierdzić tylko . Jak widać, nie jest to intuicyjne i zdarza się, że funkcje Vitányi i Meertens nazywają „dzikimi”. Proponują zdefiniowanief(n)∈Ω(n)
(Jest to to samo, co definicja Lance'a). Przy tej definicji .f(n)∈Ω(n2)
źródło
Nie wiem o najczęściej używanych, ale wydaje mi się, że znam najstarsze użycie (w każdym razie do informatyki).
W artykule Hartmanisa i Stearnsa z 1965 r. „O złożoności obliczeniowej algorytmów” następstwem 2.1 jest:
gdzie jest klasą złożoności wszystkich problemów obliczalnych w . T (n) musi być zgodny z dla jakiejś liczby całkowitej oraz wszystkich i , ale nie musi być konstruowany w czasie.SK O(K(n)) T(n)≥n/k k n T(n)≤T(n+1)
Twoja funkcja przestrzega pierwszej reguły dla ale nie przestrzega drugiej reguły.k=1
Następstwem 2.2 jest wzajemność powyższego i wykorzystuje limit supremum, ale nadal ma te wymagania. Wydaje mi się, że z biegiem lat algorytmy stawały się coraz bardziej złożone, możliwe jest, że wymagania zostały złagodzone.
źródło
Myślę, że powinniśmy rozróżnić dwie rzeczy:
W przypadku funkcji, gdy ustalamy porządek, wynika z niego definicja dolnego / górnego ograniczenia . Jeśli relacją rzędu jest asymptotyczna dominacja (ignorowanie stałych czynników)
wtedy definicja jest zwykłą definicją i . Oba są szeroko stosowane w innych obszarach, takich jak kombinatoryka.ΩO Ω
Ale kiedy mówimy o dolnej granicy dla problemu (algorytmu), tak naprawdę chcemy powiedzieć, że problem wymaga pewnej ilości zasobów (do uruchomienia algorytmu rozwiązującego problem). Często klasy złożoności są parametryzowane przez funkcje takie jak , a my po prostu mówimy, że problem jest ograniczony przez funkcję, ale działa to tylko dla ładnych funkcji (np. Czas działania algorytmu jest monotoniczny itp.). Co chcemy powiedzieć w tych przypadkach jest to, że musimy czas pracy, aby rozwiązać problem, czyli mniej niż Czas pracy nie jest wystarczające, który formalnie staje definicję Lance, że czas działania algorytmu nie jest w .n 2 n 2 o ( t ( n ) )Time(t(n)) n2 n2 o(t(n))
źródło