27.01.2015 Views

TEORETYCZNE PODSTAWY INFORMATYKI zło ˙zono ´s ´c ...

TEORETYCZNE PODSTAWY INFORMATYKI zło ˙zono ´s ´c ...

TEORETYCZNE PODSTAWY INFORMATYKI zło ˙zono ´s ´c ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

✬<br />

✩<br />

<strong>TEORETYCZNE</strong> <strong>PODSTAWY</strong> <strong>INFORMATYKI</strong><br />

<strong>zło</strong>żoność algorytmiczna<br />

klasyfikacja problemów algorytmicznych<br />

dr hab. inż. Andrzej Obuchowicz, prof. UZ<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 1/20<br />

✬<br />

✩<br />

Algorytm „dobry”<br />

✘ Poprawność algorytmiczna – własność<br />

oczekiwana od każdego algorytmu.<br />

✘ Kryteria wyboru algorytmu spośród algorytmów<br />

poprawnych:<br />

✖ konieczność wykorzystania możliwie jak<br />

najmniej pamięci;<br />

✖ czas wykonywania możliwie jak najkrótszy.<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 2/20<br />

✬<br />

Porównywanie czasu działania algorytmów<br />

✩<br />

Na czas pracy algorytmu maja˛<br />

wpływ:<br />

✔ specyfika problemu algorytmicznego;<br />

✔ konfiguracja sprzętu komputerowego;<br />

✔ wybór języka programowania;<br />

✔ wybór kompilatora;<br />

✔ warunki wykonywania programu (liczba<br />

procesów wykonywanych „w tle”, temperatura<br />

procesora itp.).<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 3/20<br />

✬<br />

Złożoność jako funkcja rozmiaru problemu<br />

Czas pracy algorytmu zależy od rozmiaru zadania. Przykłady<br />

zadań o rozmiarze n:<br />

✒ znaleźć najmniejsza˛<br />

wartość w tablicy n liczb całkowitych;<br />

✒ rozwiazać ˛ układ n równań liniowych A⃗x = ⃗ b na n<br />

niewiadomych;<br />

✒ wynaczyć wartość wielomianu P n (x) = ∑ n<br />

k=0 a kx k dla<br />

wybranej wartości x ⋆ ;<br />

✒ znajdź minimalne drzewo rozpinajace ˛ graf o n<br />

wierzchołkach.<br />

✩<br />

Jeżeli trudno jest wskazać wprost rozmiar zadania to n może<br />

być długościa˛<br />

kodu danych zadania na komputerze.<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 4/20<br />

✬<br />

✩<br />

Definicja <strong>zło</strong>żoności problemu<br />

algorytmicznego<br />

Mówimy, że problem ma złażoność O(g(n))<br />

(rzędu g(n)), jeżeli algorytm go rozwiazuj ˛ acy ˛ dla n<br />

danych wejściowych potrzebuje co najwyżej cg(n)<br />

czasu dla uzyskania wyniku, gdzie c jest pewna˛<br />

stała˛<br />

rzeczywista.<br />

˛<br />

O(g(n)) : g(n) jest asymptotycznie górna˛<br />

granica˛<br />

procesu obliczeniowego.<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 5/20<br />

✬<br />

Asymptotyczne oszacowanie górne<br />

✩<br />

cg( n)<br />

f( n)<br />

n 0<br />

n<br />

O(g(n)) = {f(n) : ∃c > 0 ∃n 0 ∀n > n 0 0 ≤ f(n) ≤ cg(n)}<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 6/20<br />

✬<br />

Asymptotyczne oszacowanie dolne<br />

✩<br />

f( n)<br />

cg( n)<br />

n 0<br />

n<br />

Ω(g(n)) = {f(n) : ∃c > 0 ∃n 0 ∀n > n 0 cg(n) ≤ f(n)}<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 7/20<br />

✬<br />

Asymptotyczne dokładne oszacowanie<br />

✩<br />

f( n)<br />

c1 g( n)<br />

n 0<br />

c2 g( n)<br />

n<br />

Θ(g(n)) = { f(n) : ∃c 1 , c 2 > 0 ∃n 0 ∀n > n 0<br />

c 2 g(n) ≤ f(n) ≤ c 1 g(n) }<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 8/20<br />

✬<br />

Górne i dolne ograniczenia <strong>zło</strong>żoności<br />

✩<br />

O(F 4 )<br />

Z£O¯ONOŒÆ<br />

ALGORYTM O Z£O¯ONOŒCI O(F 4 )<br />

KOLEJNE GÓRNA<br />

OGRANICZENIA<br />

O(F 3 )<br />

ALGORYTM O Z£O¯ONOŒCI O(F 3 )<br />

(F o )<br />

Z£O¯.<br />

NATUR.<br />

(F 2 )<br />

LUKA ALGORYTMICZNA<br />

LUKA ALGORYTMICZNA<br />

DOWÓD, ¯E Z£O¯ONOŒÆ NIE MO¯E<br />

BYÆ LEPSZA NI¯ O(F 2 )<br />

CZAS<br />

POSZUKIWAÑ<br />

OPTYMALNEGO<br />

ALGORYTMU<br />

(F 1 )<br />

DOWÓD, ¯E Z£O¯ONOŒÆ NIE MO¯E<br />

BYÆ LEPSZA NI¯ O(F 1 )<br />

KOLEJNE DOLNE<br />

OGRANICZENIA<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 9/20<br />

✬<br />

Złożoność średnia algorytmu<br />

✩<br />

Niech cf(n,⃗x) będzie czasem pracy algorytmu dla problemu o<br />

rozmiarze n i konkretnych danych ⃗x.<br />

Niech P(⃗x) oznacza prawdopodobieństwo wystapienia ˛ danych ⃗x<br />

(przypadek dyskretny),<br />

lub niech P(⃗a < ⃗x < ⃗ b) = ∫ b 1<br />

a 1<br />

. . . ∫ b m<br />

a m<br />

µ(⃗x)dx 1 . . .dx m będzie<br />

prawdopodobieństwem że dane ⃗x znajda˛<br />

się w zakresie (⃗a, ⃗ b)<br />

(przypadek ciagły), ˛ funkcja µ(⃗x) jest gęstościa˛<br />

prawdopodobieństwa<br />

wektora losowego ⃗x.<br />

Złożoność średnia jest O(F s (n)), gdzie<br />

F s (n) = ∑ ⃗x<br />

f(n,⃗x)P(⃗x) (przypadek dyskretny)<br />

F s (n) = ∫ b 1<br />

a 1<br />

. . . ∫ b m<br />

a m<br />

f(n,⃗x)µ(⃗x)dx 1 . . .dx m (przypadek ciagły)<br />

˛<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 10/20<br />

✬<br />

Złożoność średnia, cd<br />

✩<br />

Możliwe histogramy czasu wykonań dwóch<br />

algorytmów rozwiazuj ˛ acych ˛ hipotetyczny problem<br />

algorytmiczny dla zbioru losowych zestawów danych.<br />

N(t)<br />

t<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 11/20<br />

✬<br />

Problemy łatwo- i trudnorozwiazywalne<br />

˛<br />

O(log(n))<br />

O(n)<br />

O(n log(n))<br />

O(n 2 )<br />

. . .<br />

O(n k )<br />

O(2 n )<br />

O(n!)<br />

O(n n )<br />

⎫<br />

⎪⎬<br />

⎪⎭<br />

⎫<br />

⎪⎬<br />

⎪⎭<br />

problemy łatworozwiazywalne<br />

˛<br />

problemy trudnorozwiazywalne<br />

˛<br />

✩<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 12/20<br />

✬<br />

✩<br />

funkcja<br />

rozmiar problemu n<br />

<strong>zło</strong>żoności 10 100 1000 10000<br />

log(n) 3.2 6.6 10.0 13.3<br />

n 10 100 1000 10000<br />

n log(n) 33.2 664.4 9.9 × 10 3 1.3 × 10 5<br />

n 2 1000 7746 60000 5.6 × 10 6<br />

2 n 1024 1.27 × 10 30 1.07 × 10 301 2.0 × 10 3010<br />

n! 3.0 × 10 6 9.3 × 10 157 4.0 × 10 2567 > 10 5000<br />

szacowana liczba mikrosekund od wielkiego wybuchu: 10 24<br />

szacowana liczba protonów w znanym wszechświecie: 10 126<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 13/20<br />

✬<br />

✩<br />

funkcja<br />

<strong>zło</strong>żoności<br />

czasowej<br />

maksymalny rozmiar problemu<br />

możliwy do rozwia¸zania w czasie<br />

(przy założeniu 10 6 operacji na sekundȩ)<br />

1 sek 1 min 1 godz 1 rok<br />

log(n) 2 106 2 6×107 2 3.6×109 2 3×1013<br />

n 10 6 6 × 10 7 3.6 × 10 9 3 × 10 13<br />

n log(n) 62746 2.8 × 10 6 1.3 × 10 8 8.0 × 10 11<br />

n 2 1000 7746 60000 5.6 × 10 6<br />

2 n 19 25 31 44<br />

n! 9 11 12 16<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 14/20<br />

✬<br />

✩<br />

Zawieranie się klas <strong>zło</strong>żoności<br />

EXPSPACE<br />

EXPTIME<br />

PSPACE<br />

PTIME<br />

LOGSPACE<br />

LOGTIME<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 15/20<br />

✬<br />

Problem klasy LOG: przeszukiwanie binarne<br />

✩<br />

Acki<br />

Backi<br />

Cacki<br />

Dacki<br />

Ecki<br />

Fecki<br />

Gecki<br />

Hecki<br />

Icki<br />

Kicki<br />

Licki<br />

Micki<br />

Nicki<br />

Ecki=Ecki<br />

Ecki>Dacki<br />

Ecki


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 16/20<br />

✬<br />

✩<br />

Problem klasy P: sortowanie przez<br />

wybieranie<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 17/20<br />

✬<br />

Przykład problemu klasy EXP: wieże Hanoi<br />

✩<br />

G<br />

O<br />

Y<br />

B<br />

1 2 3<br />

liczba przestawień : 2 n − 1<br />

G 1–3<br />

O 1–2<br />

G 3–2<br />

Y 1–3<br />

G 2–1<br />

O 2–3<br />

G 1–3<br />

B 1–2<br />

G 3–2<br />

O 3–1<br />

G 2–1<br />

Y 3–2<br />

G 1–3<br />

O 1–2<br />

G 3–2<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 18/20<br />

✬<br />

✩<br />

Nieroztrzygalność i nierozwiazywalność<br />

˛<br />

Problemy nieroztrzygalne (nierozwiazywalne) ˛ — nie<br />

istnieje żaden algorytm poprawny, tzn. jakikolwiek<br />

algorytm nie wymyślimy, to zawsze będzie istniał taki<br />

zbiór poprawnych danych wejściowych, że<br />

✐ albo algorytm odda błędne wyniki,<br />

✐ albo zawiesi się,<br />

✐ albo będzie działał w nieskończoność.<br />

✫<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 19/20<br />

✬<br />

Przykład problemu nieroztrzygalnego:<br />

małpia układanka<br />

✩<br />

✫<br />

Dane jest n opisów kart.<br />

Liczba kart danego opisu<br />

jest nieskończona.<br />

Czy możliwe jest pokrycie<br />

dowolnej skończonej powierzchni<br />

tak, aby boki kart przystawały<br />

do siebie małpami i kolorami<br />


TPI <strong>zło</strong>żoność algorytmiczna – dr hab. inż. A. Obuchowicz, prof. UZ 20/20<br />

✬<br />

✩<br />

Problemy z nieroztrzygalnościa: ˛ waż ˛ domino<br />

Q=płaszczyzna: roztrzygalne<br />

Q=obszar ograniczony: roztrzygalne<br />

Q=półpłaszczyzna: nieroztrzygalne<br />

Dane jest n opisów kart.<br />

Liczba kart danego opisu<br />

jest nieskończona.<br />

Czy możliwe poprowadzenie<br />

węża pomiędzy wybranymi<br />

punktami nie przekraczajac<br />

˛<br />

zadanego obszaru Q<br />

✫<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!