|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
Asymptotyczne tempo wzrostu jest miarą określającą zachowanie wartości funkcji wraz ze wzrostem jej argumentów. Stosowane jest szczególnie często w teorii obliczeń, w celu opisu złożoności obliczeniowej, czyli zależności ilości potrzebnych zasobów (np. czasu lub pamięci) od rozmiaru danych wejściowych algorytmu. Asymptotyczne tempo wzrostu opisuje jak szybko dana funkcja rośnie lub maleje, abstrahując od konkretnej postaci tych zmian. Do opisu asymptotycznego tempa wzrostu stosuje się notację dużego O (zwaną też notacją Landaua od nazwiska niemieckiego teoretyka liczb Edmunda Landaua, który ją spopularyzował), oraz jej modyfikacje, m.in. notacja Ω (duża omega), Θ (theta).
edytuj Definicje analityczne
Niech będą dane funkcje f oraz g, których dziedziną jest zbiór liczb naturalnych, natomiast przeciwdziedziną zbiór liczb rzeczywistych dodatnich. edytuj Notacja "duże O"Mówimy, że f jest co najwyżej rzędu g, gdy istnieją takie stałe n0 > 0, oraz c > 0, że: ![]() Zapis: f(n) = O(g(n)) Określenia "złożoność co najwyżej O(f(n))" i "złożoność O(f(n))" są matematycznie równoważne. Wersja notacji dla zachowania się funkcji w pobliżu punktu
.Należy zauważyć, że nie precyzuje się tu dziedziny funkcji edytuj Notacja "małe o"Mówimy, że f jest niższego rzędu niż g, gdy dla każdej stałej c > 0 istnieje stała n0 > 0, że: ![]() Zapis: f(n) = o(g(n)) edytuj Notacja "Ω"Mówimy, że f jest co najmniej rzędu g, gdy istnieją takie stałe n0 > 0, oraz c > 0, że: ![]() Zapis: f(n) = Ω(g(n)) edytuj Notacja "ω"Mówimy, że f jest wyższego rzędu niż g, gdy dla każdej stałej c > 0 istnieje stała n0 > 0, że: ![]() Zapis: f(n) = ω(g(n)) edytuj Notacja "Θ"Mówimy, że f jest dokładnie rzędu g, gdy istnieją takie stałe n0 > 0, oraz c1 > 0 i c2 > 0, że: ![]() Zapis: f(n) = Θ(g(n)) Można powiedzieć, że f(n) = Θ(g(n)), gdy f(n) jest jednocześnie rzędu O(g(n)) i Ω(g(n)). edytuj UwagiZnak "=" nie oznacza tutaj równości, jest on zdefiniowany przez podane wyżej określenia. Notacja dużego O pozwala wykonywać działania na funkcjach, na przykład:
Wygoda notacji dużego O widoczna jest w następującej sytuacji: jeżeli f(x) = 2x3 − x2 + 100x, to można napisać zarówno f(x) = O(x3), jak i f(x) = 2x3 + O(x2), czy wreszcie f(x) = 2x3 − x2 + O(x), zależnie od wymaganej dokładności oszacowań. Napis edytuj Zależności algebraiczne O, o, Ω, ω, Θ
edytuj Przykłady
edytuj Standardowe oszacowaniaW zastosowaniach szczególnie często notacja O-duże pojawia się w następujących sytuacjach:
edytuj Rząd złożoności obliczeniowejW zależności od asymptotycznego tempa wzrostu, funkcje dzieli się na rzędy złożoności obliczeniowej. Najczęściej wyróżnia się:
edytuj ZastosowanieNajczęstszym zastosowaniem asymptotycznego tempa wzrostu jest szacowanie złożoności problemów obliczeniowych, w szczególności algorytmów. Oszacowanie rzędów złożoności obliczeniowej funkcji pozwala na porównywanie ilości zasobów (np. czasu, pamięci), jakich wymagają do rozwiązania problemu opisanego określoną ilością danych wejściowych. W dużym uproszczeniu można powiedzieć, że im niższy rząd złożoności obliczeniowej algorytmu, tym będzie on wydajniejszy. W praktyce na efektywność algorytmu wpływa duża ilość innych czynników, w tym szczegóły realizacji. Ponadto dla małych danych wejściowych asymptotyczne tempo wzrostu może nie oddawać zachowania funkcji - np. gdy edytuj Zobacz też |
| All Right Reserved © 2007, Designed by Stylish Blog. |