plik


WBa[ciwo[ci notacji O(" ") ( tzw. rachunek O(") ) " " F(N) = O(F(N)) je[li F(N) jest funkcj zBo|ono[ci algorytmu, to speBnienie O((g(N))) = O(g(N)) warunku F(N ) lim = C < " C"O(g(N)) = O(C"g(N)) = O(g(N)) (dla dowolnego 0 < C < ") N !" g(N ) jest zapisywane F(N) = O(g(N)) X 1 i odczytywane  zBo|ono[ algorytmu jest rzdu nie wy|szego ni| g(N) lub krcej  zBo|ono[ algorytmu jest O(g(N)) T rwno[ w zapisie F(N) = O(g(N)) powinna by rozumiana X X + 1 X > C O(g(N)) w ten sposb, |e funkcja F(N) jest jedn z funkcji, ktre speBniaj powy|szy warunek lub precyzyjniej, |e funkcja N F(N) nale|y do zbioru wszystkich funkcji speBniajcych O(g(N)) powy|szy warunek JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 1 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 2 O(g(N)) + O(h(N)) = O(g(N) + h(N)) O(g(N))"O(h(N)) = O(g(N)"h(N)) = g(N)"O(h(N)) = h(N)"O(g(N)) O(g(N)) O(g(N)+h(N)) X 1 O(h(N)) T g(N ) . X X + 1 X > N O(N g(N)) Je[li speBniony jest warunek lim = 0 , czyli g(N) h(N), p N !" h(N ) N to O(g(N)) + O(h(N)) = O(g(N) + h(N)) = O(h(N)) O(g(N)) JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 3 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 4 przy analizie zBo|ono[ci w najgorszym przypadku, je|eli warunek w wyborze warunkowym zale|y od danych wej[ciowych, to zachodzi: X 1 Czy T N T X X + 1 X > h(N) O(h(N). g(N)) warunek W jest speBniony? O(g(N)) , je[li h(N) g(N) O(h(N)) , je[li g(N) = O(h(N)) N O(g(N)) O(g(N)) O(h(N)) JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 5 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 6 1 ZBo|ono[ czasowa przykBadowych algorytmw Algorytm sortowania bbelkowego w poprawionej wersji (zmniejszajca si liczba powtrzeD w iteracji wewntrznej) Algorytm sortowania bbelkowego w pierwotnej wersji (iteracja zagnie|d|ona w iteracji) 1. wykonaj co nastpuje N  1 razy: 1. wykonaj co nastpuje N  1 razy: 1.1. ... , 1.2. wykonaj co nastpuje N  K razy: 1.1. ... , 1.2. wykonaj co nastpuje N  1 razy: 1.2.1. porwnaj wskazany element listy z nastpnym 1.2.1. porwnaj wskazany element listy z nastpnym 1.2.2. ... , 1.2.2. ... , 1.2.3. ... . 1.2.3. ... . Liczba porwnaD par elementw (powtrzeD kroku 1.2.1.) 2 F(N) = (N - 1) + (N - 2) + (N - 3) + ... + 2 + 1 = 0,5"N - 0,5"N Liczba porwnaD par elementw (powtrzeD kroku 1.2.1.) 2 F(N) = (N - 1)"(N - 1) = N - 2N +1 2 2 N N , czyli zBo|ono[ F(N) = O(N ) p 2 2 1 2N N , czyli zBo|ono[ F(N) = O(N ) p p JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 7 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 8 Rekurencyjny algorytm dla problemu wie| Hanoi Algorytm sumowania N liczb (pojedyncza iteracja) Liczba dodawaD dwch warto[ci F(N) = O(N) Procedura przenie[ (N) kr|kw ... 1. je[li N = 1, ... Algorytm  brute force znajdowania najwikszej 2. w przeciwnym razie (tj. je[li N > 1) wykonaj co nastpuje: przektnej w wielokcie wypukBym 2.1. WywoBaj procedur przenie[ (N  1) kr|kw ... (przegld tablicy dwuwymiarowej) Liczba porwnaD par warto[ci w celu znalezienia odcinka 2.2. Wypisz ruch  X ! Y , o maksymalnej dBugo[ci 2.1. WywoBaj procedur przenie[ (N  1) kr|kw ... 2 F(N) = (N - 1) + (N - 2) + (N - 3) + ... + 2 + 1 = 0,5"N - 0,5"N 3. wr ... 2 czyli zBo|ono[ F(N) = O(N ) Oznaczmy nieznan funkcj zBo|ono[ci przez T(N) i uB|my rwnanie, ktre T(N) musi speBnia (tzw. rwnanie rekurencyjne): Najlepszy algorytm znajdowania najwikszej przektnej w T(1) = 1 wielokcie wypukBym (obracanie pary prostych rwnolegBych T(N)  liczba przeniesieD pojedynczego wokB wielokta  pojedyncza iteracja) kr|ka w zadaniu z N kr|kami T(N) = 2"T(N -1) +1 Liczba mo|liwych obrotw F(N) = O(N) Rwnanie speBnia funkcja F(N) = 2N - 1 = O(2N) JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 9 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 10 Algorytm sortowania drzewiastego Etap lewostronnego obej[cia drzewa BST ma zBo|ono[ O(N) (dwa etapy: budowa drzewa BST i przegld drzewa) Zatem caBy algorytm ma pesymistyczn zBo|ono[ 2 Etap budowy drzewa BST ma pesymistyczn zBo|ono[ O(N ): 2 2 O(N ) + O(N ) = O(N ) 7 Algorytm sortowania drzewiastego z samoorganizacj drzewa 15 (poprawiony etap budowy drzewa BST) 7 15 12 11 8 10 12 11 7 15 12 11 8 10 11 8 12 8 7 10 15 10 Etap budowy drzewa BST ma pesymistyczn zBo|ono[ O(N"lgN) Liczba porwnaD par elementw 2 2 F(N) = 1 + 2 + ... + (N - 2) + (N - 1) = 0,5"N - 0,5"N = O(N ) Zatem caBy algorytm ma zBo|ono[ O(N"lgN) + O(N ) = O(N"lgN) JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 11 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 12 2 Algorytm sortowania przez scalanie (rekurencja) Porwnanie rzdw zBo|ono[ci: Procedura sortuj (L) 1. je[li lista L zawiera tylko jeden element, to jest posortowana, DBugo[ listy Sortowanie bbelkowe Sort. drzewiaste 2. w przeciwnym przypadku wykonaj co nastpuje: 2 N N N" "lgN " " 2.1. podziel list L na dwie poBowy L1 i L2 , 10 100 33 2.2. wywoBaj sortuj (L1) , 2.3. wywoBaj sortuj (L2) , 100 10 000 664 2.4. scal posortowane listy L1 i L2 w jedn posortowan list , 1 000 1 000 000 9 965 3. wr do poziomu wywoBania. 1 000 000 1 000 000 000 000 19 931 568 UB|my rwnanie rekurencyjne dla nieznanej funkcji zBo|ono[ci: 1 000 000 000 1 000 000 000 000 000 000 29 897 352 853 T(1) = 0 T(N)  liczba porwnaD par elementw T(N) = 2"T(N / 2) + N ! w najgorszym przypadku Rwnanie speBnia funkcja F(N) = N"lg N = O(N" N) "lg " " JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 13 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 14 Zrednia zBo|ono[ v. pesymistyczna zBo|ono[ Sortowanie przez scalanie jest jednym z najlepszych Analiza [redniego przypadku v. analiza najgorszego przypadku algorytmw sortowania pod wzgldem pesymistycznej zBo|ono[ci, cho ma nie najlepsz zBo|ono[ pamiciow W analizie [redniego przypadku istotn rol odgrywaj zaBo|enia O(N) o rozkBadzie prawdopodobieDstwa w zbiorze dopuszczalnych danych wej[ciowych. Zrednia zBo|ono[ci algorytmu Quicksort jest najlepsza ze wszystkich algorytmw sortowania i wynosi 1,4" "lg N "N " " " " " Algorytm Zr. zBo|ono[ Pes. zBo|ono[ i dlatego jest czsto stosowany w praktyce sumowanie n liczb O(N) O(N) Algorytm Quicksort oparty jest na metodzie  dziel i 2 2 sortowanie bbelkowe O(N ) O(N ) zwyci|aj i mo|na go implementowa w kilku sortowanie drzewiaste z wariantach r|nicych si sposobami wyboru miejsca O(N"lgN) O(N"lgN) samoorganizacj drzewa podziaBu listy i gBboko[ci rekurencji sortowanie przez scalanie O(N"lgN) O(N"lgN) http://en.wikipedia.org/wiki/Quicksort 2 Quicksort O(N"lgN) O(N ) JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 15 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 16 PrzykBad analizy zBo|ono[ci algorytmu Algorytm  przyrostowy o ni|szej zBo|ono[ci (?) Problem algorytmiczny wyznaczania powBoki wypukBej 1. znajdz punkt P1 o najmniejszej wspBrzdnej Y, dla zadanego zbioru N punktw na pBaszczyznie: 2. posortuj pozostaBe punkty rosnco wedBug ktw tworzonych przez odcinki z lini poziom PPJ 1 przechodzc przez P1 - powstanie lista P2, ... ,PN 3. doBcz do powBoki punkty P1 i P2 , 4. dla J od 3 do N wykonaj co nastpuje: 4.1. doBcz do powBoki punkt PJ , 4.2. cofajc si wstecz po odcinkach aktualnej powBoki, 3 Algorytm  brute force ma zBo|ono[ O(N ) : usuwaj z niej te punkty PK , dla ktrych prosta przechodzca przez PK i PK-1 przecina odcinek dla ka|dego z N punktw trzeba dobiera kolejno po jednym PPJ , a| do napotkania pierwszego punktu nie z pozostaBych N-1 punktw i sprawdza czy dla prostej, ktra 1 dajcego si usun. przechodzi przez tak par reszta punktw ( N-2 ) le|y tylko po jednej jej stronie; F(N) = N"(N-1)"(N-2) JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 17 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 18 3 Po 2. kroku algorytmu: Po 3. kroku algorytmu: 7 11 7 11 9 9 6 5 14 10 6 5 14 13 10 13 8 4 8 4 12 12 2 3 15 3 2 15 1 1 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 19 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 20 Kolejne iteracje w 4. kroku algorytmu: Liczba korekt dokonanych podczas iteracji w 4. kroku: 77 11 77 11 77 11 77 11 77 11 77 11 77 11 77 11 77 11 77 11 77 11 77 11 77 1111 77 1111 7 11 7 1111 7 11 7 11 11 11 11 11 11 11 11 11 11 11 11 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 5 14 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 12 2 3 33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 15 2 15 2 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 21 JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 22 Podsumowanie zBo|ono[ci algorytmu krok po kroku: Krok 1. O(N) (wybr pierwszego punktu) Krok 2. O(N"lgN) (sortowanie) Krok 3. O(1) (doBczenie 1 odcinka) Krok 4. O(N) (doBczanie z usuwaniem) Razem O(N+N"lgN+1+N) = O(N"lgN) JarosBaw Sikorski - BUDOWA i ANALIZA ALGORYTMW, WIT 2011 r. 23 4

Wyszukiwarka

Podobne podstrony:
w10 PSYCH
wprowadz w10 (2)
Mieke Bal
W10 AI
w10
w10 8
w10 soczewki ppt
bal u weteranow
w10
TiR11 KSP w10 turystyka slajdy

więcej podobnych podstron