TEORETYCZNE PODSTAWY INFORMATYKI zło ˙zono ´s ´c ...
TEORETYCZNE PODSTAWY INFORMATYKI zło ˙zono ´s ´c ...
TEORETYCZNE PODSTAWY INFORMATYKI zło ˙zono ´s ´c ...
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 />
✪