• Nie Znaleziono Wyników

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne

N/A
N/A
Protected

Academic year: 2021

Share "Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne "

Copied!
33
0
0

Pełen tekst

(1)

Oznaczenia:

(2)

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.

(3)

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.

(4)

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

(5)

Warto pamiętać!

Może się zdarzyć, że algorytm o pesymistycznej złożoności czasowej rzędu n lg n będzie dla większości danych

wejściowych działał wolniej niż algorytm o pesymistycznym czasie działania rzędu n

2

.

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).

(6)

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

wielkość T

max

(n) odzwierciedla rzeczywisty czas działania

algorytmu.

(7)

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

(8)

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

(9)

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

Przypomnienie!

(10)

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.

(11)

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 zdwZDWn.

(12)

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 zdwZDWn.

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.

(13)

Otrzymujemy:

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

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

Zatem dla

(14)

Otrzymujemy:

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

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

Zatem dla

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.

(15)

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.

(16)

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

(17)

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ża się obliczoną właśnie

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

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

(18)

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.

(19)

Policzmy teraz typową wartość złożoności obliczeniowej, czyli dla losowo wybranych n liczb. Przypomnijmy:

(20)

Policzmy teraz typową wartość złożoności obliczeniowej, czyli dla losowo wybranych n liczb. Przypomnijmy:

Określmy kolejno elementy tej definicji:

n={zdwZDWn} – zbiór zdarzeń elementarnych,

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

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) ].

(21)

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

k n

k n

k

k n

k

k

nk

k n n k

p k

2 2

2 2*log

1 2

*log 2

1

2

*log 2

1

* ) log

* 2 / 1 ( ))) log

* 2 /(

1 (

* ( )

* (

n n

n

n n

n

n

2 2 1 2

*log 2 2

1

2 2

*log 2 1 2

log log

* ) log

* 2 1

(

*

) log

* 2 (

*

* )) log

* 2 /(

1 (

2

2

(22)

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

k n

k n

k

k n

k

k

nk

k n n k

p k

2 2

2 2*log

1 2

*log 2

1

2

*log 2

1

* ) log

* 2 / 1 ( ))) log

* 2 /(

1 (

* ( )

* (

n n

n

n n

n

n

2 2 1 2

*log 2 2

1

2 2

*log 2 1 2

log log

* ) log

* 2 1

(

*

) log

* 2 (

*

* )) log

* 2 /(

1 (

2

2

Zauważmy, że T

śr

(n) jest o ½ większe od połowy T

max

(n).

(23)

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

(24)

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

śr

n p

nk

T k

n

(25)

) 1 )

(log 4

( ...

)) log

2 / 1 ( (

)) ( (

) (

2 12 2

1

*log 2

1

*log 2 2 1 2

*log 2

1

2 2

2 2

  

n

n k

p n

T k

n

n

k

n n

k

śr nk

Szczegółowe rachunki na tablicy

(26)

Otrzymane wyniki są może mało czytelne, ale można je przybliżać, wykorzystując oszacowania asymptotyczne.

) 1 )

(log 4

( ...

)) log

2 / 1 ( (

)) ( (

) (

2 12 2

1

*log 2

1

*log 2 2 1 2

*log 2

1

2 2

2 2

  

n

n k

p n

T k

n

n

k

n n

k

śr nk

Szczegółowe rachunki na tablicy

Takie oszacowania zostaną podane później

(27)

Służą do wyznaczenia liczby operacji dominujących

(28)
(29)
(30)
(31)
(32)
(33)

Cytaty

Powiązane dokumenty

Niech F b¦dzie σ− ciaªem podzbiorów

Jak zmieni się fenotyp i przystosowanie, jeśli zmienimy pierwszy bit ch_opt.. A jeśli zmienimy ostatni

Jak się okazuje dla funkcji lewostronnie ciągłej F , funkcja zbioru λ F jest przeliczalnie addytywna na pierścieniu odcinków i rozszerza się jednoznacznie do miary borelowskiej

Zidentyfikowany model dynamiczny układu napędowego posłużył jako źródło otrzymywania danych wejściowych dla sieci neuronowych.. THE TOOTHED GEAR OF DYNAMIC MODEL AS A BASE

Przy założeniu, że długości rozmów mają rozkład normalny, wyznacz przedział ufności dla średniej długości rozmowy na poziomie ufności

 Jeśli wykonanie algorytmu zależne jest od zestawu danych wejściowych, to wyróżnia się:.

Jeśli wykonanie algorytmu zależne jest od zestawu danych wejściowych, to wyróżnia się:.

[r]