Główna zawartość
Informatyka
Kurs: Informatyka > Rozdział 1
Lekcja 3: Asymptotyczne tempo wzrostuFunkcje w notacji asymptotycznej
Kiedy używamy notacji asymptotycznej w celu zobrazowania tempa wzrostu czasu wykonywania algorytmu, wyrażanego wielkością zmiennej wejściowej , warto mieć kilka rzeczy na uwadze.
Zacznijmy od czegoś prostego. Załóżmy, że algorytm potrzebuje stałą ilość czasu, niezależnie od wielkości zmiennej wejściowej. Na przykład, jeżeli otrzymałeś tablicę, która jest już posortowana w kolejności rosnącej i trzeba by znaleźć minimalny element, zajęłoby to stałą ilość czasu, ponieważ minimalny element musi być pod indeksem 0. Z uwagi na to, że chcemy wykorzystać funkcję zmiennej w notacji asymptotycznej, można powiedzieć, że ten algorytm działa w czasie. Dlaczego? Ponieważ i czas działania algorytmu mieści się w zakresie stałej 1. W praktyce, nie piszemy , ale .
Załóżmy, że czas, potrzebny na wykonanie algorytmu można szacować jako . Możemy również powiedzieć, że czas był . Jak długo podstawa logarytmu jest stałą, nie ma znaczenia jakiej podstawy użyjemy w notacji asymptotycznej. Dlaczego nie? Ponieważ istnieje następujący wzór matematyczny:
dla wszystkich liczb dodatnich , oraz . W związku z tym, jeżeli i są stałymi, to i różnią się tylko współczynnikiem , i jest to wspóczynnik, który możemy pominąć w notacji asymptotycznej.
Możemy zatem powiedzieć, że w najgorszym wypadku, czas wykonywania algorytmu wyszukiwania binarnego to dla każdej dodatniej stałej . Dlaczego? Liczba prób to co najwyżej , generowanie i testowanie każdej próby zabiera stałą ilość czasu, i definiowanie oraz zwracanie zajmuje również stałą ilość czasu. W praktyce piszemy, że wyszukiwanie binarne zajmuje czasu ponieważ informatycy lubią myśleć w kategoriach potęgi z 2.
Dla funkcji, których często używamy podczas analizy algorytmów używając notacji asymptotycznej istnieje pewien porządek. Jeżeli oraz są stałe i , wtedy czas wykonania wynosi rośnie wolniej niż czas wykonania . Na przykład, czas wykonania , który wynosi , rośnie wolniej niż czas wykonania . Wykładniki nie muszą nawet być liczbami całkowitymi. Na przykład, czas wykonania rośnie wolniej niż czas wykonania , który wynosi .
Na poniższym wykresie porównano tempo wzrostu , , oraz :
Logarytmy rosną wolniej niż wielomiany. Oznacza to, że rośnie wolniej niż dla każdej dodatniej stałej . Ale ponieważ wartość zwiększa się ze wzrostem , rośnie szybciej niż .
Na poniższym wykresie porównano tempo wzrostu , , oraz :
Oto lista funkcji w notacji asymptotycznej, z którymi mamy często do czynienia podczas analizowania algorytmów, w kolejności od najwolniej do najszybciej rosnących.
Należy zauważyć, że funkcja wykładnicza , gdzie , rośnie szybciej niż jakakolwiek funkcja wielomianowa , gdzie jest stałą.
Ta lista nie jest oczywiście pełna, jest wiele funkcji, które opisują złożoności obliczeniowe czy czasy wykonania różne od tych powyżej. Zapewne napotkasz niektóre z nich w swojej podróży przez krainę informatyki.
Materiał powstał we współpracy profesorów z Dartmouth Computer Science Thomasa Cormena i Devina Balkcoma oraz zespołu nauczycieli informatyki Khan Academy. Materiał jest udostępniony na licencji CC-BY-NC-SA.
Chcesz dołączyć do dyskusji?
Na razie brak głosów w dyskusji