Mówiąc luźniej, złożoność czasu jest sposobem podsumowania wzrostu liczby operacji lub czasu działania algorytmu wraz ze wzrostem wielkości wejściowej.
Jak większość rzeczy w życiu, przyjęcie koktajlowe może pomóc nam zrozumieć.
NA)
Po przybyciu na przyjęcie musisz uścisnąć wszystkim rękę (wykonać operację na każdym elemencie). Wraz ze wzrostem liczby uczestników Nrośnie czas / praca, aby uścisnąć dłoń każdego O(N).
Dlaczego O(N)nie cN?
Istnieje różna ilość czasu, jaki zajmuje uścisk dłoni z ludźmi. Możesz to uśrednić i uchwycić w sposób ciągły c. Ale podstawowa operacja tutaj - uścisk dłoni ze wszystkimi - zawsze byłaby proporcjonalna do O(N), bez względu na to, co cbyło. Kiedy zastanawiamy się, czy powinniśmy pójść na przyjęcie koktajlowe, często bardziej interesuje nas fakt, że będziemy musieli poznać wszystkich, niż najdrobniejsze szczegóły tego, jak wyglądają te spotkania.
O (N ^ 2)
Gospodarz koktajlu chce, abyś zagrał w głupią grę, w której wszyscy spotykają wszystkich. Dlatego musicie poznać N-1innych ludzi, a ponieważ kolejna osoba już cię spotkała, muszą poznać N-2ludzi i tak dalej. Suma tej serii to x^2/2+x/2. W miarę wzrostu liczby uczestników x^2termin staje się bardzo szybki , więc porzucamy wszystko inne.
O (N ^ 3)
Musisz spotkać się ze wszystkimi i podczas każdego spotkania musisz porozmawiać o wszystkich innych w pokoju.
O (1)
Gospodarz chce coś ogłosić. Popijają kieliszek do wina i mówią głośno. Wszyscy je słyszą. Okazuje się, że nie ma znaczenia, ilu jest uczestników, ta operacja zawsze zajmuje tyle samo czasu.
O (log N)
Gospodarz ułożył wszystkich przy stole w kolejności alfabetycznej. Gdzie jest Dan? Rozumujesz, że musi być gdzieś pomiędzy Adamem a Mandy (na pewno nie między Mandy a Zachem!). Biorąc to pod uwagę, czy jest on między George'em a Mandy? Nie. Musi być pomiędzy Adamem i Fredem oraz między Cindy i Fredem. I tak dalej ... możemy skutecznie zlokalizować Dana, patrząc na połowę zestawu, a następnie na połowę tego zestawu. Ostatecznie patrzymy na osoby O (log_2 N) .
O (N log N)
Możesz znaleźć, gdzie usiąść przy stole, korzystając z powyższego algorytmu. Gdyby przy stole przyszła duża liczba osób, jedna po drugiej, i wszyscy to zrobili, zajęłoby to O (N log N) . Okazuje się, ile czasu zajmuje sortowanie dowolnej kolekcji przedmiotów, gdy trzeba je porównać.
Najlepszy / najgorszy przypadek
Przybywasz na przyjęcie i musisz znaleźć Inigo - ile to zajmie? To zależy od tego, kiedy przyjedziesz. Jeśli wszyscy się kręcą, trafiłeś w najgorszy przypadek: zajmie to trochę O(N)czasu. Jeśli jednak wszyscy siadają przy stole, zajmie to tylko trochę O(log N)czasu. A może uda Ci się wykorzystać siłę gospodarza do krzyczenia kieliszka wina i zajmie to tylko trochę O(1)czasu.
Zakładając, że host jest niedostępny, możemy powiedzieć, że algorytm znajdujący Inigo ma dolną granicę O(log N)i górną granicę O(N), w zależności od stanu drużyny po przyjeździe.
Przestrzeń kosmiczna i komunikacja
Te same pomysły można zastosować do zrozumienia, w jaki sposób algorytmy wykorzystują przestrzeń lub komunikację.
Knuth napisał miły artykuł na temat tego pierwszego zatytułowany „Złożoność pieśni” .
Twierdzenie 2: Istnieją arbitralnie długie piosenki o złożoności O (1).
DOWÓD: (dzięki Casey i Sunshine Band). Rozważmy piosenki Sk zdefiniowane przez (15), ale z
V_k = 'That's the way,' U 'I like it, ' U
U = 'uh huh,' 'uh huh'
dla wszystkich k.