Upload
vandai88
View
221
Download
0
Embed Size (px)
Citation preview
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 1/39
Phân tích thiết kế giải thuậtPh m Nguyên Khang, Đ Thanh Nghạ ỗ ị
BM. Khoa h c máy tínhọ
Khoa CNTT – Đ i h c C n Thạ ọ ầ ơ
{pnkhang,dtnghi}cit.ctu.!du."n
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 2/39
# Mục tiêu# Từ bài toán đến chương trình# Các kỹ thuật thiết kế giải thuật
– Chi đ! tr" – #u$ %ui
●
&'t c(n● )hánh cận – *áu +n,Th- +n,Th- %-,. /0r112$3 – #u$ ho(ch đ4ng
# 5ài tậ6
$
)4i 2ung
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 3/39
Mục tiêu# 5iết các kỹ thuật thiết kế giải thuật7 từ 8 tư9ng
cho đến giải thuật chi tiết:
# *i!u r; ngu$ên %8 c< các kỹ thuật 6hân tíchthiết kế giải thuật:
# &ận 2ụng kỹ thuật 6hân tích thiết kế đ! giải cácbài toán th=c tế7 các bài toán 2(ng nào thì c>th! á6 2ụng đư?c kỹ thuật nà$:
%
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 4/39
Từ bài toán đến chương trình
Bài toánthực tế
Thiết kế @ậ6 trình
0iải thuật
#include…
Chương trình
Kỹ thuật thiết kế giảithuật:
Chia để trị, quy hoạchđộng, háu n, nhánhcận, !
)gAn ngB %ậ6 trình7•PDC@E C,CFFEG&E .
Hánh giá
Iỹ thuật 6hân tíchđánh giá giải thuật7•H4 6hJc t(6 c<giải thuật•Cải tiến 0T
0iải thuật tKt
&
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 5/39
Iỹ thuật chi đ! tr" /8 tư9ng3# Lêu cu7
– Cn 6hải giải bài toán c> kích thưNc n:
# Phương 6há67 – T chi bài toán bn đu thành -4t OK bài toán con đng
2(ng QNi bài toán bn đu c> kích thưNc nhR hơn n: – 0iải các bài toán con đư?c các %Si giải con – Tng h?6 %Si giải con %Si giải c< bài toán bn đu:
#.ChU 87 – HKi QNi từng bài toán conE t %(i chi chUng thành các bài
toán con nhR hơn nB: – #uá trình 6hân chi nà$ OV 2ừng %(i khi kích thưNc bài toán
đ" nh# -à t c> th! giải 2W 2àng 0Xi %à bài toán cơ O9:
'
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 6/39
Iỹ thuật chi đ! tr" /6hân tích3
(
Đ u ")o* ần, m, …
Đ u +a* ầo
Đ u ")o* ần1, m2,
…
Đ u +a* ầo1
Đ u ")o* ần2, m2,
…
Đ u +a* ầo2
Đ u ")o* ầnk, mk,
…
Đ u +a* ầok
T ng h p k t qu :ổ ợ ế ả
Tính o t o, o$, -, ok ừ
B)i toán an/ u ầ
B)i toán con
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 7/39
Iỹ thuật chi đ! tr" /giải thuật3solve(n) {
if (n đủ nhỏ để có thể giải được)giải bài toán KQreturn KQ;else {hi! bài toán thành các bài toán con
"ch thư$c n%& n'& …
KQ% solve(n1); giải bài toán con %KQ' solve(n2); giải bài toán con '
…*+ng hợ, các "-t .uả KQ%& KQ'& … KQreturn KQ;
/
0
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 8/39
&í 2ụ7 #uick Oort# 0iải thuật #uick Dort
– DY6 Zế6 2[$ n OK th1o thJ t= t+ng 2n# \6 2ụng kỹ thuật chi đ! tr"7
– Chi 2[$ n OK thành ] 2[$ con● TrưNc khi chi 6hải 6hân ho(ch
–
0iải ] bài toán con● DY6 Zế6 2[$ bên trái● DY6 Zế6 2[$ bên 6hải
– Tng h?6 kết ^uả7●
IhAng cn tng h?6
1
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 9/39
&í 2ụ7 #uick Oort2
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 10/39
H4 6hJc t(6 c< #uick Oort# _`u nh`t
– a[$ n OK đ[ đUng thJ t= t+ng 2n – Phân ho(ch b" %ch7 6hn t chKt %à 6hn t nhR
nh`t de cn n 6h'6 Oo Oánh đ! biết n> %à 6hnt đu tiên
– H4 6hJc t(6 trong trưSng h?6 nà$ %à7 $%n&' # TKt nh`t7
– Phân ho(ch cân bfng7 6hn t chKt %à 6hn tgiB 2[$ de C%n' ( &C%n)&' * n
– H4 6hJc t(6 trong trưSng h?6 nà$ %à7 $%n+ogn'
# ChJng -inh đ4 6hJc t(6 trung bình7 $%n+ogn'
3
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 11/39
&í 2ụ7 M1rg1 Dort# 0iải thuật M1rg1 Dort
– DY6 Zế6 2[$ n OK th1o thJ t= t+ng 2n# \6 2ụng kỹ thuật chi đ! tr"7
– Chi 2[$ n OK thành ] 2[$ con● IhAng cn 6hân ho(chE cJ cYt 2[$ OK r %à- ]
–
0iải ] bài toán con● DY6 Zế6 2[$ bên trái I#● DY6 Zế6 2[$ bên 6hải I#]
– Tng h?6 kết ^uả7●
Tr4n kết ^uả /th1o thJ t=3 c< ] bài toán con
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 12/39
&í 2ụ7 M1rg1 Dort$
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 13/39
H4 6hJc t(6 c< M1rg1 Oort# DY6 Zế6 2[$ n OK
– DK %n Oo Oánh7 C%n' ( &C%n)&' * n – H4 6hJc t(6 %à7 $%n+ogn' – Cn thê- n đơn Q" b4 nhN cho %ưu trB
%
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 14/39
5ài tậ67 Tì- 6hn t tr4i# Cho -ảng n 6hn t # Phn t tr4i7 6hn t Zu`t hin nhiu hơn n,]
%n# Tì- 6hn t tr4i c< -ảng n 6hn t: Các
6hn t ch c> th! Oo Oánh dd hojc d
# 0?i 87 – Chi -ảng thành ] -ảng con
&
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 15/39
0iả- đ! tr"# TrưSng h?6 đjc bit c< chi đ! tr"# \6 2ụng cho các bài toán tì- kiế-
– Tì- đi!- chi cYt – Tl$ th1o điu kin /Qí 2ụ7 dE mE e3 -à chXn
6hn Z %8 6hl h?6
# ChU 87 – #uá trình chi cYt OV 2ừng khi khAng cn gì đ!chi
– Phải ki!- tr điu kin trưNc khi chi cYt
'
(
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 16/39
&í 2ụ# Tì- kiế- nh" 6hân trên -4t 2[$ đ[ OY6 Zế6
– Tì- 6hn t c> giá tr" trong -ảng n 6hn t: Phn t
đu tiên c> Q" trí -: Trả Q Q" trí tì- th`$E nếu khAng tì-th`$ trả Q .# Iỹ thuật giả- đ! tr"
– Tì- 6hn t giB –
Do Oánh QNi 6hn t giB – )ếu bfng nhu Trả Q Q" trí giB – )ếu nhR hơn Tì- n trái – )ếu %Nn hơn Tì- n 6hải –
Trả Q .
(
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 17/39
Iỹ thuật ^u$ %ui /8 tư9ng3# 0iải bài toán tKi ưu
– Tì- -4t +/i giải t0i 1u trong OK các %Si giải – Mi +/i giải g- thành n thành 2h3n: – #uá trình Zâ$ 2=ng -4t %Si giải đư?c Z1- như
^uá trình tì- n thành 6hn: Mi thành 6hnđư?c tì- kiế- trong bưNc:
● Các 415c 6hải c> 6ạng gi0ng nhau:● p -i bưNcE t c> th! 2W 2àng chXn %= -4t
thành 6hn: – Du khi th=c hin đ< n bưNc t đư?c %Si giải
0
1
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 18/39
Iỹ thuật ^u$ %ui /6hương 6há63# Phương 6há6
– &'t c(n /brut1 qorc13● Tì- hết t`t cả các %Si giải● H4 6hJc t(6 thSi gin %$ thừ
– )hánh cận /brnch n2 boun23● Ch tì- nhBng %Si giải c> %?i● Cải tiến thSi gin th=c hin
1
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 19/39
&'t c(n /8 tư9ng3# s tư9ng7
– 0n giKng chi đ! tr" nhưng Zâ$ 2=ng %Si giải từ 2ưNi %ên trongkhi chi đ! tr" %à 6hân tích từ trên ZuKng
# M4t 6hương án,%Si giải C7 – 0- n thành 6hn CE C]E .E Cn
# p -i bưNc iE c> -4t OK %= chXn cho thành 6hn i: – ChXn -4t giá tr" nào đ> cho thành 6hn i – 0Xi đ ^u$ đ! tì- thành 6hn i F
– *<$ bR O= %= chXnE ^u$ %ui %(i bưNc chXn giá tr" khác chothành 6hn i#.ChU 87
– #uá trình đ ^u$ kết thUc khi i e n – Ihi tì- đư?c %Si giảiE Oo Oánh QNi các %Si trưNc đ> đ! chXn %Si
giải tKi ưu
2
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 20/39
$3
B c i*ướ
B c i4ướ
C5i6 7 B c i4ướ
C5i6 7 $ B c i4ướ
C5i6 7 k
B c i t8m th)nh ph nướ ầth i c a 9 i gi iứ ủ ờ ả C
: a ch n ự ọ
: a ch n $ự ọ : a ch n k ự ọ
&'t c(n /6hân tích3
$
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 21/39
&'t c(n /giải thuật3search(int i) {
if (i 0 n)
Kie1 t2!& 3o 3ánh l4i giải 5$i cácl4i giải hi6n có 74i giải t8i ưu
else {
9o2 (: ∈ l! ch<n có thể có củ! bư$c i) {
=i> :; 7! ch<n ,! : cho bư$c i
search(i + 1); ?<i đ6 .u@=i> null; Aủ@ bỏ l! ch<n
/
/
/
$
$$
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 22/39
&í 2ụ7 bài toán v hậu# &`n đ7
– 5àn cS Qu c> kích thưNc vZv – Hjt v con hậu Oo cho chUng khAng +n nhu
$$
$%
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 23/39
&í 2ụ7 bài toán v hậu
$%
$&
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 24/39
&í 2ụ7 bài toán v hậu
$&
$'
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 25/39
&'t c(n /giải thuật3
try(int i) { for "%B1 {
cu2C,o3 " if (3!9e(cu2C,o3)) {
3!5e(cu2C,o3)if (i D n)
t2@(iE%)
else ,2int(3olution) c!ncel(cu2C,o3)
/ /
/
$'
$(
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 26/39
)hánh cận# Cải tiến giải thuật ^u$ %ui Q't c(n
– T(i -i bưNcE t OV Z1- Z't Z1- c> nên đi bưNc
kế tiế6 nB h$ khAng – &ic Z1- Z't 2= trên khái ni78 cận c< bưNc
hin hành
$(
$0
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 27/39
&'t c(n QO )hánh cận Vét c nạ Nhánh c nậ
else {
for (: ∈ 7 củ! i){=i> :;
3e!2ch(i E %);
=i> null;
/
/
else {
for (: ∈ 7 củ! i) tnh cFn cho 7 :
GH I-, các 7 theo cFn
for (: ∈ 7 củ! i) {
if (cận của j còn tốt) {
c=i> :;3e!2ch (i E %);
=i> null;
/
/
/
$0
$1
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 28/39
Iỹ thuật háu +n /gr112$3# Mục đích7
– Tì- -4t %Si giải tKt trong thSi gin ch`6 nhận đư?c /đ4
6hJc t(6 đ thJc th$ Qì %$ thừ3# s tư9ng – Chi ^uá trình tì- %Si giải thành nhiu bưNc như kỹ thuật
^u$ %ui# &Ni -i bưNc
– DY6 Zế6 các %= chXn cho bưNc đ> th1o thJ t= nào đ> wc>%?ix /t+ng 2n hojc giả- 2n tl$ th1o cách %ậ6 %uận3
– ChXn %= chXn tKt nh`t ri đi tiế6 bưNc kế /kh9ng quay+ui3
$1
$2
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 29/39
&í 2ụ# Má$ rUt tin TM7
– @o(i gi`$7 yy:yyy QnđE zy:yyy QnđE ]y:yyy QnđQà y:yyy Qnđ:
–
Mi %o(i tin đu c> OK %ư?ng khAng h(n chế: – Ihách hàng cn rUt -4t OK tin n Qnđ /tính ch{nđến y:yyy QnđE h$ n chi hết cho y:yyy3:
– Phương án trả tin Oo cho trả đ< n Qnđ Qà OK tS
gi`$ b(c 6hải trả %à ít nh`t:
$2
%3
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 30/39
&í 2ụ -á$ rUt tin TM /tt3# Má$ rUt tin TM7
– 0Xi _ d /_E _]E _|E _}3 %à -4t 6hương án trả tin: – _ %à OK tS gi`$ b(c yy:yyy QnđE _] %à OK tS gi`$ b(c
zy:yyy QnđE _| %à OK tS gi`$ b(c ]y:yyy Qnđ Qà _} %àOK tS gi`$ b(c y:yyy Qnđ: – Mục tiêu %à _ F _] F _| F _} đ(t nhR nh`t QNi ràng
bu4c %à7
_~yy:yyyF_]~zy:yyyF_|~]y:yyyF_}~y:yyy d n
%3
# s tư9ng7 – H! /_ F _] F _| F _}3 nhR nh`t thì các tS gi`$ b(c
-nh giá %Nn 6hải đư?c chXn nhiu nh`t 7•33
%
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 31/39
&í 2ụ -á$ rUt tin TM /tt3
%
# s tư9ng7 – H! /_ F _] F _| F _}3 nhR nh`t thì các tS gi`$ b(c
-nh giá %Nn 6hải đư?c chXn nhiu nh`t 7•33 – TrưNc hết t chXn tKi đ các tS gi`$ b(c yy:yyy QnđE
_ %à OK ngu$ên %Nn nh`t Oo cho _ ~ yy:yyy n: – DK tin cn rUt cn %(i %à n € _ ~ yyyyy – Chu$!n Ong chXn %o(i gi`$ b(c zy:yyy đngE Qà cJ
tiế6 tục như thế cho các %o(i -nh giá khácE Q:Q:
%$
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 32/39
#u$ ho(ch đ4ng# Mục đích7
– Cải tiến thuật toán chi đ! tr" hojc ^u$ %ui Q't c(n đ!giả- thSi gin th=c hin
# s tư9ng7 – @ưu trB các kết ^uả c< các bài toán con trong 5)0
#‚L *ƒ„C* /cơ chế caching3 – Hi 4ộ nh5 %`$ th/i gian /tr21 -1-or$ qor ti-13
# Thiết kế giải thuật bfng kỹ thuật #u$ ho(ch đ4ng – Phân tích bài toán 2lng kỹ thuật chi đ! tr",^u$ %ui
– Chi bài toán thành các bài toán con – ;8 quan h7 gi<a K= c"a 4ài toán +5n >à K= c"a các
4ài toán con %c9ng th?c truy h@i' – @ậ6 bảng ^u$ ho(ch
%$
%%
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 33/39
#u$ ho(ch đ4ng# @ậ6 bảng ^u$ ho(ch
– DK chiu d OK biến trong cAng thJc tru$ hi – Thiết %ậ6 ^u$ tYc đin kết ^uả Qào bảng ^u$ ho(ch
● Hin các A khAng 6hụ thu4c trưNc● Hin các A 6hụ thu4c Ou
– Tr bảng tì- kết ^uả /thưSng ch tì- đư?c giá tr"3 – @n Qết trên bảng đ! tì- %Si giải tKi ưu
%%
%&
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 34/39
&í 2ụ7 tính t h?6# T h?67
– C/nEk3 d nếu /ndk3 hojc kdy – C/nEk3 d C/n•E k•3 F C/n•E k3
%&
C(4,2)
C(3,1) C(3,2)
C(2,0) C(2,1) C(2,1) C(2,2)
%'
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 35/39
&í 2ụ7 tính t h?6# H4 6hJc t(6 giải thuật đ ^u$7
– T/n3 %à thSi gin đ! tính OK t h?6 chậ6 k c< nEthì t c> 6hương trình đ ^u$7T/3 d CT/n3 d ]T/n•3 F C]de &ậ$ đ4 6hJc t(6 ^uá %Nn7 T/n3 d ƒ/]n3
%'
%(
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 36/39
&í 2ụ7 tính t h?6# #u$ ho(ch đ4ng7 T/n3 d ƒ/n]3
%
C 0 1 2 3 4
0 1
1 1 1
2 1 2 1
3 1 3 3 1
4 1 4 6 4 1
k
n
%0
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 37/39
Chi đ! tr" QO ^u$ ho(ch đ4ngChia đ trể ị Quy ho ch đ ngạ ộ
# ; t ngưở
– Ph<n += th)nh các )i toán con – T ng h p k t >uổ ợ ế ả
# ?i i thu t*ả ậ – Đ >uy t t+ên @u ngệ ừ ố – Đ ph c t p th i gian 9 n n uộ ứ ạ ờ ớ ế
cA nhi u )i con gi ng nhauề ố – Không c n u tr k t qu ầ ư ữ ế ả
c a t t c các !"i toán conủ ấ ả
# ; t ngưở ; t ng*ưở – Ph<n += th)nh các )i toán con – T8m m i >uan hố ệ
# ?i i thu t*ả ậ ?i i thu t*ả ậ – : p ng >uy ho ch ") gi i tậ ả ạ ả ừ
d i 9ênướ – # ph c t p th i gian nhộ ứ ạ ờ ỏ
h n nh $ % ng ! ng quyơ ờ ử ụ ảho chạ
– C n nh / 9 u t+ ng ầ ộ ớ ể ư ữ ả
>uy ho chạ
%0
%1
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 38/39
Iết h?6 ^u$ ho(ch đ4ng Qà đ ^u$# D 2ụng bảng ^u$ ho(ch đ! %ưu kết ^uả bài toán con# IhAng cn đin hết t`t cả bảng ^u$ ho(ch
– Hin bảng ^u$ ho(ch th1o $êu cu● 5Yt đu từ bài toán gKc
● )ếu trong bảng ^u$ ho(ch chư c> I#E gXi đ ^u$ đ! tì- kết^uả Qà +1u kết quả >ào 4ảng quy hoạch
● )ếu I# đ[ c> trong bảng ^u$ ho(chE O 2ụng ng$ kết ^uảnà$
# C> th! O 2ụng bảng b+- đ! %ưu trB bảng ^u$ ho(ch
%
%2
8/13/2019 Thiet ke giai thuat
http://slidepdf.com/reader/full/thiet-ke-giai-thuat 39/39
Iết %uận# Mi kỹ thuật ch 6hl h?6 QNi hojc OK %o(i bài toán# Mi kỹ thuật đu c> ưu Qà khu$ết đi!-E khAng c> kỹ
thuật nào %à wtr" bá bnhx – Iỹ thuật nhánh cận cn 6hải c> cách ưNc %ư?ng cậntKt -Ni -ong cYt đư?c nhiu nhánh
– #u$ ho(ch đ4ng ch tKt khi OK %ư?ng bài toán con cn6hải giải %à đ thJc /nE n] hojc n|3
– Iỹ thuật Q't c(n c> đ4 6hJc t(6 thSi gin ^uá co/%$ thừ3● Ch 2lng khi n nhR hojc khi khAng cn cách nào khác
%2