podstawy algorytmów rekurencyjnych - cs.put.poznan.pl · fraktale Âobiekty geometryczne...
Post on 27-Feb-2019
219 Views
Preview:
TRANSCRIPT
Podstawy algorytmów Podstawy algorytmów rekurencyjnychrekurencyjnychrekurencyjnych rekurencyjnych
mgr inż. Adam Kozakmgr inż. Tomasz Głowacki tglowacki@cs put poznan plmgr inż. Tomasz Głowacki tglowacki@cs.put.poznan.pl
Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii informatycznychna Politechnice Poznańskiej w zakresie technologii informatycznych
i ich zastosowań w przemyśle" POKL.04.01.02-00-189/10
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
PlanPlan
Czym jest rekurencja?y j jIndukcja matematycznaNiezmienniki pętliRealizacja rekurencjiFraktale
CechyCechyUkłady iterowanych odwzorowań afinicznychZbiory MandelbrotaZbiory Julii
2Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
RekurencjaRekurencja
O rekurencji (rekursji) mówimy wtedy, gdy definicja pewnegobi kt ( t t ) i d ł i d jobiektu (np. matematycznego) zawiera odwołanie do pewnej
transformacji tego obiektu,Aby znaleźć transformację tego obiektu należy ponowniey ję g y pzastosować tą samą definicję itd...
K żd d fi i j k j kł d iKażda definicja rekurencyjna składa się z:zależności rekurencyjnej wyrażenia startowego (podstawy wnioskowania, warunku y g (p ybrzegowego)
3Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykłady definicji rekurencyjnychPrzykłady definicji rekurencyjnych
Silnia:śćzależność rekurencyjna: n! = n (n-1)!
wyrażenie startowe: 0! = 1
Współczynnik dwumianowy:Współczynnik dwumianowy:
zależność rekurencyjna:
ż i t t
⎟⎟⎠
⎞⎜⎜⎝
⎛ −+⎟⎟⎠
⎞⎜⎜⎝
⎛−−
=⎟⎟⎠
⎞⎜⎜⎝
⎛k
nkn
kn 1
11
1⎟⎟⎞
⎜⎜⎛
⎟⎟⎞
⎜⎜⎛ nn
wyrażenie startowe:
Zbiór liczb całkowitych podzielnych przez d ≥ 1 :zależność rekurencyjna:
10
=⎟⎟⎠
⎜⎜⎝
=⎟⎟⎠
⎜⎜⎝ n
11 )5,0sgn(1gdzie −
∞
−−−
== kk
kid ndnnnZ ∪yjwyrażenie startowe
10 2
gdzie −=
kki
id ndnnZ ∪00 =n
4Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykładowe zadaniaPrzykładowe zadania
Znajdź definicję rekurencyjną ciągu eliminując w pełnib ś d i l ż ść d ( ≥ 0)bezpośrednią zależność od n (n ≥ 0):
12 −= ncn
Dla ciągów reprezentowanych przez funkcje posiadające funkcję odwrotną można skorzystać ze schematu:
( ) ( )( ) ( )( )11 1
1
1
+=+=
=⇒=−
+
−
nn
nn
cffnfc
cfnnfc
Inne: 3,30,3
2
1log210
12 132
==≥= +−
++ −cnn
nnn cccnc n
149,21,2 1112 +++=−=≥−−= −− nnnn ccccnnnc
5Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Indukcja matematycznaIndukcja matematyczna
Indukcja matematyczna jest twierdzeniem opartym na ól dk l ż ś i k j j d i hszczególnym przypadku zależności rekurencyjnej na zdaniach
logicznychZależnością rekurencyjną jest implikacja między kolejnymi ą yj ą j p j ę y j yzdaniami logicznymiWyrażeniem startowym jest warunek początkowy
Zasada indukcji skończonej Zasada silnej indukcji (zupełnej)
•ZR : S(k) ⇒ S(k+1)WP S( )
•ZR : S(n0) ∧ S(n0+1) ∧ ... ∧ S(n-1) ∧ S(n) ⇒ S(n+1)WP S( ) S( +1) S( )•WP : S(n0) •WP: S(n0) ∧ S(n0+1) ∧ ... ∧ S(n1)
6Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykładowe zadaniaPrzykładowe zadania
Udowodnij, używając indukcji matematycznej:
1. Dla n ≥ 1: ( )∑= +
=+
n
i nn
ii1 111
⎞⎛ nn 2
2. Dla n ≥ 1:
3 Nierówność Bernoulliego dla liczb całkowitych x > -1 n ≥ 1:
∑∑==
=⎟⎠
⎞⎜⎝
⎛ n
i
n
iii
1
3
1
3. Nierówność Bernoulliego dla liczb całkowitych, x > 1, n ≥ 1:
4 Dla d ≥ 1 n ≥0 ciąg 0 d -d 2d -2d nd -nd dany
( ) nxx n +≥+ 11
4. Dla d ≥ 1, n ≥0, ciąg 0, d, d, 2d, 2d, ..., nd, nd dany
wzorem rekurencyjnym
ma postać jawną: ( ) ( )[ ]1121 11 +++d n
11
0 2)5,0sgn(1,0 −
− −−−
== nn
n cdccc
ma postać jawną: ( ) ( )[ ]112141 ++−= ndcn
7Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykładowe zadania c.d.Przykładowe zadania c.d.
5. Dla n ≥ 2: jest podzielne przez 10.622 −n
6. Dla n ≥ 0, a,b≠0, jeśli ( ) 2110 ,,0 −− −+=−== nnn abccbacabccto wzór jawny na ciąg ma postać:
7 Dla n ≥ 0: n3-n jest podzielne przez 6
nnn abc −=
7. Dla n ≥ 0: n n jest podzielne przez 6.
8. Dla n ≥ 1: gdzie Fn to liczby Fibonacciego, a ( )1151
+− += nnn LLF
Ln liczby Lucasa:5
2110
12,1,0 −−
++=== nnn
LLLFLFFFFF
2110 ,1,2 −− +=== nnn LLLFL
8Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Niezmienniki pętliNiezmienniki pętli
Zdanie logiczne λ jest niezmiennikiem pętli:
while (g) {instrukcje;
}}
jeśli zachodzi implikacja:jeśli g i λ są prawdziwe przed wejściem do pętli to λ jest prawdziwejeśli g i λ są prawdziwe przed wejściem do pętli, to λ jest prawdziwew każdej iteracji, oraz po wyjściu z pętli, natomiast g po wyjściu zpętli jest fałszem:
zmiennychcjainicjaliza
( ) };{1// =∧λinstrukcjegwhile
gzmiennychcjainicjaliza
1// =∧¬ λg
9Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Niezmienniki pętliNiezmienniki pętli
Zastosowanie?D d i ś i l t óDowodzenie poprawności algorytmówSprawdzanie działających algorytmów (np. asercje przed, wewnątrzi po pętli sprawdzające warunki będące znanym niezmiennikiem)
Klasyczny przykład – algorytm dzielenia, znajdujący dla liczbn ≥ 0, q > 0 (dzielnik), liczby k ≥ 0 (krotność), oraz resztę r:q > r ≥ 0, spełniające równość n=kq+r
( ) ( )0,:1;;0
;0;0
≥∧+=⇔≥⇔=∧><==><>≥><
rrkqnqrggassertnrkinit
qninput
λλInne trywialneniezmienniki pęli:
( )
1;;1
{
=><−=+=><
assertqrrkknsinstructio
gwhile
λ
• q ≥ 0• n ≥ r
( ) ( )0,:1}
≥∧+=⇔<⇔¬=∧¬>< rrkqnqrggassert λλ
10Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Dowód poprawnościDowód poprawności
W każdej interacji otrzymywane są nowe wartości zmiennych k oraz r:
Podstawiając nowe wartości do zależności niezmiennika:qrr
kk−=+=
'1'
Podstawiając nowe wartości do zależności niezmiennika:
Przy czym r’ ≥ 0, gdyż warunkiem wejścia do pętli jest r ≥ q( ) ( ) rkqqrqkqqrqkrqk +=−++=−++=+ 1''
Po wyjściu z pętli r < q, więc spełniona jest zakładana własność q > r ≥ 0
11Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Niezmienniki pętli Niezmienniki pętli -- zadaniezadanie
Znajdź niezmiennik pętli i udowodnij poprawność algorytmu:D jś i 0Dane wejściowe: n > 0.Dane wyjściowe: k ≥ 0, q ≤ n ( ) takie, że qqn k |22 /∧=
00 ≥ki t
Nqk ∈,
( ){...............................................,|2:1
;;0;0;0
⇔⇔=∧><==><≥>><
λλhil
qggassertnqkinit
kninput
( )
1;2;1
{
=><=+=><
λassertqqkknsinstructio
gwhile
...............................................,|2:1}
⇔/⇔¬=∧¬>< λλ qggassert
12Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Realizacja rekurencjiRealizacja rekurencji
Rekurencja w językach programowania jest zwykłym wywołaniem funkcji (funkcja sama wywołuje siebie)funkcji (funkcja sama wywołuje siebie)Każde wywołanie funkcji to odłożenie parametrów na stosie (parametry funkcji oraz adres powrotu)
ćDla każdego algorytmu rekurencyjnego należy rozważyć koszty pamięciowe i obliczeniowe podejścia rekurencyjnego oraz iteracyjnegoNp. Algorytm wypełniania spójnego obszaru szybko może doprowadzić do przepełnienia stosu (wersja iteracyjna jest bardziej oszczędna):int image[][], width, height, oldColor, newColor;void fill(int x, int y){{
if (x<0 || y<0 || x>=width || y>=height) return;image[x][y] = newColor;if (image[x+1][y] == oldColor) fill(x+1,y);if (image[x-1][y] == oldColor) fill(x-1,y);if (image[x][y+1] == oldColor) fill(x,y+1);if (image[x][y-1] == oldColor) fill(x,y-1);
}
13Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
FraktaleFraktale
Obiekty geometryczne posiadające cechę samopodobieństwa (w k żd j k li) i d kł d bliż l bkażdej skali) – w sensie dokładnym, przybliżonym lub stochastycznymWymiar nie jest liczbą całkowitą:y j ą ą
( ) ( ) ( )( )1log
loglim1~0
=⇒→
d NdNεεεε
ε
Mają stosunkowo proste definicje
( ) 1,58496...2log3log
2log3loglim3,21 ===⇒==
∞→ n
n
nTSnn dN εε
Mają stosunkowo proste definicjerekurencyjne
14Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Obraz rekurencyjnyObraz rekurencyjny
15Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
FraktaleFraktale
Fraktale to np.:ńAtraktory układu iterowanych odwzorowań afinicznych
(IFS)Zbiory Julii i FatouZbiory Mandelbrota
16Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Odwzorowanie zwężająceOdwzorowanie zwężające
Niech ℜ2 będzie przestrzenią z metryką euklidesową d (choćb ć d l t i t ) t d f ℜ2 ℜ2mogą być dowolne przestrzenie metryczne), wtedy f: ℜ2 → ℜ2
jest odwzorowaniem zwężającym jeśli:( ) ( ) ( )2121
221 ,)(),(:,:1,0 aadafafdaa λλ ≤ℜ∈∀∈∃
Twierdzenie Banacha: Istnieje dokładnie jeden punkt p taki, żef(p)=p (punkt stały odwzorowania zwężającego)
( ) ( ) ( )212121 ,)(),(,, ff
Rekurencyjne wykonanie odwzorowania zwężającego a=(x,y)f(x,y)=(x/3,y/3)
( ) ( ) ( ) ( ) ( )( )1010101 coscoscoscoscoscoslim πππ →→=== ∞∞∞∞→+ xfxxxxfx nnnn
17Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Układ iterowanych odwzorowań Układ iterowanych odwzorowań afinicznychafinicznychafinicznychafinicznych
Rekurencyjna definicja przekształceń obiektu geometrycznego b d ikó d ń ż j h ( ł ż ibędąca sumą wyników n odwzorowań zwężających (złożenie obrotu, translacji i skalowania zmniejszającego): {Fi} (1≤i ≤n)
( )n
SSSFSSS li∪S jest dowolnym niepustym zbiorem punktów w danej przestrzeni
( ) kki
kik SSSFSSS∞→∞
=− === lim
110 ∪
S∞ jest fraktalem - atraktorem układu odwzorowań (punktem stałym), niezależnym od rozkładu punktów w zbiorze SFi w przestrzeni ℜ2 ma postać:Fi w przestrzeni ℜ ma postać:
( )cossinsincos
''
,''
⎥⎦
⎤⎢⎣
⎡+⎥
⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡ −⎥⎦
⎤⎢⎣
⎡=⎥
⎦
⎤⎢⎣
⎡=⇔
⎩⎨⎧
++=++=
y
x
yx
yx
y
xi t
tyx
yx
yxFfeydxycbyaxx
ϕϕϕϕ
δδ
1111 <<−∧<<−⎦⎣⎦⎣⎦⎣⎦⎣⎦⎣⎩
yx
yyxy yyfyy
δδ
ϕϕ
18Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykład konstrukcji IFS Przykład konstrukcji IFS -- Trójkąt Trójkąt SierpińskiegoSierpińskiegoSierpińskiegoSierpińskiego
Układ odwzorowań: ( )yxF ,3
( ) ⎥⎦
⎤⎢⎣
⎡+⎥
⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡=
==
041
1001
2121
,
0
1
xyxF
yx ϕϕ( )
( ) ⎥⎦
⎤⎢⎣
⎡−+⎥
⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡=
⎥⎦
⎢⎣
⎥⎦
⎢⎣⎥⎦
⎢⎣⎥⎦
⎢⎣
041
1001
2121
,
01021
2 yx
yxF
y
( ) ⎥⎦
⎤⎢⎣
⎡+⎥
⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡=
⎦⎣⎦⎣⎦⎣⎦⎣
43
01001
2121
,3 yx
yxF
y
( )F( )F
Trójkąt Sierpińskiego jest punktem stałym układu odwzorowań zwężających {F1, F2 , F3}
⎦⎣ ( )yxF ,1( )yxF ,2
zwężających {F1, F2 , F3}
19Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
IFS IFS –– zadaniazadania
Zadanie: zlokalizuj poszczególne odwzorowania ((*) zdefiniuj)
Paproć BarnsleyaUkład 4 odwzorowań
Dywan SierpińskiegoUkład 8 odwzorowań[źródło: Wikipedia]
Trójkąt Sierpińskiego w przestrzeni 3D(piramida)Układ 5 odwzorowań[źródło: Wikipedia]Układ 4 odwzorowań
[źródło: Wikipedia][źródło: Wikipedia]
20Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Zbiory Zbiory MandelbrotaMandelbrota
Przestrzenią dla tych zbiorów jest domknięty zbiór liczb l h ( d i * t kt i k ń ś i
Czespolonych ( gdzie z* to punkt w nieskończoności odwzorowany np. na sferze Riemanna)Funkcja wymierna określona na C ma postać:
*}{zCC ∪=
j y p
011
1
011
1
)()()(
bzbzbzbazazaza
zlzwzW n
nn
n
nn
nn
++++++++
== −−
−−
……
Niech Wc będzie funkcją wymierną zależną od Niech Zbiorem Mandelbrota M(W ) nazywamy zbiór tych wartości
( ))()( 1 zWWzW ncc
nc
−=Cc∈
Zbiorem Mandelbrota M(Wc) nazywamy zbiór tych wartości parametru c dla których ciąg jest zbieżny:)0(n
cW
( )( ) })0(lim:{ ∞→/∈=∞→
ncnc WCcWM
21Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Zbiory Zbiory MandelbrotaMandelbrota -- przykładprzykład
Najbardziej znany jest zbiór Mandelbrota dla odwzorowania2
Sprawdź, czy punkt c=0+i należy do zbioruMandelbrota dla tego odwzorowania
czzW nc += 2)(
g
⎪⎪⎧
−=+=
=+=
1)0(
0)0(22
21
iiiW
iiW
c
c
nktu
c
( )( )⎪
⎪
⎪⎪
⎨
−=+−=+−=
−=++−−=+−=
11)0(
1211)0(
)(
24
23
iiiiW
iiiiiW
c
c
c
ita p
un
( )⎪⎪
⎩.....)(c
orbi
22Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Zbiory Zbiory MandelbrotaMandelbrota -- ilustracjailustracja
Zbiór Mandelbrota wraz z powiększeniem [obraz uzyskany zaZbiór Mandelbrota wraz z powiększeniem [obraz uzyskany za pomocą programu Ultra Fractal]
23Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Zbiory JuliiZbiory Julii
Brzeg między kolorami (basenami przyciągania)jest zbiorem Julii dla odwzorowania:j
( ) 32)( 2−+= zzzW nc
Do zbioru Fatou należą obszaryyprzyciągania 3 punktówstałych będących pierwiastkami funkcji
111)(20
333+
⇒⇒ ef nki π
{ }
( ) ( )( ) 321)()(
,231,231,1
111)(
23
210
32,1,0∈
−
+−=+−==
=⇒=⇒−=
zzfW
izizz
ezzzzf
n
nk
( ) 323
1)(')()( 2
2−+=−=−= zz
zzz
zfzfzzW n
c
Jest to zbiór Julii dla odwzorowania otrzymanego metodą Newtona szukania miejsc h dl f( ) St d kt t bil t d i b d i i tk i f( ) K l
)(zW nc
zerowych dla f(z). Stąd punkty stabilne tego odwzorowania będą pierwiastkami f(z). Kolor zielony jest basenem przyciągania z0, kolor czerwony z1, a kolor niebieski z2.
24Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
top related