Ocena przydatności algorytmu – czas działania (złożoność czasowa)

13
Ocena przydatności algorytmu – czas działania (złożoność czasowa) Oznaczenia:

description

Ocena przydatności algorytmu – czas działania (złożoność czasowa). Oznaczenia:. Ocena przydatności algorytmu – czas działania (złożoność czasowa) – analiza przypadku pesymistycznego. - PowerPoint PPT Presentation

Transcript of Ocena przydatności algorytmu – czas działania (złożoność czasowa)

Page 1: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa)

Oznaczenia:

Page 2: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa) – analiza przypadku pesymistycznego

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze, to interesuje nas złożoność obliczeniowa w najgorszym przypadku.

Gwarancja, że algorytm nigdy nie będzie działał dłużej

Page 3: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa) – analiza przypadku pesymistycznego

Warto pamiętać!

Może się zdarzyć, że algorytm o pesymistycznej złożoności

czasowej rzędu nlgn będzie dla większości danych

wejściowych działał wolniej niż algorytm o pesymistycznym

czasie działania rzędu n2.

Istnieją algorytmy o pesymistycznej złożoności czasowej rzędu

wykładniczego, które często działają szybciej niż algorytm o

złożoności wielomianowej, a nawet liniowej (np. tzw. metoda

simplex programowania liniowego).

Page 4: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa) – analiza przypadku pesymistycznego

Miara wrażliwości pesymistycznej algorytmu bada, na ile wielkość

Tmax(n) odzwierciedla rzeczywisty czas działania algorytmu.

Page 5: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa) – analiza przypadku średniego

Zachowanie algorytmu dla losowych danych wejściowych określa średnia (lub oczekiwana) złożoność.

Przypomnienie!

Page 6: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa)

Podsumowanie:

Miara wrażliwości pesymistycznej i miara wrażliwości oczekiwanej

informują, jak bardzo zachowanie algorytmu dla rzeczywistych

danych wejściowych może odbiegać od zachowania opisanego za

pomocą pesymistycznej i oczekiwanej złożoności czasowej.

Im większe są te wartości, tym algorytm jest bardziej wrażliwy na dane

wejściowe.

Page 7: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa) - przykład

Przykład:

Rozważmy zbiór danych ZDWn jako n-wyrazowych ciągów uporządkowanych

liczb naturalnych. Rozważmy dalej typowy algorytm w rodzaju „dziel i

zwyciężaj” sprawdzenia, czy liczba naturalna x jest elementem ciągu zdwZDWn.

Rozwiązanie:

Przyjmijmy, że ilość n elementów ciągu {a1,a2,…an} jest potęgą dwójki, czyli n=2k,

gdzie k jest pewną liczba naturalną. Sprawdzamy, czy x==an/2. Jeśli tak, to algorytm

kończy działanie, jeśli nie, to po sprawdzeniu, że x<an/2 przechodzimy do

przeszukania lewej połowy ciągu o ilości elementów równej n/2; jeśli spełniona jest

nierówność przeciwna, to przeszukujemy prawą połowę ciągu.

Maksymalną pesymistyczną liczbę porównań otrzymamy, gdy kolejne zagłębienia

rekurencyjne doprowadzą do zbioru dwuelementowego, dla którego dwa porównania

dadzą ostateczną odpowiedź dla zadania rozwiązywanego tym algorytmem.

Page 8: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa) - przykład

Otrzymujemy:

Tmax(n)=Tmax(n/2)+2,

gdzie 2 stanowią dwa dodatkowe porównania na każdym etapie.

Zatem dla

Ponieważ k=log2n, zatem

Tmax(n)=2*(log2n)

Dostajemy po rozwinięciu postać funkcji pesymistycznej złożoności

czasowej:

Tmax(n)=Tmax(n/2)+2=Tmax(2k-1)+2=Tmax(2k-2)+2+2=…=

=Tmax(2k-(k-1))+(k-1)*2=Tmax(2)+(k-1)*2=2+(k-1)*2=2*k.

Page 9: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa) - przykład

Jest to zatem kres górny zbioru liczb, które powstają jako różnice ilości

operacji dominujących. Zatem od liczby największej z możliwych

należy odjąć najmniejszą z możliwych, żeby otrzymać taki kres górny.

Ponieważ najmniejszą ilością porównań dla dowolnego n jest jedno

porównanie, a największa ilość wyrażą się obliczoną właśnie

Tmax(n)=2*(log2n), to = =2*(log2n)-1

Policzmy teraz pesymistyczną wrażliwość tego algorytmu. Przypomnijmy, że

Pesymistyczna wrażliwość złożoności czasowej jest zatem duża i

możemy się spodziewać dużej zmienności złożoności obliczeniowej.

Page 10: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa) - przykład

Policzmy teraz typową wartość złożoności obliczeniowej, czyli dla losowo

wybranych n liczb. Przypomnijmy:

Określmy kolejno elementy tej definicji:

n={zdwZDWn} – zbiór zdarzeń elementarnych,

Xn – zmienna losowa, której wartością jest l(zdw)- liczba operacji dominujących na n,

pnk –rozkład zmiennej losowej Xn, czyli prawdopodobieństwo, że dla danych

wejściowych rozmiaru n algorytm wykona k operacji dominujących, tzn. pnk=p{zdw

n: l(zdw)=k}, przy k całkowitym, k [1, 2*(log2n) ].

Page 11: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa) - przykład

Ponieważ nasze prawdopodobieństwo pnk nie zależy od k, więc

pnk=1/(2*log2n) dla każdego całkowitego k [1, 2*(log2n)]. Stąd

nk

k

nk

k

nk

knk knnkpk

222 *log2

12

*log2

12

*log2

1

*)log*2/1()))log*2/(1(*()*(

nnn

nn

n

n

221

22*log21

22*log21

2

loglog*)log*21(*

)log*2(**))log*2/(1(

2

2

Zauważmy, że Tśr(n) jest o ½ większe od połowy Tmax(n).

Page 12: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa) - przykład

Obliczmy na koniec miarę wrażliwości oczekiwanej algorytmu.

W naszym przypadku sumujemy po całkowitych k [1, 2*(log2n)]. Stąd

otrzymujemy wyniki:

0

2))(()(k

nkśr pnTkn

Page 13: Ocena przydatności algorytmu – czas działania  (złożoność czasowa)

Ocena przydatności algorytmu – czas działania (złożoność czasowa) - przykład

Otrzymane wyniki są może mało czytelne, ale można je przybliżać,

wykorzystując oszacowania asymptotyczne.

)1)(log4(...

))log2/1(())(()(

2212

1

*log2

1*log212

2

*log2

1

22

2

2

n

nkpnTknn

kn

n

knkśr

Szczegółowe rachunki na tablicy

Takie oszacowania zostaną podane później