Rownania liniowe dekompozycji – postac kanoniczna

Transkrypt

Rownania liniowe dekompozycji – postac kanoniczna
Rownania liniowe dekompozycji – postac kanoniczna Bentleya­Hackena­
Saxe'a – przemyslenia po wykladzie, Przemyslaw Oltarzewski :)
1) Rekurencyjne rownania dekompozycji w postaci liniowej
T n=aT n/ b f n
T 1=c
Gdzie: a – liczba podproblemow
b – wspolczynnik podzialu (ile razy podproblem jest mniejszy od n)
f – funkcja, wyrazajaca koszt podzialu zadania w zaleznosci od jego rozmiaru
c – pewna stala, przyjmujemy ze problem jednostkowy ma koszt staly
Dodatkowo przyjmujemy, ze rozmiar problemu jest zawsze podzielny przez
wspolczynnik podzialu (mozemy dzielic problem na podproblemy, az do uzyskania
jednosci). Czyli n musi byc pewna potega b:
n=b q
2) Doprowadzenie rownania dekompozycji do postaci kanonicznej Bentleya­Hackena­
Saxe'a:
Polega na zaprezentowaniu rownania dekompozycji w postaci, ktora pozwala
wyznaczyc schemat rozwiazania takiego rownania. W tym celu, dokonujemy
przeksztalcen:
a=b p
f n=gn⋅n p
Parametr “p” moze byc dowolna liczba, takze takie przeksztalcenie nie wymaga
specjalnych zalozen. Podobnie g(n) moze byc dowolna funkcja rozmiaru problemu.
Wtedy rownanie dekompozycji przyjmuje forme:
T n=b p T n/bn p gn
T 1=c
Po co przeksztalcamy w ten sposob? W kolejnych punktach umozliwia to wyznaczenie
ogolnego rozwiazania rownania. Majac konkretne zadanie, zamiast poszukiwac
rozwiazania na wlasna reke “domowymi metodami”, mozemy przeksztalcic rownanie
rekurencyjne do postaci BHS i posluzyc sie rozwiazaniem ogolnym.
3) Ogolne rozwiazanie rownania dekompozycji w postaci BHS:
Rownanie postaci BHS jest zalezne od q (gdyz n=b^q). Mozna zaobserwowac,
wstawiajac kolejne wartosci q, ze:
q=0 ⇒ b q =b 0 =1=n
T n=T 1=c
q=1 ⇒ b q =b1=b=n
p
p
T n=b T n /bn g n
T b=b p T b /bb p g b=b p T 1b p g b=b p cg b
q=2 ⇒ b q =b 2 =n
T b 2 =b p T b 2 /bb 2 p g b=b p T bb 2 p gb 2 =b p⋅b p cg bb 2 p g b 2 
T b 2 =b 2 p cg bg b 2 
Kontynuujac wstawianie, dochodzimy do wniosku, ze:
q ⇒ n=b q
T n=b qp cgbgb 2 gb 3 gb q 
Zapisujac to w bardziej zwartej postaci:
n=b q ⇒ b qp =n p
q
T n=n c∑ g bi  rozwiazanie ogolne BHS 
p
i=1
4) Rozwiazanie rownania dekompozycji w postaci BHS dla funkcji kosztu podzialu
postaci f=cn^k:
Dla funkcji f postaci:
f n=cn k
mozna znacznie uproscic wyznaczanie rozwiazania rownania dekompozycji w postaci
BHS. Dokonujemy przeksztalcenia rozwiazania ogolnego BHS:
f n=g n n p ⇔ g n= f n/ n p =cn k / n p =cn k− p
gb i =cb ik− p
q
T n=n c∑ g b i  r.o.BHS 
p
i=1
q
T n=n c∑ cb
p
ik− p
=cn
i=1
p
q
∑ bk− pi
i=0
Ostatecznie, po przyjeciu dodatkowych oznaczen:
s=b k− p
q
T n=cn p ∑ s i
i=0
Otrzymalismy rozwiazanie rownania BHS dla funkcji kosztu podzialu postaci f=cn^k.
5) Szczegolowe rozwiazanie dla funkcji kosztu podzialu f=cn^k:
W zaleznosci od relacji parametrow k i p, mozna bardziej szczegolowo obliczyc wynik
rownania z pkt 4:
Przypadek 1:
k= p ⇒ s=b k− p =b 0 =1
q
T n=cn p ∑ 1=cn p q1
0
q
n=b ⇔ q=log b n
T n=cn p logb n1
Asymptotycznie:
T n∈O n p log n
Przypadek 2:
k≠ p ⇒ s≠1
q1
−1
p s
T n=cn
s−1
Przeksztalcamy:
cs
−c
T n=
⋅n p s q 
⋅n p
s−1
s−1
p q
p k− pq
p
q k− p
p k− p
k
n s =n b
=n b  =n n =n
cs
−c
T n=
⋅n k 
⋅n p
s−1
s−1
cs
−c
T n= An k Bn p gdzie : A=
, B=
s−1
s−1
Teraz mozemy przeliczyc stale A i B, usuwajac parametr s:
a=b p
1
cs
cb k− p
bp
a
A=
= k− p
=c /1− k− p =c /1− k =c /1− k 
s−1 b −1
b
b
b
−c
−c
bk
bk
B=
= k− p
=c /1− p =c /1− 
s−1 b −1
a
b
Ostatecznie dostajemy:
T n= An k Bn p
a
A=c /1− k 
b
bk
B=c /1− 
a
Asymptotycznie, mamy dwa podprzypadki:
k p ⇒ T n∈O n k 
k p ⇒ T n∈O n p 
6) Przyklady zadan z rownan dekompozycji:
Przyklad 1:
T n=2 T n /2n
T n=b p T n/ bcn k
, BHS: T 1=1
T 1=c
Korzystajac z postaci BHS dla funkcji kosztu podzialu postaci f=cn^k, wyznaczamy
parametry (przez porownanie zmiennych literowych i liczb w zaleznosciach powyzej):
k =1, c=1, b=2, p=1
Widzimy, ze mamy do czynienia z przypadkiem k=p. W takim razie rozwiazaniem
bedzie:
T n=cn p logb n1
T n=1 n1 log2 n1=nlog2 n1
Przyklad 2:
T n=3 T n /2n
T n=b p T n/bcn k
, BHS: T 1=1
T 1=c
Znow mamy do czynienia z funkcja postaci f=cn^k. Wyznaczamy parametry. Uwaga
na wartosci wspolczynnikow b i p!
k=1, c=1, b=2, b p =3⇔ 2 p =3⇔ p=log2 3
Tym razem k<p, czyli korzystamy z zaleznosci:
log2 3
T n= AnBn
T n= An k Bn p
log 3
a
2
3
bp
A=c /1− k 
A=1/1− k =1/1−
=1/1− =−2
2
2
,stale: b
b
k
k
b
2
2
b
B=c /1− 
B=1/1− p =11− log 3 =1/1− =3
a
3
b
2
2
2
Ostatecznie:
T n=3 n
log2 3
−2 n
Przyklad 3:
T n=3 T n /2n 2
T n=b p T n /bcn k
, BHS: T 1=c
T 1=1
Kolejny raz funkcja f=cn^k. Obliczamy parametry:
k=2, c=1, b=2, b p =3⇔ 2 p =3⇔ p=log2 3
Teraz k>p. Rozwiazanie przyjmie postac:
log2 3
T n= An 2 Bn
T n= An k Bn p
log 3
a
2
3
bp
A=1/1− k 
A=1/1− k =1/1−
=1/1− =4
, stale: 4
4
b
b
k
k
b
4
b
B=1/1− 
B=1/1− p =1/1− =−3
a
3
b
2
Ostatecznie:
T n=4 n 2 −3 n
log2 3
Przyklad 4:
T n=2 T n /2nlgn
T n=b p T n/ bn p gn
, BHS: T 1=1
T 1=c
Tym razem f nie jest postaci cn^k. Nie mozna posluzyc sie rozwiazaniem dla tego
przypadku. Trzeba skorzystac z ogolnego rozwiazania formy BHS. Wyliczamy
parametry:
b=2, c=1, p=1, g n=lgn
Teraz korzystamy z r.o. BHS:
q
T n=n c∑ gbi 
p
i=0
q
q
T n=n1∑ lg2 =n1∑ i⋅lg2=n1
q
i=0
q
i
i=0
q⋅q1

2
n=b ⇔ n=2 ⇔ q=lgn
1
1
1
T n=n1 lg 2 n lgn= nlg 2 nlgn2
2
2
2

Podobne dokumenty