Badanie złożoności algorytmów cz I 3

Badanie złożoności algorytmów cz I 3



Żeby zdać sobie sprawę co do rzeczywistej skali ulepszeń rozważmy tabelkę:

N

1 + log2 N

10

4

100

7

1000

10

milion

20

miliard

30

Zatem przeszukanie książki telefonicznej dla miliarda abonentów wymagałoby jedynie 30 kroków.

Warto zauważyć, że gdy szukamy czegoś w książce telefoniczne świadomie lub nieświadomie stosujemy wariant wyszukiwania binarnego, choć nie porównujemy szukanego nazwiska z nazwiskiem dokładnie w V.2 książki, a potem w 1/4 lub %. Ale znając nazwisko w sposób przybliżony lokujemy je ograniczając przeszukiwaną listę. Działamy według intuicyjnych reguł tzw. reguł heurystycznych. Okazuje się, że według tych reguł też można budować algorytmy wyszukiwania działające w sposób dopasowany do charakteru i rozkładu elementów. Mają one średnio lepszą złożoność ale wykonują takie pesymistyczne zachowanie typu O (log W). Relacja miedzy złożonością średnia fśrednim czasem oczekiwania na wyniki) a pesymistyczną nie jest ściśle określona, a jej oszacowanie jest trudne i nie ma tu ogólnej metody działania. Bardzo często średnia i pesymistyczna złożoność jest tego samego rzędu. Np. dla większości algorytmów sortowania jest ona typu O (N2). Ale np. dla jednego konkretnego algorytmu Ouicksort, złożoność średnia jest 1.4 N log2 N, a pesymistyczna O (N2) czyli znacznie większa.

Co brać pod uwagę przy szacowaniu złożoności typu O (N2)?

Okazuje się, że decydująca dla czasu działania algorytmu jest rola pętli (czy cykli wykonywanych na zasadzie rekurencji). Inne działania wykonywane jednorazowo mogą, co najwyżej, dodawać jedynie stały składnik do zasadniczego, rosnącego wraz z wykonywaniem pętli czasu wykonywania algorytmu. Podczas każdego obiegu pętli dokonuje się przynajmniej jednego porównania, które decyduje o dalszym działaniu w pętli czy też o jej opuszczeniu. Zatem z dokładnością do stałego czynnika będącego miara liczby instrukcji wykonywanych w pętli można stwierdzić, że liczba czynności wykonywanych przez algorytm decydująca o złożoności O jest określona przez liczbę sprawdzanych warunków (porównań). Zapis złożoności typu O () ignoruje stałe składniki, stąd nie są istotne elementy programu leżące poza pętlami oraz stałe czynniki (czyli liczby instrukcji wewnątrz pętli). Dla algorytmu binarnego wyszukiwania dla listy o długości N całkowita liczba instrukcji jest ograniczona przez K + (M * log2 N), gdzie K liczba instrukcji poza pętlą, a M liczba instrukcji wewnątrz pętli, ale to w naszej notacji nadal oznacza złożoność typu O (log N).

Co ciekawe, mało istotne jest także wewnętrzna struktura instrukcji, z których buduje się algorytm. Zatem oszacowanie typu O 0 jest niezależne od rodzaju języka używanego do zapisu algorytmu . z wyjątkiem wszakże języków, gdzie iteracja będzie ukryta wewnątrz instrukcji (jest tak w językach obsługi baz danych) np. w poleceniu "szukaj E na liście L". Wówczas mamy jedną instrukcję i teoretycznie złożoność O (1). Ale to pozór! Wtedy dla prawdziwego oszacowania złożoności konieczne jest ujawnienie iteracyjności lub rekurencyjności tej instrukcji.

Wspomnieliśmy także, że i podstawa w zapisie O (log N) nie jest istotna i dlatego ją zaniedbujemy. Wszakże

log,, b


log- X=\ogaX

czyli log3 X i logb X różnią się jedynie o stały czynnik (log3 b)'1.


Wyszukiwarka

Podobne podstrony:
Badanie złożoności algorytmów cz II 1 BADANIE ZŁOŻONOŚCI ALGORYTMÓW CZĘSC IIRekurencja - a sprawność
Badanie złożoności algorytmów cz II 2 Ograniczenia dolne i górne na złożoność: Rozważmy problem prze
Badanie złożoności algorytmów cz II 3 Praktyczne znaczenie złożoności obliczeniowej: Różnica między
Badanie złożoności algorytmów cz I 1 BADANIE ZŁOŻONOŚCI ALGORYTMÓW CZĘŚĆ I Miara sprawności danego a
Badanie złożoności algorytmów cz I 2 Ulepszenia rzędu wielkości: Poprzednio udało się nam skrócić cz
Badanie złożoności algorytmów cz I 4 Wszystko to świadczy o sile notacji O (). Ale jest ta siła takż
jedząc go” i dlatego dopiero faktyczne badania pozwolą zdać sobie sprawę z całej wartości tego pojęc
Kierownik - menedżer powinien zdać sobie sprawę czy ma takie umiejętności, doświadczenie, możliwości
Pierwsza prawda, z której musimy zdać sobie sprawę w kwestii ludzkiego działania jest stwierdzenie,
DIGDRUK00128032 26 Kilka słów o literaturze żargonowej. — Musimy zdać sobie sprawę, czy jest ona&nb
78 79 (16) 78    2. Wyobraźnu innego aktu behawioralnego itd. Ale przecież musimy zda
DSC04651 174 Rodząjc i gatunki literackie powiedź, istnieje w niej i przez nią. Musimy też zdać sobi
DSC00622 trzeba jeszcze zdać sobie sprawę, w jaki sposób się ona rozrasta. Otóż rozwidla się we wszy
wychowanie tach i szatni, a nauczyciele, że na boisku szkolnym i terenie poza szkolą. Warto zdać sob
84 TOMASZ MIZERKIEW1CZ będzie można zdać sobie sprawę z zamysłów twórczych, jakie towarzyszą
Nadolski7 wszystkim zdać sobie sprawę z konstrukcyjnych i technicznych szczegółów tego rodzaju zbro
94284201 djvu 422 K. W. MAJEWSKI Oko jako przyrząd optyczny. Aby zdać sobie sprawę ze sposobu, w j
SAM 56 naszego stanu emocjonalnego. Dzięki świadomości oddychania modemy zatem zdać sobie sprawę, ie

więcej podobnych podstron