Tải bản đầy đủ (.pdf) (83 trang)

Chương 5: Các kỹ thuật thiết kế giải thuật ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.86 MB, 83 trang )

1
Ch ng 5
Các k thu tthi t k gi ithu t
2
N i dung
1. Quiho ch ng
2. Gi ithu ttham lam
3. Gi ithu tquay lui
3
1.Quiho ch ng
Quy ho ch ng(dynamic programming) gi i các bàitoán
b
ng cách k t h p các l i gi i c a các bàitoán con c a bài
toán
ang xét.
Ph
ng pháp này kh d ngkhi các bàitoán con không c
l
p i v inhau, t c là khi các bàitoán con có dùngchung
nh ng bàitoán “cháu” (subsubproblem).
Quiho
ch ng gi icác bàitoán “cháu” dùng chung này
m
t l nvàl u l igi i c a chúngtrong m t b ng và sau ó
kh
i ph itính l ikhi g p l i bàitoán cháu ó.
Quiho
ch ng c áp d ng cho nh ng bàitoán t i u
hóa(optimization problem).
4
B n b c c aquiho ch ng


â d ng m t gi ithu t quiho ch ng có th c chia
làm b
n b c:
1.
ctr nghóa c utrúc c a l igi i t i u.
2.
nh ngh agiá tr c a l igi i t i u m t cách quy.
3.Tínhtr
c a l igi i t i utheoki u t d ilên.
4. C
u t o l igi i t i u t nh ngthôngtin ã ctính
toán.
5
Thí d 1 Nhânxâu matr n
Cho m t chu i<A
1
, A
2
, …, A
n
> g m n matr n, và tamu n
tínhtích cácmatr
n.
A
1
A
2
… A
n
(5.1)

Tích c
axâumatr n này c g ilàm - óng-ngo c- y-
(fullyparenthesized ) n u nó là m tmatr n n ho c là tích
c
a hai xâumatr n m - óng-ngo c- y- .
Thí d
: A
1
A
2
A
3
A
4
có th c m - óng-ngo c- y- theo
5 cách:
(A
1
(A
2
(A
3
A
4
)))
(A
1
((A
2
A

3
)A
4
)
((A
1
A
2
)(A
3
A
4
))
(A
1
(A
2
A
3
))A
4
)
(((A
1
A
2
)A
3
)A
4

)
6
á à a m óngngo c m t xâumatr n có nh h ng
r
t l n n chi phí tínhtíchxâumatr n.
Thí d
: A
1
10 100
A
2
100
5
A
3
5
50
(A
1
(A
2
A
3
))th
chi n
10.000.5+10.5.50=5000+ 2500
= 7500 phép nhân vô h
ng.
(A
1

(A
2
A
3
))th
chi n
100.5.50+10.100.50 = 25000+ 50000= 75000phép nhân vô
h
ng.
Hai chi phí trên r
tkhác bi t nhau.
7
Phátbi ubàitoánnhânxâu matr n
à á í í â
'‘Cho m tchu i<A
1
, A
2
, …, A
n
> g m n matr n, v i m i
i= 1, 2, …, n, matr
n A
i
có kíchth c p
i-1
p
i
,ta m - óng-
ngo

ctíchnàysaocho t ithi uhóa t ng s phép nhân vô
h
ng”.
ây là m t bài toán t i u hóathu c lo ikhó.
8
C utr c c a m tcách m óngngo c t i u
c 1: ctr ng hóa c utrúc c a m t l i gi i t i u.
Dùng A
i j
ký hi umatr n k t qu c a vi ctính
A
i
A
i+1
…A
j
.
M
t s m óng ngo c t i u c atíchxâumatr n A
1
.A
2
… A
n
Táchxâungay t
i v trí n mgi a A
k
và A
k+1
v i m ttr

nguyên k,1 k < n. Ngh alà,tr ctiêntatínhcác chu ima
tr
n A
1 k
and A
k+1 n
và r i nhânchúng v inhau cho ra A
1.n
.
Chi phí c
a s m óng ngo c t i u này= chi phí tính A
l k
+
chí phí tính A
k+1 n
, + chi phí nhân chúng l
i v i nhau.
9
Di n t l igi i m tcách quy
â , nh ng bàitoán con c atalàbàitoán xác nhchi phí
t
i u ng v i s m óng ngo c cho chu i A
i
.A
i+1
… A
j
v i
1
i j n.

tm[i,j]làt ng s t ithi ucác phép nhân vô h ng c
òi h i tínhmatr n A
i j
. Chi phí c acách r nh t tính
A
1 n
s
c ghi m[1, n].
Gi
s r ng s m óng ngo c t i u t ch i tíchchu i A
i
A
i+l
… A
j
t
i gi a A
k
and A
k+l
, v i i k < j.Thì m[i,j] b ng
v
i chí phí t ithi u tính A
i k
và A
k+1 j
, c ng v ichiphí
nhân haimatr n này l i v i nhau.
m[i,j]=m[i,k] + m[k+1,j] + p
i-1

p
k
p
j
.
10
M tc ngth c quy
v y, nhngh a quychochi phí t i thi u c a m t
s
m óngngo ccho A
i
A
i+l
… A
j
là nh sau:
m[i, j]= 0 n ui=j,
=min{m[i,k]+m[k+1, j]+ p
i-1
p
k
p
j
.}
n
ui<j. (5.2)
giúptheo dõicách t o m t l igi i t i u,hãy nh
ngh
a:
s[i, j]: tr

c a k t i ó chúngta tách tíchxâuma tr n
A
i
A
i+1
…A
j
t n m t s m óng ngo c t i u.
11
M tnh nxétquantr ng
nh n xét quan tr ng là
m óng ngo c c a xâu con A
1
A
2
A
k
bên trong s m
óng ngo c t i u c axâu A
1
A
2
…A
n
c ng ph ilàm t s m
óng ngo c t i u''.
Nh
v y, m t l i gi i t i u chobàitóantíchxâumatr n
ch
a ngtrong nó nh ng l igi i t i u c a nh ng bàitoán

con.
B
cth hai c a ph ng phápqui ho ch ng là nh ngh a
tr
c a l igi i t i u m tcách quytheonh ng l igi i t i
u c a nh ng bàitoán con.
12
Tínhnh ngchiphí t i u
vì tính l igi i d a vào côngth ccho (5.2) b ng m t
gi
ithu t quy, chúngta ith c hi n B c 3 c aqui ho ch
ng: tínhchi phí t i u b ng cáchti p c n t d ilên.
Gi
s matr n A
i
có kíchth c p
i-1
p
i
v i
i = 1, 2 , ,n.
u vào là chu itr s <p
0
, p
1
, …, p
m
>.
Th t c dùng m t b ngm[1 n,1 n] l u các chi phí m[i,j]
và b

ngs[1 n, 1 n] l ugiá tr nào c a v trí k mà th c
hi
n cchi phí t i ukhitínhm[i,j].
Th
t cMATRIX-CHAIN-ORDERtr v hai m ng m và s.
13
Th t c tínhhai b ng m và s
procedure MATRIX-CHAIN-ORDER(p,m,s);
begin
n:= length[p]-1;
for i:= 1 to n do m[i, i]:= 0;
for l:=2to n do /* l: length of the chain */
for i:= 1 to n – l + 1 do
begin
j:= i + l – 1;
m[i, j]:= ∞; /* initialization */
for k:= i to j-1 do
begin
q:=m[i, k]+m[k+ 1, j]+ p
i-1
p
k
p
j
;
if q<m[i, j] then
begin m[i, j]:= q;s[i, j]:= k end
end
end
end

14
M tthí d ínhtíchxâu matr n
ì ch cho i<j, ch ph n c a b ng m
trên ng chéo chính m i cdùng.
Cho cácmatr
n v ikíchth c nh sau:
A
1
30
35
A
2
35
15
A
3
15
5
A
4
5
10
A
5
10
20
A
6
20
25

Hình5.1trình bày b
ng m và s ctính b ith t c
MATRIX-CHAIN-ORDER v
i n = 6.
15
M tthí d v tínhtíchxâu matrân
M ng m
i
1 2 3 4 5 6
6 151 5 10500 51 0 5000 0
5 11875 71
500 1000 0
j 4
7 75 750 0
3 7875
0
2 15750 0
1 0
M
ng s H nh 5.1
i
1 2 3 4 5
6
5 5
5
4
j 4
3 1
2 1
16

M tthí d v tínhtíchxâu matrân
2,5]=min
= 7125
k = 3for A
2 5
25
125
145
m
[
2
,
2
]
m
[
3
,
5
]
p
.
p
p
0
250
0
3
5
.

15
.
2
0
13000
m[2,3] m[4, 5] p p p 2625 100 35.5.30 7125
m[2, 4] m[5m5] p p p 4375035.10.20 11375
+ + = + +=


++=++=


++=++=

B
c 4 c a ph ngpháp qui ho ch ng là t o m t l igi i
t
i u t nh ngthôngtin ã tínhtoán.
17
B c4 T o m t l igi i t i u
a dùng m ngs[1 n, 1 n] xác nhcách t t nh t tính
tíchxâumatr
n. M i ph n t s[i,j] ghitr of k saocho t i
ó s m óng ngo c t i u tách ôi xâu A
i
A
i+1
… A
j

thành
hai
o n t i A
k
và A
k+1
.
Chotr
cchu imatr n A = <A
1
, A
2
…, A
n
>, b ng s và các
ch
s i và j,th t c quy MATRIX-CHAIN-MULTIPLY sau
âytínhtíchxâumatr n A
i j,
.Th t ctr v k t qu qua
tham s
AIJ.
V
i l nh g i ban ulà
MATRIX-CHAIN-MULTIPLY(A,s, 1, n, A1N)
Th
t c s tr v k tqu matr ntíchsaucùng v i m ng
A1N.
18
Tính l igi i

procedure - - ( , , i,j, AIJ);
begin
if j>ithen
begin
MATRIX-CHAIN-MULTIPLY(A,s, i,s[i,j], X);
MATRIX-CHAIN-MULTIPLY(A,s,s[i, j]+1,j, Y);
MATRIX-MULTIPLY(X,Y, AIJ);
end
else
assignAi to AIJ;
end;
19
ó ành ph nthen ch tmàm tbàitoán t i uhóa ph i

có th áp d ngqui ho ch ng:
(1) ti u c utrúc t i u (optimalsubstructure) và
(2) các bàitoáncon trùng l p (overlappingsubproblems).
Ti u c utrúc t i u
M tbàitoáncótínhch tti u c utrúc t i u n u l igi i t i
uch atrongnónh ng l igi i t i u c anh ngbàitoán
con
.
Cácthànhph n c aquyho ch ng
20
Nh ngbàitoáncontrùng l p
m tgi ithu t quy g p l i cùng m tbàitoán con
nhi
u l n,ta b o r ngbàitoán t i u hóa có nh ng bàitoán
contrùng l
p.

Gi ithu t quy ho ch ng l i d ng nh ng bài toáncon
trùng l
p b ng cáchgi i m i bàitoán con m t l n, c t l i
gi
i vàotrong m t b ng mà b ng này s cthamkh o
nkhi c n.
Cácgi
ithu t quy l mvi c t trênxu ng trongkhicác
gi
ithu tquyho ch ng làmvi c t d ilên, Cáchsau
h
u hi u h n .
21
Thí d àitoánchu iconchungdàinh t
chu i con subsequence) a m t chu i(sequence) là
chu
i ysaukhi b i m t vài ph n t .
Thí d :Z = <B, C, D, B>làm tchu icon c a
X =<A,B,C,B, D, A, B> v
i chu i ch s <2, 3, 5, 7>.
Cho hai chu
i X và Y,ta b oZ là chu icon chung (common
subsequence) c
a X và Y n uZ là m t chu i con c a c hai
chu
i X và Y.
Trongbàitoánchu iconchungdàinh t,ta cchohai
chu
iX=<x
1

, x
2
, …, x
m
>vàY=<y
1
, y
2
,…, y
n
>vàmu ntìm
chu iconchung dài nh t (LCS) c a X và Y.
22
Ti u c utrúc t i u c abàitoánchu icon
chungdàinh
t
í : X=<A,B, C,B, D, A, B> và Y= <B, D, C, A, B, A>
<B,D, A, B> là LCS c
a X and Y.
Chochu iX=<x
1
, x
2
, …, x
m
>,ta nhngh a ti n t th i c a
X, v
i i =0, 1, …,m,làX
i
=<x

1
, x
2
, …, x
i
>.
nh lý 6.1
ChoX=<x
1
, x
2
, …, x
m
>vàY=<y
1
, y
2
, …, y
n
>lành ng
chu
i,và Z = <z
1
, z
2
, …, z
k
> là LCS c a X và Y.
1.N
u x

m
= y
n
thì z
k
= x
m
= y
n
và Z
k-1
là LCS c a X
m-1

Y
n-1
.
2.N
u x
m
y
n
,thì z
k
x
m
hàm ý Z là LCS c a X
m-1
và Y.
3.N

u x
m
y
n
,thì z
k
y
n
hàm ý Z là LCS c a X và Y
n-1
.
23
ì m tLCS c a X và Y,tacóth c ntìmLCS c a X và
Y
n-1
và LCS c
a X
m-1
và Y. Nh ng m itrong hai bàitoán
con này có nh
ng bàitoán “cháu” tìm X
m-1
và Y
n-1
.
G i c[i,j] là chi u dài c aLCS c a hai chu i X
i
và Y
j
. N u

i = 0 hay j = 0,thì LCS có chi
u dài 0. Tính ch tti u c u
trúc t
i u c a bàitoánLCS cho ra côngth c quysau:
0 n u i=0 hayj= 0
c[i,j]=c[i-1,j-1]+1 n u i, j>0 và x
i
= y
j
max(c[i,j-1],c[i-1,j]) n
u i,j>0vàx
i
y
j
(5.3)
L igi i quy
24
à trình (5.3),tacóth vi t m tgi i thu t
quy tìmchi udài c a m tLCS c a haichu i.Tuy
nhiên,chúng ta dùngquiho ch ng tính l igi i
theocách t
d ilên.
Th
t cLCS-LENGTHcóhaichu i X=<x
1
,x
2
, …, x
m
>

và Y=<y
1
, y
2
, …, y
n
>là uvào.
Th
t c l ucác tr c[i, j] trong b ngc[0 m,0 n].Nó
c
ng duytrì b ng b[1 m,1 n] ngi nhóavi c t o
l
igi i t i u.
Tínhchi udài c a m tLCS
25
procedure - (X, Y)
begin
m:=length[X];n:=length[Y];
for i:=1to m do c[i, 0]:=0; for j:= 1 to n do c[0,j]:=0;
for i:=1to m do
for j:= 1 to n do
if x
i
= y
j
then
begin c[i,j]:= c[i-1,j-1]+1; b[i,j]:= “” end
else if c[i – 1,j]>= c[i,j-1] then
begin c[i,j]:=c[i – 1,j]; b[i, j]:= “↑” end
else

begin c[i,j]:=c[i, j-1];b[i,j]:= “←” end
end;
Hình5.2sau
âytrình bày matr n c c athí d .

×