Project Gutenberg
Contents Listing Alphabetical by Author:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Unknown Other
Contents Listing Alphabetical by Title:
# A B C D E F G H I J K L M N O P Q R S T U V W Y Z Other

Amazon - Audible - Barnes and Noble - Everand - Kobo - Storytel 

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Asymptotyczne tempo wzrostu - Wikipedia, wolna encyklopedia

Asymptotyczne tempo wzrostu

Z Wikipedii

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).

Spis treści

[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:


\begin{matrix}
\forall & f(n) \leq c \cdot g(n) \\
{}^{n \geq n_0}
\end{matrix}

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 a\,:

f(n)=O(g(n)) \,, jeżeli istnieje takie c>0\, i takie n_0 > 0\,, że dla dowolnych x\, takich, że |x-a|<\delta\, zachodzi nierówność

|f(x)| \leq c \cdot |g(x)|.

Należy zauważyć, że nie precyzuje się tu dziedziny funkcji f\, i g\, – zależy ona od kontekstu w jakim występują obie funkcje.

[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:


\begin{matrix}
\forall & f(n) < c \cdot g(n) \\
{}^{n \geq n_0}
\end{matrix}

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:


\begin{matrix}
\forall & f(n) \geq c \cdot g(n) \\
{}^{n \geq n_0}
\end{matrix}

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:


\begin{matrix}
\forall & f(n) > c \cdot g(n) \\
{}^{n \geq n_0}
\end{matrix}

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:


\begin{matrix}
\forall & c_1 \cdot g(n) \leq f(n) \leq c_2 \cdot g(n) \\
{}^{n \geq n_0}
\end{matrix}

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] Uwagi

Znak "=" 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:

  • jeśli f(x) = O(r(x)) i g(x) = O(r(x)), to również f(x) \pm g(x) = O(r(x)).
  • przy założeniach jak poprzednio, f(x) \cdot g(x) = O(r^2(x))

Wygoda notacji dużego O widoczna jest w następującej sytuacji: jeżeli f(x) = 2x3x2 + 100x, to można napisać zarówno f(x) = O(x3), jak i f(x) = 2x3 + O(x2), czy wreszcie f(x) = 2x3x2 + O(x), zależnie od wymaganej dokładności oszacowań.

Napis g(x) = f(x)+O(h(x))\, należy rozumieć jako g(x)-f(x) = O(h(x))\,.

[edytuj] Zależności algebraiczne O, o, Ω, ω, Θ

Notacja Definicja
f(n) \in O(g(n)) \lim_{x \to \infty} \left|\frac{f(x)}{g(x)}\right| < \infty
f(n) \in o(g(n)) \lim_{x \to \infty} \frac{f(x)}{g(x)} = 0
f(n) \in \Omega(g(n)) \lim_{x \to \infty} \left|\frac{f(x)}{g(x)}\right| > 0
f(n) \in \omega(g(n)) \lim_{x \to \infty} \frac{f(x)}{g(x)} = \infty
f(n) \in \Theta(g(n)) 0 < \lim_{x \to \infty} \left|\frac{f(x)}{g(x)}\right| < \infty

[edytuj] Przykłady

  • Jeżeli f(x) = 1000x50 + 2x2 oraz g(x) = 0,0000001x50 + 665x, to f(x)=O(x^{50})\, oraz g(x) = O(x^{50})\,, ale również g(x) = O(f(x))\,.
  • Niech S(n) = 1 + 2 + \cdots + n. Korzystając ze wzorów sumacyjnych: S(n)=\frac{n(n+1)}{2} < 3 \cdot n^2, a zatem O(n^2)\,.
  • Jeżeli potrzebne jest dokładniejsze oszacowanie S(n)\,, to na podstawie tego samego wzoru sumacyjnego można napisać S(n)= \frac{n^2}{2} + \frac{n}{2} = \frac{n^2}{2}+O(n).
  • Analogicznie można napisać, że 1^2 + 2^2 + \cdots + n^2 = O(n^3).

[edytuj] Standardowe oszacowania

W zastosowaniach szczególnie często notacja O-duże pojawia się w następujących sytuacjach:

[edytuj] Rząd złożoności obliczeniowej

W zależności od asymptotycznego tempa wzrostu, funkcje dzieli się na rzędy złożoności obliczeniowej. Najczęściej wyróżnia się:

1 stała
log2n logarytmiczna
n liniowa
nlog2n liniowo-logarytmiczna (lub quasi-liniowa)
n2 kwadratowa
nc wielomianowa
cn wykładnicza

[edytuj] Zastosowanie

Najczę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 f(n) = \frac{n}{1000} (funkcja liniowa Θ(n)) i g(n) = logn (funkcja logarytmiczna Θ(logn)), zachodzi oszacowanie f(n) = ω(g(n)) (f(n) asymptotycznie rośnie szybciej niż g(x)), ale dla n = 10 wartość funkcji f jest mniejsza niż funkcji g.

[edytuj] Zobacz też

Static Wikipedia (no images) - November 2006

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu