Technologie informacyjne – Wykład VII-IX

Transkrypt

Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
A. Matuszak
19 marca 2013
A. Matuszak
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Wykład VII
Algorytm
Pseudokod
Wykład VIII
Rekurencja
Wykład IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
A. Matuszak (2)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Algorytm
Pseudokod
Algorytm
Gotowanie jajek na miękko
I
weż czysty garnek
I
włóż potrzebną ilość jajek
I
nalej zimnej wody, tak aby przykryła jajka
I
postaw na kuchence
I
zaczekaj, aż woda zcznie wrzeć
I
od momentu wrzenia gotuj jeszcze 2.5 minuty
I
wyjmij jajka, ochłodź w zimnej wodzie
I
jajka są gotowe do jedzenia
A. Matuszak (3)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Algorytm
Pseudokod
Ciąg instrukcji, operacji
weź czysty garnek
2: włóż potrzebną ilość jajek
3: nalej zimnej wody, tak aby przykryła jajka
4: . . .
1:
∆ ←− b 2 −√4ac
∆
2: x1 ←− −b−
2a
1:
x2 ←−
4: . . .
3:
√
−b+ ∆
2a
...
2: Znajdź najmniejszy pierwiastek równania kwadratowego
3: . . .
1:
A. Matuszak (4)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Algorytm
Pseudokod
Schemat Hornera
an x n + an−1 x n−1 + · · · + a2 x 2 + a1 x + a0 =
(. . . ((an x + an−1 ) x + an−2 ) x + · · · + a1 ) x + a0
A. Matuszak (5)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Algorytm
Pseudokod
Wyszukiwanie binarne
Zgadnij liczbę z przedziału 1...100
A. Matuszak (6)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Algorytm
Pseudokod
Za dużo – za mało (bisekcja)
√
3 =?
12 = 1 < 3 za mało, 22 = 4 > 3 za dużo
√
1< 3<2
połowa: 1+2
= 1.5,
1.52 = 2.25 < 3 za mało
√ 2
1.5 < 3 < 2
1.5+2
= 1.75, 1.752 = 3.0625 > 3 za dużo
2
√
1.5 < 3 < 1.75
1.5+1.75
= 1.625, 1.6252 = 2.64.. < 3 za mało
2
√
1.625 < 3 < 1.75
1.625+1.75
= 1.6875, 1.68752 = 2.847.. < 3 za mało
2
√
1.6875 < 3 < 1.75
1.6875+1.75
= 1.71875, . . . ....
2
A. Matuszak (7)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Algorytm
Pseudokod
Sortowanie
51 5 77 35 12 15
Jedynie dwie wartości są widoczne – możliwe są różne strategie
(algorytmy)
Sortowanie proste (min):
51 5 X X X X
X 5 77 X X X
X 5 X 35 X X
X 5 X X 12 X
X 5 X X X 15
5 51 77 35 12 15
A. Matuszak (8)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Algorytm
Pseudokod
Sortowanie
I
proste
[ 151 5 77 35 12 15 ]
[ 5 k 151 77 35 12 15 ]
I
przez scalanie
[ 5 12 k 77 35 151 15 ]
A. Matuszak (9)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Algorytm
Pseudokod
————————————————————
A. Matuszak (10)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Algorytm
Pseudokod
Sito Eratostenesa
1,
1,
1,
1,
2,
2
2,
2,
3, 4, 5, 6, 7, 8, 9,
, 3, 4 , 5, 6 , 7,
3 , 4 , 5, 6 , 7,
3, 4 , 5 , 6 , 7,
10, 11, 12, 13, 14, 15
8 , 9, 10 , 11, 12 , 13, 14 , 15
8 , 9 , 10 , 11, 12 , 13, 14 , 15
8 , 9 , 10 , 11, 12 , 13, 14 , 15
A. Matuszak (11)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Algorytm
Pseudokod
Zapis algorytmu: pseudokod
A. Matuszak (12)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Algorytm
Pseudokod
Instrukcja warunkowa
1:
2:
3:
4:
5:
6:
∆ ←− b 2 − 4ac
if ∆ < 0 then
brak pierwiastków rzeczywistych
end if
if ∆ ≥ 0 then √
∆
x1 ←− −b−
2a
x2 ←−
8: end if
7:
√
−b+ ∆
2a
A. Matuszak (13)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Algorytm
Pseudokod
Pętle
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
while || limx→0 f (x)||∞ ≥ do
...
end while
...
repeat
...
until warunek
...
for i = 1 do n co 5 do
...
end for
A. Matuszak (14)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Algorytm
Pseudokod
Wyszukiwanie binarne
27
1:
2:
3:
4:
5:
6:
7:
8:
9:
Wyszukiwanie binarne(d,g,s)
while g − d > 0 do
p ←−(g+d)/2
if p > s then
g ←−p
else
d ←−p
end if
end while
[1 5 17 35 62 151]
A. Matuszak (15)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Algorytm
Pseudokod
while warunek do
...
if przypadek A then
...
else
...
repeat
...
until kryterium
...
end if
end while
...
for i = 1 do n co 5 do
...
end for
A. Matuszak (16)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Algorytm
Pseudokod
Algorytm Euklidesa (NWD)
1:
Euklides(a,b)
2:
3:
4:
5:
6:
7:
8:
9:
r ←−(a mod b)
while r > 0 do
a ←−b
b ←−r
r ←−(a mod b)
end while
Wynik: b
A. Matuszak (17)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Rekurencja
Algorytmy rekurencyjne
A. Matuszak (18)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Rekurencja
Rekurencja (Rekursja)
Rekurencja albo rekursja (ang. recursion, z łac. recurrere, przybiec
z powrotem) to w programowaniu i w matematyce odwoływanie się
funkcji (sformułowania) do samej siebie.
A. Matuszak (19)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Rekurencja
Matematyka
Ciąg geometryczny
Silnia
xn = k · xn−1
n! = 1 · 2 · · · · · n − 1 · n
n! = n · (n − 1)!
A. Matuszak (20)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Rekurencja
Programowanie rekurencyjne
function y=silnia(n)
if (n==0)|(n==1))
y=1;
else
y= n*silnia(n-1);
endif
endfunction
A. Matuszak (21)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Rekurencja
xn




x0
x −p
n
x =
x 2p+1



x 2p
wykładnik
potęgi
1
10
100
1000
10000
A. Matuszak (22)
=
1
1
=
xp
= x · x 2p
= (x · x)p
liczba
mnożeń
2
6
10
16
19
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Rekurencja
Stos
25
81
42
2 · 24
A. Matuszak (23)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Rekurencja
Ciąg Fibonacciego

 F (0) = 1
F (1) = 1
F (n) =

F (n) = F (n − 1) + F (n − 2)
A. Matuszak (24)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
function y=ifibb(n)
foo=1;
fo=1;
f=1;
for i=2:n
f=foo+fo;
foo=fo;
fo=f;
endfor
y=f;
endfunction
Rekurencja
function y=rfibb(n)
if (n<2)
y=1;
else
y=rfibb(n-1)+rfibb(n-2);
endif
endfunction
A. Matuszak (25)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Rekurencja
Drzewo wywołań
A. Matuszak (26)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Rekurencja
Każde zadanie sformułowne rekurencyjnie można
zaprogramować iteracyjnie i na odwrót
A. Matuszak (27)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
„Dobry” algorytm
A. Matuszak (28)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
A. Matuszak (29)
Wykład VII
Wykład VIII
Wykład IX
A. Matuszak (30)
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Technologie informacyjne – Wykład VII-IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Cechy dobrego algorytmu
niezawodny, zbieżny powinien zawsze dawać wyniki niezależnie od
danych
stabilny (numerycznie) zaburzenia w procesie rozwiązania (np.
zaokrąglenia) nie powinny wpływać na wynik
końcowy
szybki wynik powinien być uzyskiwany jak najszybciej
A. Matuszak (31)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Zadanie z kulami
Dane jest n kul identycznych co do wyglądu, z których dokładnie
jedna lżejsza niż pozostałe. Mamy do dyspozycji wagę szalkową.
Znaleźć lżejszą kulę używając najmniejszej możliwej liczby ważeń.
A. Matuszak (32)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Iloczyn skalarny wektorów
a2
[a1
...
an ] · [b1
b2
...
bn ] T
n mnożeń i n − 1 dodawań
A. Matuszak (33)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Iloczyn macierzy przez wektor

a11
 a21

 ...
an1
a12
a22
...
an2
...
...
...
...
n2 mnożeń i (n − 1)n dodawań
A. Matuszak (34)
 
x1
a1n

a2n 
 ·  x2
...   ...
xn
ann




Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Schemat Hornera (znowu)
an x n + an−1 x n−1 + · · · + a2 x 2 + a1 x +a0
|{z}
|{z} | {z }
|{z}
n mnożeń
2 mnożenia
n-1 mnożeń
n + (n − 1) + · · · + 2 + 1 =
1 2
2 (n
1 mnożenie
1
1
(n + 1)n
= n2 + n
2
2
2
+ n) mnożeń i n dodawań
(. . . ((an x + an−1 ) x + an−2 ) x + · · · + a1 ) x + a0
n mnożeń i n dodawań
A. Matuszak (35)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Złożoność obliczeniowa (I)
Rząd złożoności:
f (n) = O(g (n))
istnieje stała c : f (n) ≤ cg (n)
1 2
2n
+ 32 n −→ O(n2 )
Asymptotyczność oszacowania!!
(algorytm Strassena mnożenia macierzy O(n log n))
A. Matuszak (36)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
(Czasowa) Złożoność obliczeniowa (II)
Dominująca operacja
I
pesymistyczna złożoność czasowa
I
oczekiwana złożoność czasowa
A. Matuszak (37)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Wyszukiwanie binarne
T (1) = 1
T (n) = T ( n2 ) + c
Niech n = 2k (oszacowanie)
T (n) = T (2k ) = T (2k−1 )+c = T (2k−2 )+c +c = · · · = T (20 )+kc
k = log2 n
T (n) = c log2 n + 1
O(log10 n)
A. Matuszak (38)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Popularne rzędy
log n zadanie rozmiaru n zostaje sprowadzone do zadania
rozmiaru n/2 plus pewna stała liczba działań
n złożoność liniowa (schemat Hornera, przeszukiwanie
ciągu)
n log n złożoność liniowo–logarytmiczna (mergesort)
n2 złożoność kwadratowa (rozwiązywanie układu
równań)
n3 n4 . . .np złożoności wielomianowe (odwracanie macierzy)
2n złożoność wykładnicza
n! złożoność wykładnicza n!
A. Matuszak (39)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Rząd zbieżności algorytmu
A. Matuszak (40)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Rząd zbieżności algorytmu
Dwa ciągi w postaci rekurencyjnej:
2
1. xn+1 = − xn5+2
xn2 +5xn +2
2xn +5
2. xn+1 = xn −
=
xn2 −2
2xn +5
Dla początkowego x0 = 0 oba zmierzają do tej samej granicy:
√
−5 + 17
g = lim xn =
≈ −0.43847187
n→∞
2
A. Matuszak (41)
Wykład VII
Wykład VIII
Wykład IX
n
0
1
2
3
4
5
6
7
..
15
16
17
18
19
20
2
xn+1 = − xn5+2
0
-0.4
-0.4320000000000001
-0.4373248
-0.438250596139008
-0.4384127170032392
-0.4384411420860325
-0.4384461270147409
..
-0.4384471871902209
-0.4384471871910033
-0.4384471871911406
-0.4384471871911647
-0.4384471871911688
-0.4384471871911695
A. Matuszak (42)
Technologie informacyjne – Wykład VII-IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
2
xn −2
xn+1 = 2x
n +5
0
-0.4
-0.4380952380952381
-0.4384471571538546
-0.4384471871911695
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
n
0
1
2
3
4
5
6
7
..
15
16
17
18
19
20
en = g − xn
-4.384e-01
-3.845e-02
-6.447e-03
-1.122e-03
-1.966e-04
-3.447e-05
-6.045e-06
-1.060e-06
..
-9.489e-13
-1.664e-13
-2.914e-14
-5.052e-15
-8.882e-16
-1.665e-16
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
en = g − xn
-4.384e-01
-3.845e-02
-3.519e-04
-3.004e-08
-1.665e-16
A. Matuszak (43)
Wykład VII
Wykład VIII
Wykład IX
Technologie informacyjne – Wykład VII-IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Rząd zbieżności algorytmu (II)
Ciąg przybliżeń rozwiązania:
x0 , x1 , x2 . . . −→ r
błąd rozwiązania:
en = |xn − r |
zbieżność kwadratowa:
en+1 ≤ C · en2
zbieżność liniowa:
en+1 ≤ C · en1
A. Matuszak (44)
Technologie informacyjne – Wykład VII-IX
Wykład VII
Wykład VIII
Wykład IX
Dobry algorytm
Złożoność algorytmu
Rząd zbieżności algorytmu
Koszt
flops: Floating Point OperationS (Floating Points Operations per
Second)
ciąg 1:
ciąg 2:
20 × 3 = 60 flops
4 × 5 = 20 flops
A. Matuszak (45)
Technologie informacyjne – Wykład VII-IX

Podobne dokumenty