• Nie Znaleziono Wyników

Które czªony s¡ wa»ne? prof. dr hab. E. Richter-W¡s

N/A
N/A
Protected

Academic year: 2021

Share "Które czªony s¡ wa»ne? prof. dr hab. E. Richter-W¡s"

Copied!
67
0
0

Pełen tekst

(1)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Algorytmika - wykªad 4

dr Anna Sasak-Oko«

Uniwersytet Marii Curie-Skªodowskiej w Lublinie

21.10.2019

(2)

Denicja

Asymptotyczne tempo wzrostu - miara okre±laj¡ca zachowanie warto±ci funkcji wraz ze wzrostem jej argumentów.

Dla zªo»ono±ci agorytmu, która ma okre±li¢ jak silnie zale»¡ od siebie rozmiar danych i czas wykonania algorytmu, szczególnie istotne jest jej zachowanie gdy rozmiar danych d¡»y do niesko«czono±ci.

Do opisu asymptotycznego tempa wzrostu stosuje si¦ notacj¦ O oraz jej modykacje, jak np. notacja Ω, Θ.

(3)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Notacja O zostaªa zaproponowana po raz pierwszy w 1994r. przez niemieckiego matematyka Paula Bachmanna

Denicja

f (n)jest O(g(n)) je±li istniej¡ liczby (c i n0) > 0 takie, »e f (n) < c ∗ g (n)dla wszystkich n > n0.

(4)

Notacja O ma kilka pozytywnych wªasno±ci, które mo»na wykorzystywa¢ przy szacowaniu efektywno±ci algorytmów:

Przechodnio±¢:

f (n) ∈ O(g (n)) ∧ g (n) ∈ O(h(n))) → f (n) ∈ O(h(n)) f (n) ∈ O(h(n)) ∧ g (n) ∈ O(h(n)) → f (n) + g (n) ∈ O(h(n)) funkcja a ∗ nk ∈ O(nk)

funkcja nk ∈ O(nk+j) dla dowolnego j je±li f (n) = c ∗ g(n) to f (n) ∈ O(g(n)) loga(n) ∈ O(log2(n))dla a > 0

(5)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Które czªony s¡ wa»ne? prof. dr hab. E. Richter-W¡s

FUNKCJA: f (n) = n2+100n + log10(n) + 1000 n f (n) n2 100 ∗ n log10(n) 1000

1 1101 0.1% 9% 0.0% 91%

10 2101 4.8% 48% 0.05% 48%

100 21002 48% 48% 0.001% 4.8%

103 1101003 91% 9% 0.0003% 0.09%

104 101001004 99% 1% 0.0% 0.001%

105 99.9% 0.1% 0.0% 0.0000%

n  rozmiar danych

f(n)  ilo±¢ wykonywanych operacji

Dla du»ych warto±ci n funkcja ro±nie jak n2, pozostaªe skªadniki mog¡ by¢ zaniedbane.

(6)

Które czªony s¡ wa»ne? prof. dr hab. E. Richter-W¡s

FUNKCJA: f (n) = n2+100n + log10(n) + 1000 n f (n) n2 100 ∗ n log10(n) 1000

1 1101 0.1% 9% 0.0% 91%

10 2101 4.8% 48% 0.05% 48%

100 21002 48% 48% 0.001% 4.8%

103 1101003 91% 9% 0.0003% 0.09%

104 101001004 99% 1% 0.0% 0.001%

105 99.9% 0.1% 0.0% 0.0000%

n  rozmiar danych

f(n)  ilo±¢ wykonywanych operacji

Dla du»ych warto±ci n funkcja ro±nie jak n2, pozostaªe skªadniki mog¡ by¢ zaniedbane.

(7)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Z przedstawionych wªasno±ci wynika, »e dowolny wielomian jest 'wielkie O' dla n podniesionego do najwy»szej w nim pot¦gi, czyli:

f (n) = aknk+ ak−1nk−1+ ... + a1n + a0 ∈ O(nk)

Jednocze±nie, jedn¡ z najwa»niejszych funkcji przy ocenianiu efektywno±ci algorytmów jest funkcja algorytmiczna.

Je»eli mo»na wykaza¢, »e zªo»ono±¢ algorytmu jest rz¦du logarytmicznego, algorytm mo»na traktowa¢ jak bardzo dobry.

(8)

Notacja O odnosi si¦ do górnych ogranicze« funkcji. Istnieje symetryczna denicja dotycz¡ca dolnych ogranicze«:

Denicja

f (n) ∈ Ω(g (n))jesli istniej¡ liczby (c, n0) >0 takie, »e f (n) > c ∗ g (n) dla wszystkich n > n0.

Oraz ograniczenie obustronne:

Denicja

f (n) ∈ Θ(g (n))je±li istniej¡ takie liczby c1, c2 >0 i n0 >0 takie,

»e c1∗ g (n) 6 f (n) 6 c2∗ g (n) dla wszystkich n > n0.

(9)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

(10)

Celem wprowadzonych notacji jest porównanie efektywno±ci rozmaitych algorytmów zaprojektowanych do rozwi¡zania tego samego problemu.

Jezeli b¦dziemy stosowa¢ tylko notacj¦ O do reprezentowania zªo»ono±ci algorytmów, to niektóre z nich mo»emy zdyskwalikowa¢

zbyt pochopnie.

(11)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

przykªad:

Zaªó»my, »e mamy dwa algorytmy rozwi¡zuj¡ce pewien problem, a wykonywana przez nie liczba operacji to odpowiednio: 108n i 10n2. Ich zªo»ono±¢ to odpowiednio O(n) i O(n2).

Opieraj¡c si¦ na informacji dostarczonej przez notacj¦ 'O'

odrzuciliby±my drugi algorytm, poniewa» funkcja kosztu ro±nie zbyt szybko.

Jest to prawda, ale dopiero dla odpowiednio du»ych n. Dla n < 107 to drugi algorytm wykonuje mniej operacji ni» pierwszy.

Istotna jest wi¦c te» staªa (108), która w tym przypadku jest zbyt du»a do szybkiego pomini¦cia.

(12)

przykªad:

Zaªó»my, »e mamy dwa algorytmy rozwi¡zuj¡ce pewien problem, a wykonywana przez nie liczba operacji to odpowiednio: 108n i 10n2. Ich zªo»ono±¢ to odpowiednio O(n) i O(n2).

Opieraj¡c si¦ na informacji dostarczonej przez notacj¦ 'O'

odrzuciliby±my drugi algorytm, poniewa» funkcja kosztu ro±nie zbyt szybko.

Jest to prawda, ale dopiero dla odpowiednio du»ych n. Dla n < 107 to drugi algorytm wykonuje mniej operacji ni» pierwszy.

Istotna jest wi¦c te» staªa (108), która w tym przypadku jest zbyt du»a do szybkiego pomini¦cia.

(13)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Najcz¦stsze zªo»ono±ci:

log (n) logarytmiczna n  liniowa

nlog (n)  liniowo-logarytmiczna nk  wielomianowa

2n  wykªadnicza

n!  te» wykªadnicza bo n! > 2n dla n > 4

(14)

Czas wykonania algorytmów na komputerze dziaªaj¡cym z szybko±ci¡ 1 instrukcja / µs.

klasa zªo»ono±¢ liczba operacji i czas wykonania

n 10 103

staªy O(1) 1 1µs 1 1µs

logarytmiczny O(log(n)) 3.32 3µs 9.97 10µs

liniowy O(n) 10 10µs 103 1µs

kwadratowy O(n2) 102 100µs 106 1s

wykªadniczy O(2n) 1024 10ms 10301 >> 1016lat

(15)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Maj¡c do dyspozycji denicj¦ 'wielkie O' oraz jej wªasno±ci, mo»na skutecznie analizowa¢ czasy dziaªania wiekszo±ci programów spotykanych w praktyce.

Efektywno±¢ algorytmów ocenia sie przez szacowanie ilo±ci czasu i pami¦ci potrzebnych do wykonania zadania, dla którego algorytm zostaª zaprojektowany.

Najcz¦±ciej jeste±my zainteresowai zªo»ono±ci¡ czasow¡, mierzon¡

zazwyczaj liczb¡ przypisa« i porówna« realizowanych podczas wykonywania programu.

Bardzo cz¦sto interesuje nas tylko zªo»ono±¢ asymptotyczna czyli czas dziaªania dla du»ej ilo±ci analizowanych zmiennych.

(16)

1. Czas dziaªania instrukcji prostych

Przyjmuje si¦, »e czas dziaªania pewnych prostych operacji na danych wynosi O(1), czyli jest niezale»ny od rozmiaru danych wej±ciowych. S¡ to:

operacje arytmetyczne (+)(−) operacje logiczne (&&) operacje porównania 6

operacje dost¦pu do struktur danych np. indeksowanie tablic A[i ]

proste przypisanie np. kopiowanie warto±ci do zmiennej wywoªania funkcji bibliotecznych

Ka»d¡ z tych operacji mo»na wykona¢ za pomoc¡ pewnej (niewielkiej) liczby rozkazów maszynowych.

(17)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

2.P¦tla for (prosta)

sum = 0

for (i=0; i<n; i++) sum+=a[i]

Powy»sza p¦tla powtarza sie n razy, podczas ka»dego przebiegu realizuje 2 przypisania (zmienne: 'i' i 'sum'):

→2n przypisa« podczas caªego wykonania

→zlo»óno±¢ asymptotyczna O(n)

(18)

2.P¦tla for (prosta)

sum = 0

for (i=0; i<n; i++) sum+=a[i]

Powy»sza p¦tla powtarza sie n razy, podczas ka»dego przebiegu realizuje 2 przypisania (zmienne: 'i' i 'sum'):

→2n przypisa« podczas caªego wykonania

→zlo»óno±¢ asymptotyczna O(n)

(19)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

3. P¦tla for (zagnie»d»ona)

for (i=0; i<n; i++)

for (j=1; sum=a[0]; j6i;j++) sum+=a[j]

P¦tla zewn¦trzna powtarza si¦ n razy, a w ka»dej jej iteracji wykonuje si¦ wewn¦trzna p¦tla orz instrukcja przypisania warto±ci zmiennym 'i','j','sum'.

Petla wewn¦trzna wykonuje si¦ 'i' razy dla ka»dego i ∈ {1, ...n − 1}

a na ka»d¡ iteracj¦ przypadaj¡ 2 przypisania: jedno dla 'sum', jedno dla 'j'.

Mamy zatem:

1+3n+2(1+2+...+n−1) = 1+3n+n(n−1) = n2+2n+1 = O(n2)

(20)

przykªad

znajd¹ najdªu»sz¡ podtablic¦ zawieraj¡c¡ liczby uporz¡dkowane rosn¡co

for (i=0; len=1; i<n-1; i++){

for(i1=i2=k=i; k<n-1 && a[k]<a[k+1];k++, i2++){

if (len<i2-i1+1) len=i2-i1+1;}

}

[2,1,3,4,1,0,2](?)

(21)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

mo»na wyró»ni¢ dwa skrajne przypadki przebiegu algorytmu:

tablica jest uporz¡dkowana malej¡co → p¦tla zewn¦trzna wykonuje si¦ (n − 1) razy, a w ka»dym jej przebiegu p¦tla wewn¦trzna wykona sie tylko jeden raz → O(n)

tablica jest uporz¡dkowana rosn¡co → p¦tla zewn¦trzna wykonuje si¦ (n-1) razy, a w ka»dym jej przebiegu p¦tla wewn¦trzna wykona si¦ i-razy dla i ∈ {1, 2, ...n − 1} → O(n2) co je»eli dane nie s¡ uporz¡dkowane?

(22)

4.Instrukcje warunkowe

if (<warunek>) <blok-if>

else <blok-else>

warunek jest wyra»eniem, które trzeba obliczy¢. Niezale»nie od tego jak jest skomplikowany wymaga wykonania staªej liczby operacji, wi¦c jest czasu O(n), chyba »e zawiera wywoªanie funkcji.

blok-if zawiera instrukcje wykonywane tylko w przypadku gdy warunek jest prawdziwy, czas dziaªania f (n)

blok-else wykonywany tylko w przypadku gdy warunek jest faªszywy, czas dziaªania g(n)

Czas dziaªania instrukcji warunkowej: O(max(f (n), g(n)))

(23)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

5. P¦tla while

while <warunek> <ciaªo>

test warunku → O(1)

ciaªo → O(f (n), powtarzane co najwy»ej g(n) razy

→ O(g (n) ∗ f (n))

(24)

6. Blok instrukcji

sekwencja instrukcji przypisa«, odczytów i zapisów, oraz instrukcji zªo»onych jak instrukcje warunkowe i p¦tle

czas dziaªania to suma górnych ogranicze« czasów wykonania poszczególnych instrukcji, które nale»¡ do tego bloku

(25)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Nie przejmuj sie efektywno±ci¡ algorytmu... wystarczy poczeka¢ kilka lat.

Taki pogl¡d funkcjonuje w ±rodowisku programistów, nie okre±lono przecie» granicy rozwoju mocy obliczeniowych komputerów. Nie nale»y si¦ jednak z nim zgadza¢ w ogólno±ci, lecz przeciwstawia¢ si¦

przekonaniu o tym, »e ulepszenia sprz¦towe uczyni¡ prac¦ nad efektywnymi algorytmami zbyteczn¡.

(26)

Istniej¡ problemy których rozwi¡zanie za pomoc¡ zasobów komputerowych jest teoretycznie mo»liwe, ale praktycznie

przekracza mo»liwo±ci istniej¡cych technologii. Przykªadem takiego problemu jest rozumienie j¦zyka naturalnego, przetwarzanie obrazów (do pewnego stopnia oczywi±cie) czy inteligentna komunikacja pomi¦dzy komputerami a lud¹mi na rozmaitych poziomach.

Kiedy pewne problemy staj¡ si¦ proste. . . Nowa grupa wyzwa«, które na razie mo»na sobie tylko próbowa¢ wyobra»a¢, wytyczy nowe granice mo»liwo±ci wykorzystania komputerów.

(27)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

n 10 20 50 100 1000

log(n) 3.32ns 4.23ns 5.64ns 6.64ns 9.97ns

n 1ns 20ns 50ns 100ns 1000 µs

nlog(n) 33.21ns 86.44ns 282.2ns 664.4ns 9.97µs

n2 100ns 400ns 2.5µs 10µs 1ms

2n 1µs 1.05ms 13dni 4*1013lat 3.4*10284lat n! 3.6ms 77lat 9.6*1044lat 3*10141lat 1.27*102551lat przyj¦to, »e pojedyncza instrukcja wykonuje si¦ 1ns, czyli , »e

algorytm wykonywany jest na komputerze o cz¦stotliwo±ci 1Ghz.

(28)

Sortowanie

Sortowaniem nazywamy proces ustawiania zbioru obiektów w okre±lonym porz¡dku, najcz¦±ciej w celu uªatwienia pó¹niejszego wyszukiwania elementów sortowanego zbioru.

Niewiele istnieje metod (algorytmicznych) nie maj¡cych »adnego zwi¡zku z algorytmami sortowania. W szczególno±ci sortowanie jest idealnym przykªadem pozwalaj¡cym ukazac wielk¡ ró»norodno±¢

algorytmów rozwi¡zywania tego samego problemu, z których wiele jest w pewnym sensie optymalnych, a wiekszo±¢ z nich ma pewne zalety w stosunku do innych.

Jest to wi¦c doskonaªy przykªad wskazuj¡cy na konieczno±¢

dokonywania analizy algorytmów.

(29)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Co wi¦c, sortowanie nadaje si¦ dobrze do wykazania, jak znaczne korzy±ci mo»na osi¡gn¡¢ dzi¦ki tworzeniu skomplikowanych algorytmów, chocia» proste i naturalne metody s¡ ªatwo dostepne.

Denicja

Metod¦ sortowania nazywamy stabiln¡, je»eli podczas procesu sortowania pozostaje nie zmieniony wzgl¦dny porz¡dek obiektów o identycznych kluczach.

(30)

Sortowanie stabilne Sortowanie niestabilne b¡belkowe (bubblesort) przez wybieranie (selection sort) przez wstawianie (insertion sort Shella (shellsort)

przez scalanie (merge sort) grzebieniowe (combsort) przez zliczanie (count sort) szybkie (quicksort)

kubeªkowe (bucket sort) introspektywne (introsort) pozycyjne (radix sort) przez kopcowanie (heapsort) biblioteczne (library sort)

(31)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Najwa»niejszym wymaganiem stawianym metodom sortowania tablic jest oszcz¦dne korzystanie z dost¦pnej pami¦ci. Wynika st¡d,

»e permutowanie obiektów powoduj¡ce ich uporz¡dkowanie powinno byc wykonywane w miejscu, oraz »e metody przenoszenia obiektów z tablicy a do wynikowej tablicy b s¡ o wiele mniej interesuj¡ce.

Dobr¡ miar¡ efektywno±ci jest liczba Po koniecznych porówna«

kluczy i liczba Pr koniecznych przestawie«/przesuni¦¢ obiektów.

Dobre algorytmy sortowania wymagaj¡ liczby porówna« rz¦du nlog(n), jednak»e na pocz¡ku warto omówi¢ kilka ªatwych i naturalnych metod sortowania, zwanych metodami prostymi.

Wymagaj¡ one rz¦du n2 porówna« kluczy.

(32)

Metody sortowania przeznaczone do sortowania obiektów w miejscu mozna podzieli¢ na 3 zasadnicze grupy:

sortowanie przez wstawianie (insertion sort) sortowanie przez wybieranie (selection sort)

sortowanie przez zamian¦ (exchange sort = bubble sort)

(33)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

1. Sortowanie przez proste wstawianie (insertion sort)

Metoda powszechnie stosowana przez graj¡cych w karty. :) Obiekty s¡ podzielone umownie na ci¡g wynikowy i ci¡g ¹ródªowy.

W ka»dym kroku, pocz¡wszy od i=2, i-ty element ci¡gu ¹ródªowego przenosi si¦ do ci¡gu wynikowego, wstawiaj¡c go w odpowiednim miejscu.

for i=2 to n

'wstaw x w odpowiednim miejscu ci¡gu wynikowego'

(34)
(35)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Dziaªanie algorytmu opiera si¦ o 2 p¦tle zagnie»d»one.

W przypadku pesymistycznym, gdy dane posortowane sa malej¡co (a cel jest  rosn¡co), p¦tla zewn¦trzna wybiera n-1 elementów i dla ka»dego z nich wykonuje w p¦tli wewn¦trznej n-2 przesuni¦¢, co daje zªo»ono±¢ rz¦du O(n2)

Algorytm prostego wstawiania mo»na ªatwo poprawi¢. Jak?

(36)

Je»eli zauwa»ymy, »e ci¡g wynikowy, w którym nale»y umie±ci¢

obiekt jest ju» uporz¡dkowany. → Wówczas mo»na zastosowa¢

szybsz¡ metod¦ ustalenia miejsca wstawienia nowego obiektu.

Najprostszym sposobem jest zastosowanie metody przeszukiwania poªówkowego, w którym próbkuje si¦ ci¡g wynikowy w ±rodku i dzieli go dalej na poªow¦, a» znajdzie si¦ miejsce wstawienia nowego obiektu. → WSTAWIANIE POŠÓWKOWE.

(37)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Niestety, wskutek zastosowania tego ulepszenia zmniejsza si¦ tylko liczba porówna«, a nie liczba potrzebnych przesuni¦¢. W

rzeczywisto±ci przesuwanie obiektów, tzn. kluczy i zwi¡zanych z nimi informacji, jest przewa»nie o wiele bardziej czasochªonne niz porównywanie kluczy, tak wi¦c najwa»niejszy skªadnik wci¡» jest rz¦du n2.

Wstawianie obiektu i nast¦puj¡ce po tym przesuwanie caªego wiersza obiektów o 1 pozycj¦ jest nieekonomiczne. Lepszych wyników mo»na si¦ spodziewa¢ po metodzie, w której przemieszcza si¦ tylko pojedyncze obiekty na wieksz¡ odlegªo±¢.

(38)

2. Sortowanie przez proste wybieranie. (sekection sort

W zbiorze nieposortowanym (1..n) wyszukujemy element najmniejszy i zamieniamy go z elementem na 1 pozycji.

Powtarzamy czynno±¢ ustawiaj¡c znalezione elementy na kolejnych pozycjach 2,3, itd.

(39)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

(40)

Traktuj¡c porównania jako operacje dominuj¡ce uzyskujemy:

(n −1) + (n − 2) + ... + 1 = n(n−21) ∼ O(n2)

(41)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

3. sortowanie B¡belkowe. (bubble sort)

Sortowanie przez prost¡ zamian¦ opiera si¦ na zasadzie porównywania i zamiany par s¡siaduj¡cych ze sob¡ obiektów dopóty, dopóki wszystkie obiekty nie b¦d¡ posortowane.

Podobnie jak poprzednio, powtarzamy przej±cia przez tablic¦

przesuwaj¡c za ka»dym razem najmniejszy z pozostaªych obiektów na lewy koniec tablicy.

Uzyskana zªo»ono±¢ O(n2)

(42)
(43)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Mo»na ªatwo wprowadzi¢ pewne ulepszenia do tego algorytmu:

zapami¦tanie, czy w trakcie przej±cia dokonywano jaki± zmian.

Przej±cie, w którym nie mo»na ju» wprowadzi¢ »adnej zmiany, ko«czy wykonanie algorytmu.

Dodatkowo mo»na zapami¦ta¢ pozycj¦ (k) ostatniej zmiany, a nie tylko fakt jej wykonania. Jasne jest i» wszystkie pary obiektów s¡siaduj¡cych poni»ej tego indeksu (k) s¡ juz ustawione w po»¡danej kolejno±ci.

(44)

Pojedynczy ¹le ustawiony bombelek z 'ci¦»kiego' ko«ca tablicy, która oprócz jednego obiektu jest ju» posortowana, zostanie przeniesiony na miejsce, w pojedynczym przej±cu, a ¹le ustawiony obiekt z 'lekkiego' ko«ca bedzie zmierzaª w stron¦ wªa±ciwego miejsca tylko o jeden krok w ka»dym przej±ciu.

np tablica:

[12, 18, 42, 44, 55, 67, 94, 06] b¦dzie posortowana w 1 przej±ciu ale

[94, 06, 12, 18, 42, 44, 55, 67] wymaga do posortowania 7 przej±¢

Ta nienaturalna asymetria sugeruje trzecie ulepszenie:

→zmiana kierunku kolejnych przej±¢ → SHAKE SORT (sortowanie mieszane, sortowanie przez wytrz¡sanie, cocktail sort)

(45)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Zaproponowane ulepszenia wci¡» nie wpªywaj¡ na liczb¦ przesuni¦¢

obiektów, redukuj¡ tylko liczb¦ zb¦dnych podwójnych sprawdze«.

Mo»na wykaza¢, »e ±rednia odlegªo±¢ jak¡ ka»dy z n obiektów musi przeby¢ podczas sortowania wynosi n3 miejsc.

(46)

Ta uwaga podsuwa nam pewien kierunek poszukiwa« ulepszonych tzn. efektywniejszych metod sortowania. We wszystkich bowiem prostych metodach sortowania, tak naprawd¦ przesuwa si¦ ka»dy obiekt w jednym elementarnym kroku o 1 miejsce. Dlatego te» ich wykonania musi wymaga¢ rz¦du n2 takich kroków. Ka»de

ulepszenie musi si¦ opiera¢ na zaªo»eniu przesuwania obiektów w pojedynczym kroku na wi¦ksz¡ odlegªo±¢.

Poni»ej omówione zostan¡ 3 ulepszone metody, po jednej dla ka»dej podstawowej metody sortowania: wstawianie, wybieranie i zamiana.

(47)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

4. Shell Sort

czyli: sortowanie za pomoc¡ malej¡cych przyrostów.

Pierwsza wersja opublikowana przez Donalda shella w 1959r.

Jest to algorytm wieloprzebiegowy. Kolejne przebiegi polegaj¡ na sortowaniu przez proste wstawianie elementów oddalonych od siebie o h miejsc. Tzw. h-sortowanie.

Warto±ci h s¡ ustalone i zmniejszaj¡ si¦ a» do warto±ci 1.

W poni»szym przykªadzi kolejne warto±ci h to: 5, 3, 1.

(48)
(49)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

W pierwszej chwili nasuwa si¦ pytanie, czy konieczno±¢ wykonania kilku faz sortowania, z których ka»da obejmuje wszystkie obiekty nie zwieksza jeszcze bardziej nakªadu pracy?

Jednak»e ka»dy krok sortowania ªa«cucha, albo obejmuje

stosunkowo maªo obiektów, albo dotyczy obiektów ju» do±¢ dobrze uporz¡dkowanych i wymagaj¡cych wykonania niewielu przestawie«.

Ka»dy ci¡g warto±¢i przyrostów jest do zaakceptowania, je»eli tylko ostatni przyrost b¦dzie 1, poniewa», w najgorszym razie - w

ostatniej fazie wykonana zostanie caªa praca.

(50)

Analiza tego algorytmu prowadzi do pewnych bardzo trudnych problemów matematycznych, z których wiele nie doczekaªo si¦

jeszcze rozwi¡zania. W szczególno±ci nie wiadomo, jaki wybór przyrostów pozwala uzyska¢ najlepsze rezultaty.

Zaskakuj¡ce jest jednak»e »e przyrosty nie powinny by¢ swoimi dzielnikami.

Unika si¦ wtedy sytuacji, gdy ka»da faza sortowania ª¡czy ze sob¡

ªa«cuchy nie maj¡ce przedtem ze sob¡ »adnego zwi¡zku.

(51)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Po»¡dane jest, aby ró»ne ªa«cuchy oddziaªywaªy na siebie jak najcz¦±ciej, oraz by przwdziwe byªo nast¦puj¡ce twierdzenie:

Tw.

Je»eli ci¡g posortowany co 'k', posortujemy co 'i', to ci¡g ten pozostaje posortowany co 'k'.

Knuth wykazuje »e trafnym wyborem przyrostów jest ci¡g:

1, 4, 13, 40, 121, ... gdzie hk−1 =3hk+1, ht =1, t = blog3(n)c −1 Zaleca te» ci¡g:

1, 3, 7, 15, 31, ... gdzie hk−1 =2hk+1, ht =1, t = blog2(n)c −1 Analiza matematyczna dla drugiego zestawu wykazuje, »e do posortowania n obiektów konieczny jest nakªad pracy rz¦du O(n1,2).

(52)
(53)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

5. Heap Sort

Sortowanie drzewiaste = przez kopcowanie = stogowe

Kopiec jest drzewem binarnym, w którym wszystkie w¦zªy speªniaj¡

nast¦puj¡cy warunek:

W¦zeª nadrz¦dny jest wiekszy lub równy w¦zªom potomnym.

Zasadnicz¡ zalet¡ kopców jest staªy czas dost¦pu do elementu maksymalnego (lub minimalnego) oraz logarytmiczny czas wstawiania i usuwania elementów; ponadto ªatwo mo»na go implementowa¢ w tablicy.

Algorytm skªada si¦ z dwóch faz:

reorganizacja elementów w celu utworzenia kopca wªa±ciwe sortowanie

(54)

Tworzenie kopca

Pocz¡tkowo do kopca nale»y tylko pierwszy element tablicy.

Nast¦pnie kopiec rozszerzany jest o kolejne pozycje tablicy, przy czym przy ka»dym rozszerzeniu, nowy element jest przemieszczany w gór¦ kopca tak, aby speªnione byªy relacje mi¦dzy w¦zªami.

(55)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

(7 5 9 6 7 8 10)

(56)

Podstawow¡ zalet¡ algorytmu jest to, »e do stworzenia kopca wykorzysta¢ mo»na t¦ sam¡ tablic¦, w której pocz¡tkowo znajduj¡

si¦ nieposortowane elementy. Dzi¦ki temu uzyskuje si¦ staª¡

zªo»ono±¢ pami¦ciow¡.

Dzi¦ki logarytmicznej zªo»ono±ci pojedynczych operacji wstawiania (rozszerzania kopca) caªkowita zªo»ono±¢ tego etapu to

O(n ∗ log (n))

(57)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

sortowanie

Po utworzeniu kopca nast¦puje wªa±ciwe sortowanie. Polega ono na usuni¦ciu wierzchoªka kopca zawieraj¡cego element maksymalny, a nast¦pnie wstawieniu w jego miejsce elementu z ko«ca kopca (ostatni li±¢) i odtworzenie porz¡dku kopcowego.

W zwolnione w ten sposób miejsce, zaraz za ko«cem zmniejszonego kopca wstawia si¦ usuni¦ty element maksymalny. Operacje te powtarza si¦ a» do wyczerpania elementów w kopcu.

(58)

Rozbiór kopca wykonuje si¦ w 2 zagnie»d»onych p¦tlach. P¦tla nr 1 zamienia miejscami kolejne li±cie ze spodu drzewa z korzeniem i wykonuje si¦ n-1 razy.

P¦tla wewn¦trzna przywraca w strukturze warunek kopca, rozpoczynaj¡c przegl¡danie od korzenia, wykonuj¡c si¦ w ka»dym obiegu max. log2n razy.

Daje to górne ograniczenie O(nlog(n) w przypadku pesymistycznym.

(59)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

(60)

Algorytm sortowania przez kopcowanie jest na ogóª nieco wolniejszy ni» sortowanie szybkie. Jego przewag¡ jest lepsza zªo»óno±¢

pesymistyczna wynosz¡ca O(n ∗ log(n)), podczas gdy dla quicksort to O(n2), co jest nie do przyj¦cia dla du»ych zbiorów danych.

Tak»e zªo»ono±c pami¦ciowa O(1) jest lepsza ni» Ω(log(n)) (quicksort).

Heapsort jest nieco wolniejszy od algorytmu mergesort, maj¡cego tak¡ sam¡ asymptotyczn¡ zªo»óno±¢ czasow¡. Mergesort wymaga jednak Ω(n) dodatkowej pami¦ci.

(61)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

6. QuickSort - sortowanie przez podziaª, C. A. Hoare

Ulepszenia wprowadzone do metody sortowania przez zamian¦ daj¡

najlepsz¡ ze znanych dtychczas metod sortowania tablic.

W metodzie sortowania szybkiego korzysta si¦ z faktu, »e w celu zapewnienia efektywno±ci powinno si¦ wymieni¢ obiekty poªo»one daleko od siebie.

Procedura sortowania dzieli si¦ na dwie zasadnicze cz¦±ci. Cz¦±¢

sªu»¡c¡ do wªa±ciwego sortowania, która nie robi nic oprócz

rekurencyjnego wywoªania samej siebie, oraz procedury rozdzielania elementów tablicy wzgl¦dem warto±ci pewnej komórki tablicy sªu»¡cej za o± (ang. pivot) podziaªu.

(62)

Proces sortowania jest wykonywany przez t¦ wªa±nie procedur¦, natomiast rekurencja zapewnia poskªadanie wyników cz¡stkowych i w konsekwencji posortowanie caªej tablicy.

O± podziaªu mo»e by¢ elementem ±rodkowym, pierwszym, ostatnim, median¡ b¡d¹ elementem losowym, wpªywaj¡c na wydajno±¢ algorytmu.

W przypadku typowym algorytm ten jest najszybszym algorytmem sortuj¡cym z klasy zªo»ono±ci obliczeniowej O(nlog(n)).

(63)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Musimy jednak pami¦ta¢, »e w pewnych sytuacjach, jak niekorzystny ukªad danych wej±ciowych lub wybieranie jako osi najmniejszego lub najwi¦kszego elementu, jego klasa zªoó»no±ci degraduje si¦ do O(n2).

Hoare proponuje aby wyboru x dokonywa¢ 'losowo' lub wybiera¢

median¦ z maªej próbki (np. 3 kluczy). Tego typu racjonalny wybór prawie zupeªnie nie wpªywa na ±redni¡ wydajno±¢ metody

sortowania szybkiego, lecz poprawia znacz¡co jej wydajno±¢ w najgorszych przypadkach.

(*) Mediana na obiektów jest zdeniowana jako obiekt mniejszy (lub równy) od poªowy n obiektów oraz wi¦kszy (lub równy) od drugiej poªowy n obiektów.

(64)

7. MergeSort - sortowanie przez scalanie

Metoda rekurencyjna z gatunku dziel i zwyci¦»aj, o zªo»ono±ci O(nlog (n))

Idea algorytmu:

→ dziel n-elementowy ci¡g na dwa podci¡gi po n2 elementów, a»

do uzyskania zbiorów jednoelementowych

→ rozpocznij scalanie bior¡c kolejne wielko±ciowo elementy z obu zbiorów

Uwaga: zbiory sortowane mog¡ by¢ ró»nej dªugo±ci, lub tra¢ do zbioru wynikowego niesymetrycznie, powoduj¡c, »e jeden zbiór opró»nia si¦ szybciej ni» drugi.

(65)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

(66)

Sortowanie przez scalanie dzi¦ki zastosowaniu metody 'dziel i zwyci¦»aj' pozwala osi¡gn¡¢ zªo»ono±¢ O(nlog(n) i to, w przeciwie«stwie do sortowania szybkiego', w ka»dym przypadku.

Du»¡ wad¡ jest wi¦ksze zu»ycie pami¦ci z powodu konieczno±ci zastosowania dodatkowej, pomocniczej struktury danych i wpªyw¢

negatywnie na efektywno±¢.(* potrzebna jest pami¦¢ dla 2n obiektów, co przy bardziej zªo»ónych danych mo»e generowa¢

znaczny koszt)

(67)

Notacje asymptotyczne Analiza Czasu Dziaªania Programu Sortowanie - algorytmy klasy P

Co nale»y wiedzie¢?

Co oznacza zªo»ono±¢ algorytmu. Jak deniujemy

asymptotyczne tempo wzrostu i jakie s¡ 3 najbardziej znane notacje asymptotyczne.

Dokona¢ praktycznej analizy czasu dziaªania prostego algorytmu

Rozró»nia¢ metody sortowania stabilnegi i niestablilnego, denicja plus przykªady metod

Umie¢ przedstawi¢ dziaªanie zaprezentowanych na wykªadzie wybranych metod sortowania

Cytaty

Powiązane dokumenty

Obok zadań wychowawczych nauczyciele winni wykonywać również działania opiekuńcze i profilaktyczne odpo- wiednio do istniejących potrzeb. Konieczne jest podejmowanie

Morskie planowanie przestrzenne (MSP) to publiczny proces analizowania i alokacji przestrzennego i czasowego rozmieszczenia działalności człowieka na obszarach morskich w

Interesariuszami morskich planów zagospodarowania przestrzeni nazywamy jednostki, grupy czy organizacje, które w sposób bezpośredni lub pośredni są lub będą..

Zasada jest jedna - chodzi o to, aby dziecko w sposób niedestrukcyjny i całko- wicie bezpieczny dla siebie i innych, nauczyło się mówienia o przeżywanych emocjach,

Broniły się tu oddziały skoncentrowane w dzielnicy na początku Powstania wzmocnione resztkami oddziałów, które wyszły kanałami ze Starego Miasta.. 15 września z prawego

2. obrazę przepisów postępowania, w szczególności przepisu art. kpk polegającą na „niepodaniu” czym kierował się sąd wydając zaskarżony wyrok oraz

Poszczególne siedliska Sieniawskiego Obszaru Chronionego Krajobrazu współtworzą ekosystem, a każdy element tego ekosystemu (rośliny, ssaki, ptaki, krajobraz, korytarze

5. przyznania przez pracodawcę wyższego wynagrodzenia – przeszeregowania. Pracownikowi przysługuje dodatek za wysługę lat w wysokości po pięciu latach pracy 5%