ly thuet thuat toan
TRANSCRIPT
-
7/31/2019 Ly Thuet Thuat Toan
1/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 M C L C
N i dung TrangCh ng 1: K thu t phn tch nh gi thu t ton 41.1. Khi ni m bi ton v ph c t p d li u vo 41.1.1. Khi ni m bi ton 4
1.1.2. ph c t p d li u vo c a bi ton 41.2. Cc m hnh tnh ton 41.2.1. My Turing 51.2.2. My x l thu t ton vi t b ng ngn ng t a ALGOL 71.3. Khi ni m thu t ton v ph c t p c a thu t ton 71.3.1. Thu t ton( Algorithm) 71.3.2 Chi ph ph i tr cho m t qu trnh tnh ton v cc khi
ni m v ph c t p thu t ton 7
1.4. Cch tnh ph c t p 101.4.1. Cc quy t c c b n 10
1.4.2. ph c t p c a cc ch ng trnh quy 111.5. Thu t ton khng n nh a th c(Nodeterministic Polynomial NP)
14
1.5.1. S phn l p cc bi ton. 161.5.2. Khi ni m d n v c ( Php quy d n ) 171.5.3 L p bi ton NP - kh ( NP - hard) v NP - y ( NP Complate)
18
1.6. Thu t ton x p x ( Heuristic) 221.6.1. Cc khi ni m 221.6.2. Thu t ton - x p x tuy t i 24
1.6.3.Thu t ton - x p x 261.7. Ch ng minh tnh ng n c a thu t ton 281.7.1. V d : 281.7.2. Ph ng php th 281.7.3. Ki m ch ng tnh ng n 29
Ch ng 2: Cc thu t ton S p x p 312.1. Bi ton s p x p 312.1.1. T m quan tr ng c a bi ton s p x p 312.1.2. S p x p trong v s p x p ngoi 31
2.1.3. T ch c d li u v ngn ng ci t 312.1.4. Thu t ton s p x p 322.2. Cc ph ng php s p x p n gi n 322.2.1. S p x p ch n (Selection Sort) 322.2.2. S p x p chn (InsertionSort) 332.2.3. S p x p n i b t(Bubble Sort) 352.3. S p x p nhanh QUICK SORT 362.3.1. t ng 362.3.2. Thi t k gi i thu t 362.3.3. nh gi ph c t p 38
2.4. S p x p ki u vun ng (Heapsort) 392.4.1. nh ngha HEAP 392.4.2. S p x p ki u vun ng 40
1
-
7/31/2019 Ly Thuet Thuat Toan
2/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 2.4.3. ph c t p tnh ton 402.5. S p x p ha nh p ( Merge Sort) 432.5.1. t ng 432.5.2. Thi t k gi i thu t 442.5.3. nh gi ph c t p 462.6. C u trc d li u v gi i thu t x l ngoi 46
2.6.1. M hnh x l ngoi 462.6.2. nh gi cc gi i thu t x l ngoi 472.6.3. S p xp ngoi - MergeSorting 472.6.4. C i ti n s p x p tr n 512.6.5. Tr n nhi u ng 52Ch ng 3: K thu t thi t k thu t ton 543.1. Chia tr 543.1.1. N i dung 543.1.2. M t s bi ton p d ng 553.2. Quy ho ch ng (Dynamic) 58
3.2.1. N i dung 583.2.2. V d p d ng 593.3. Ph ng php tham lam ( Greedy Method) 633.3.1. Bi ton t i u t h p 633.3.2. N i dung 643.4. Ph ng php nhnh c n (Branch- and- Bound) 683.4.1. N i dung 683.4.2. Cc bi ton p d ng 69Ch ng 4: L thuy t l p l ch 754.1. V n l p l ch t i u 75
4.1.1. Bi ton 754.1.2. Nh n xt 764.1.3. Tnh hnh gi i bi ton l p l ch hi n nay 774.2. Phn l p bi ton l p l ch d ng tnh 784.2.1. Thng tin v cng vi c 784.2.2. Quan h gi a cc my 78
4.2.3. Quan h gi a cc cng vi c 794.2.4. M t s tiu chu n t i u 804.2.5. M t s v d 804.2.6. M t s thu t ton l p l ch 814.3. M t s bi ton l p l ch gi i b ng thu t ton l p l ch t i
u nhanh81
4.3.1. H 1 ,n Cmax 814.3.2. Nhm h 1, n Lmax v 1, n Tmax 834.3.3. H 1,n ri 0 Cmax 854.4. Bi ton l p l ch gia cng trn 2 my, thu t ton Johnson 884.4.1. Bi ton 2; Fri 0Cmax 884.4.2. Thi t k thu t ton 88
4.4.3. M t s tr ng h p ring c th d n v bi ton 2 my 91
2
-
7/31/2019 Ly Thuet Thuat Toan
3/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Ch ng 1
K THU T PHN TCH, NH GI THU T TON
1.1. Khi ni m bi ton v ph c t p d li u vo
1.1.1. Khi ni m bi ton- Thng th ng m t bi ton c cho d i d ng sau:
+ Input: Cc d li u vo c a bi ton.
+ Output: Cc d li u ra tho mn yu c u c a bi ton.
- Gi i bi ton c ngha l xu t pht t d li u vo, th c hi n m t dy h u h n
nh ng thao tc c c s khoa h c thch h p tm c d li u ra (k t qu ) theo
yu c u c a bi ton.
1.1.2. ph c t p d li u vo c a bi ton
C hai quan ni m ch y u:
Quan ni m 1 (quan ni m n gi n): ph c t p d li u vo c a bi ton oc
hi u l s l ng d li u vo c a bi ton (kch th c c a bi ton
Quan ni m 2: L t ng di c a m i d li u vo c m ha theo m t cch
no .
V d : Cho dy s nguyn X={x 1,x2,,xn}. Tm gi tr l n nh t trong dy? Bi ton c bi u di n nh sau:
Input : Cho dy s nguyn X= {x 1,x2,,xn}, s l ng n.
Output: Tm s l n nh t Max c a dy X.
- Theo quan ni m 1 : Kch th c c a bi ton l (n+1)
- Theo quan ni m 2 : Kch th c c a bi ton l
+ S t nhin x i theo m nh phn c di l [log 2xi]+1
VD: xi m di3 11 [log23]+1=2
5 101 [log25]+1=3
+ di d li u c a bi ton trn l: =
n
i 1[log2xi] +log2n+n+1
1.2. Cc m hnh tnh ton
Thng t ng ng i ta xt n 2 m hnh tnh ton thng d ng:
- M hnh l thuy t: My Turing.
3
-
7/31/2019 Ly Thuet Thuat Toan
4/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - M hnh ng d ng: My x l thu t ton vi t b ng ngn ng t a Algol ( cc ngn
ng l p trnh b c cao).
1.2.1. My Turing
a) C t o: + B nh : G m m t bng tuy n tnh v h n u ph i, chia thnh
cc nh , m i ch a c m t k hi u nguyn t . n tri (n 0) c ghi cc k hi u c a xu vo, ph n cn l i bn ph i c l p y b i m t k
hi u c bi t g i l k hi u tr ng B.
+ B i u khi n: C h u h n tr ng thi, t i m i th i i m c m t
tr ng thi xc nh.
+ M t u c/ vi t, n cho php t i m t th i i m c th c hay
vi t m t trn bng.
b) Ho t ng: Theo th i gian r i r c, c i u khi n b i b i u khi n.
Ty thu c vo tr ng thi hi n t i v k hi u c c trn bng m n ti n hnh
m t b c chuy n g m ng th i 3 ng tc sau:
1. i tr ng thi trn b i u khi n
2. Vi t m t k hi u ln ang c
3. Chuy n u c vi t sang ph i hay tri m t theo quy nh c a hm
chuy n.M t cch hnh th c, xem my Turing l m t b T = ( , Q, , , q0, B,F)
Trong :
Q: T p h u h n cc tr ng thi.
: T p h u h n cc k hi u trn bng
B : M t k hi u c bi t thu c g i l k hi u tr ng.
: T p con c a , khng ch a B, c g i l b ch vo(k hi u
k t thc)
q0: Tr ng thi u
FQ: T p tr ng thi k t thc.
: Hm chuy n tr ng thi
: Q x Q x x {L,R}
L, R l cc tr ng thi: tri, ph i
4
-
7/31/2019 Ly Thuet Thuat Toan
5/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 M t hnh tr ng c a my Turing l m t xu c d ng # 1q 2#, trong # l m t k
hi u khng thu c , # g i l k hi u mt ; cn 1, 2*, q Q. Hnh tr ng u
l
#q0w # v i w *
V d 1:Th i i m t
X ZC D
p
Th i i m t+1
Y Z
C1 D1
q (sang ph i)
Hnh 1: M t b c ho t ng c a my Turing
T i th i i m t my Turing tr ng thi p, u c /vi t nhm vo nh c k
hi u l X. T i th i i m ti p theo t+1 (m t n v th i gian) my tr ng thi q,
k hi u X thay b ng Y, u c/vi t chuy n sang tri ho c sang ph i.
: (p,X)(q,Y,d) d{L,R}
hay vi t pXqYd g i l m t m nh l nh c a my T, xu k t CpXD g i l m t
hnh tr ng c a my T.
CpXDC1qZD1 g i l m t b c chuy n hnh tr ng, n u q F th xem nh qu
trnh x l k t thc hay C 1qZD1 l hnh tr ng cu i cng.
- N u l hm n tr th T c g i l my t t nh( n nh)
- N u l hm a tr th T c g i l my khng t t nh(khng n nh) - n v nh : L nh ch a m t k hi u, n u dng m nh phn th n v nh l
1 bit.
- n v th i gian: L th i gian th c hi n m t b c ho t ng c b n (b c
chuy n hnh tr ng).
Nh n xt : My Turing c c u t o c c k n gi n nh ng l i lm c m i vi c
lin quan t i tnh ton cc php tnh. T m hnh ny c th nh ngha ra php c ng
(m ha d ng nh phn) b ng cch d ch chuy n u c 0, 1 v t nh ngha ra
cc php tnh khc.
5
-
7/31/2019 Ly Thuet Thuat Toan
6/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 1.2.2. My x l thu t ton vi t b ng ngn ng t a ALGOL
- n v nh : M t nh ch a tr n v n m t d li u.
- n v th i gian: Th i gian th c hi n m t php tnh c b n trong s h c hay
logic nh c ng, tr , nhn, chia, gn, so snh
1.3. Khi ni m thu t ton v ph c t p c a thu t ton 1.3.1. Thu t ton( Algorithm)
Thu t ton c hi u n gi n l m t dy h u h n cc qui t c. V i c u t o v
ho t ng c a my Turing, ta c th nh ngha m t cch hnh th c thu t ton chnh
l m t my Turing.
Ta c 2 m hnh tnh ton l my Turing v my x l thu t ton vi t b ng ngn
ng t a ALGOL. ng v i hai m hnh tnh ton ny c 2 cch bi u di n thu t ton:
+ Thu t ton c bi u di n b ng ngn ng my Turing.
+ Thu t ton c bi u di n b ng ngn ng t a ALGOL.
1.3.2 Chi ph ph i tr cho m t qu trnh tnh ton v cc khi ni m v ph c
t p thu t ton
1.3.2.1. Chi ph ph i tr cho m t qu trnh tnh ton
Th ng quan tm t i chi ph th i gian v chi ph khng gian ( b nh )
- Chi ph th i gian c a m t qu trnh tnh ton l th i gian c n thi t th c hi n
m t qu trnh tnh ton.
+ V i my Turing: Chi ph th i gian l s b c chuy n hnh tr ng t hnh tr ng
u n hnh tr ng k t thc.
+ V i thu t ton t a Algol: Chi ph th i gian l s cc php tnh c b n c n th c
hi n trong qu trnh tnh ton.
- Chi ph khng gian c a m t qu trnh tnh ton l s nh c n th c hi n m t
qu trnh tnh ton.G i A l m t thu t ton t ng ng v i m t m hnh tnh ton
G i e l b d li u vo c m ha theo cch no
Khi thu t ton A tnh trn d li u e c n ph i tr m t gi nh t nh bao g m 2
gi:
+ tA(e) l gi th i gian
+ lA(e) l gi b nh
Cng m t thu t ton A, x l trn cc b d li u khc nhau th s c gi khc nhau.
V d 2: Cho dy s nguyn S={x 1,x2,xn}, s ph n t n.
6
-
7/31/2019 Ly Thuet Thuat Toan
7/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Tm s l n nh t c a dy ?
Bi ton c bi u di n nh sau.
Input: Dy s nguyn S={x 1,x2,xn}, n
Ouput: S l n nh t Max=max{x i} c a S.
Thu t ton A:Begin Max:=x1;
For i:=2 to n do
Ifxi>Max then Max:=xi;
End.
* Xt b d li u vo e 1={4, 0, 9, 1, 5}
lA(e1)=5+1+1+1=8 (s bi n vo:6, s bi n ra:1, s bi n ph :1)
tA(e1)=5+1=6 v
max:=4 th c hi n 1 php tnh
v x2=0max=4 nn max:=9 th c hi n 2 php tnh
x4=1
-
7/31/2019 Ly Thuet Thuat Toan
8/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Trong v d trn T A(n) =1+2(n-1) = 2n-1.
ph c t p trung bnh
L t ng s cc ph c t p khc nhau ng v i cc b d li u chia cho t ng s .
ph c t p ti m c n
Thu t ton A v i u vo n g i l c ph c t p O(f(n)) n u h ng s C, N 0:TA(n) C.f(n) , n N0. T c l T A(n) c t c tng l O(f(n))
ph c t p a th c(Polynomial)
Thu t ton c g i l c ph c t p a th c n u t n t i a th c P(n) m T A(n)
C.P(n) , n N0.
Thu t ton a th c
Thu t ton c g i l a th c n u ph c t p v th i gian trong tr ng h p x u
nh t c a n l a th c.
Vi c nh gi ng ph c t p c a bi ton l m t v n h t s c ph c t p. V
v y ng i ta th ng quan tm n vi c nh gi ph c t p th i gian trong
tr ng h p x u nh t c a bi ton.
M t s n v o t c tng:
- O(1): H u h t cc ch th c a ch ng trnh u c th c hi n m t l n hay nhi u
nh t ch m t vi l n Th i gian ch y c a ch ng trnh l h ng s . - O(logN): Th i gian ch y c a ch ng trnh l logarit, t c l th i gian ch y c a
ch ng trnh ti n ch m khi N l n d n.
- O(N):Th i gian ch y l tuy n tnh. y l tnh hu ng t i u cho m t thu t ton
ph i x l N d li u nh p.
- O(NlogN): Th i gian ch y tng d n ln cho cc thu t ton m gi i m t bi ton
b ng cch tch n thnh cc bi ton con nh h n, sau t h p cc l i gi i.
- O(N2): Th i gian ch y l b c 2, tr ng h p ny ch c ngha th c t cho cc bi
ton t ng i nh . Th i gian bnh ph ng th ng tng d n trong cc thu t ton
ph i x l t t c cc c p ph n t d li u (2 vng l p l ng nhau).
- O(N3): Thu t ton x l cc b ba c a cc ph n t d li u (3 vng l p l ng nhau)
ngha v i cc bi ton nh .
- O(2n) , O(n!), O(nn): Th i gian th c hi n thu t ton l r t l n do t c tng c a cc
hm m.1.4. Cch tnh ph c t p
8
-
7/31/2019 Ly Thuet Thuat Toan
9/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 1.4.1. Cc quy t c c b n
a) Quy t c c ng :N u T 1(n) v T2(n) l th i gian th c hi n 2 ch ng trnh P 1, P2 v
T1(n)=O(f(n)), T2(n)=O(g(n)) th th i gian th c hi n c a o n 2 ch ng trnh
n i ti p nhau l T(n)=O(max(f(n),g(n))
V d : L nh gn x:=5 t n m t h ng th i gian O(1).
L nh c d li u READ(x) t n m t h ng O(1).
Th i gian th c hi n c 2 l nh trn n i ti p nhau l O(max(1,1))=O(1).
b) Quy t c nhn :N u T 1(n) v T2(n) l th i gian th c hi n 2 o n ch ng trnh P 1,
P2 v T1(n)=O(f(n)), T2(n)=O(g(n)) th th i gian th c hi n c a 2 o n ch ng trnh
l ng nhau l T(n)=O(f(n).g(n)) .
c) Quy t c t ng qut phn tch m t ch ng trnh
- Th i gian th c hi n c a m i l nh gn, READ, WRITE l O(1)
- Th i gian th c hi n c a m t chu i tu n t cc l nh c xc nh b ng quy t c
c ng Th i gian ny l th i gian thi hnh m t l nh no lu nh t trong chu i
l nh.
- Th i gian th c hin c u trc IF l th i gian l n nh t th c hi n cu l nh sau THEN
ho c ELSE v th i gian ki m tra i u ki n, th ng th i gian ki m tra i u ki n l
O(1).
- Th i gian th c hi n vng l p l t ng (trn t t c cc l n l p) th i gian th c hi n
thn vng l p. N u th i gian th c hi n thn vng l p khng i th th i gian th c hi n vng l p l tch s l n l p v i th i gian th c hi n thn vng l p.
V d 3: Tnh th i gian th c hi n o n ch ng trnh:
Begin
1. for i:=1 to n-1 do {l p n-1 l n}.
2. for j:=n downto i+1 do {th c hi n (n-i)l n,m i l n O(1)
9
-
7/31/2019 Ly Thuet Thuat Toan
10/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 O((n-i).1)=O(n-i).
3. ifa[j-1]>a[j] then
begin
i ch (a[i],a[j]).
4. temp:=a[j-1]; O(1)
5. a[j-1]:=a[i];
6. a[j]:=temp;
end.
End.
ph c t p T(n)=
=
1
1
)(n
i
in =2
)1( nn=O(n2).
Ch : ph c t p thu t ton khng ch ph thu c vo kch th c, th i gian m cn
ph thu c vo tnh ch t c a d li u vo.
V d 4: Thu t ton s p x p dy s nguyn tng d n. N u dy nh p vo c th t th th i gian th c hi n khc v i khi nh p vo dy ch a c th t
1.4.2. ph c t p c a cc ch ng trnh quy
V i cc ch ng trnh ch ng trnh quy, tr c h t ta c n thnh l p cc ph ng
trnh quy, sau gi i cc ph ng trnh quy. Nghi m c a ph ng trnh quy
l th i gian th c hi n ch ng trnh quy .
a)Thnh l p ph ng trnh quy:
Ph ng trnh quy l m t ph ng trnh bi u di n m i lin h gi a T(n) v T(k) trong T(n) l th i gian th c hi n v i kch th c d li u nh p l n,
T(k) l th i gian th c hi n v i kch th c d li u nh p l k, k
-
7/31/2019 Ly Thuet Thuat Toan
11/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 End.
G i T(n) : Th i gian th c hi n tnh n!
T(n-1) : Th i gian th c hi n tnh (n-1)!
Tr ng h p n = 0 Th c hi n m t l nh gn Giai_th a:=1 O(1) T(0)=C1Tr ng h p n>0 G i quy Giai_thua(n-1) t n T(n-1) th i gian
Sau khi c k t qu c a vi c g i quy, ph i nhn k t qu v i n v gn cho
Giai_thua, th i gian th c hi n php nhn v php gn l m t h ng C 2.
V y ta c ph ng trnh quy l :
C1 n u n=0
T(n)=
T(n-1) + C2 n u n>0.
*V d 6: Xt th t c Mergesort sau:
Function Mergesort(L:List;n:Integer):List;
Var L1,L2:List;
Begin
Ifn=1 then return(L)
Else
Begin
Chia L thnh 2 n a L 1,L2 ,m i n a c di n/2
Return(Merge(Mergesort(L1,n/2), Mergesort(L2,n/2));
End;
End;
Hm Mergesort nh n m t danh sch c di n v tr v m t danh sch c
s p x p. Th t c Merge nh n 2 danh sch c s p L 1, L2 m i danh sch c di n/2 tr n chng l i v i nhau c m t danh sch g m n ph n t c th t
Th i gian th c hi n Merge cc danh sch c di n/2 l O(n).
- G i T(n) l th i gian th c hi n Mergesort 1 danh sch c n ph n t
T(n/2) l th i gian th c hi n Mergesort 1 danh sch c n/2 ph n t
Ta c ph ng trnh quy :
11
-
7/31/2019 Ly Thuet Thuat Toan
12/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010
C1 n u n =1
T(n)=
2T(n/2) + C2n n u n>1
Trong : - C1 l th i gian ph i t n khi L c di b ng 1 - Tr ng h p n>1 , th i gian Mergesort c chia lm 2 ph n:
+ Ph n g i quy Mergesort 1 danh sch c di n/2 l T(n/2)
+ Ph n th 2 bao g m php th n>1, chia danh sch thnh 2 n a v
Merge, ba thao tc ny c th i gian khng i Th i gian th c hi n l
C2n
b. Gi i ph ng trnh quy:
Ph ng php truy h i:
Dng quy thay th b t k T(m) v i m1 c thay th b i bi u th c c a T(1). V T(1) lun l
h ng nn ta c cng th c c a T(n) ch a cc s h ng ch lin quan t i n v cc h ng
s .
*V d 7: Gi i ph ng trnh:
C1 n u n=1
T(n)=
2T(n/2) + C2n n u n>1
Ta c ( ) nCn
TnT 222 +
=
( ) nCn
TnCn
Cn
TnT 222 2
4
4
24
22 +
=+
+
=
( ) nCn
TnCn
Cn
TnT 222 3882
4824 +
=+
+
=
( ) niC
nTnT
i
i22
2 +
=
Gi s n=2 k qu trnh suy r ng ny s k t thc khi i=k ( ) ( ) nkCTnT k 212 +=
V 2k=n k=logn v v i T(1) = C 1 ( ) nnCnCnT log21 += )V y th i gian th c hi n thu t ton l O(nlogn)
12
-
7/31/2019 Ly Thuet Thuat Toan
13/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 nh l : (V nghi m c a ph ng trnh truy h i)
Cho a, b, c nguyn, d ng. Khi nghi m c a ph ng trnh truy h i:
T(n) =
=>+
=
kcn1,nnu
c
naT(
1nnu
bn
b
)
C d ng:
T(n) =
>
=ajthen j:=k;
TAM:=ai; ai:=aj; aj:=TAM;
End;
ph c t p tnh ton:
- D li u: n+1 O(n).
- B nh : (n+1)+4=n+5 O(n)
(vo) (i,j,k,tam)
- Th i gian: 2((n-1)+(n-2)++2+1)+4(n-1) = 2n.2
1n+4(n-1) =n2+3n-4 O(n2).
Thu t ton l a th c Th c t gi i c.
1.5.1. S phn l p cc bi ton.
V i m t bi ton cho tr c c 2 kh nng x y ra:
+ Khng gi i c ho c
+ Gi i c b ng thu t ton.
- Tr ng h p bi ton gi i c b ng thu t ton cng chia lm 2 lo i:
+ Th c t gi i c: c hi u l thu t ton x l trong th i gian nhanh, th c t cho php, l thu t ton c ph c t p th i gian l a th c.
+Th c t kh gi i: c hi u l thu t ton x l trong nhi u th i gian, th c t
kh ch p nh n, l thu t ton c ph c t p th i gian l trn a th c (hm m).
Do , ta c s phn l p cc bi ton do 2 tc gi Cook v Karp xu t nm 1970-
1971 nh sau:
- P : L l p cc bi ton c th gi i c b ng thu t ton n nh trong th i
gian a th c ( Deterministic polynomial).
15
-
7/31/2019 Ly Thuet Thuat Toan
16/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 V d : Bi ton v tnh lin thng c a th c th gi i u c nh thu t ton v i th i
gian tnh l O(n2)Thu c l p P
- NP : L l p cc bi ton c th gi i c b ng thu t ton khng n nh trong
th i gian a th c. Hay, l l p cc bi ton m m i nghi m gi nh u c th
c ki m ch ng trong th i gian a th c ( Nondeterministic polynomial)..V d : Bi ton ki m tra m t dy nh c a th G c l chu trnh Hamilton hay
khng c th th c hi n sau th i gian a th c Thu c l p NP
P NP
Nh ng hi n nay ch a ch ng minh c P l t p con th c s c a NP, v n P =
NP? hi n l m t trong s cc v n m n i ti ng nh t v cng t gi nh t trong
Ton h c v trong Tin h c l thuy t.
1.5.2. Khi ni m d n v c ( Php quy d n ): Cho hai bi ton A, B
nh ngha1 : Bi ton A c g i l d n v c bi ton B sau th i gian a
th c n u c m t thu t ton a th c gi i bi ton B th cng c m t thu t ton a
th c gi i bi ton A.
Ngha l: Bi ton B kh h n bi ton A hay A d h n B hay A l tr ng h p
ring c a B. K hi u A B.
Php quy d n c tnh ch t b c c u: A B v B C A C.T t ng quy d n gi i thch vai tr quan tr ng c a l p bi ton P. N u ta c bi
ton A thu c l p P v m t bi ton B c th quy d n v A, th th B cng thu c vo
P. Ngha l P l ng i v i php quy d n.
nh ngha 2 : Bi ton A c g i l kh t ng ng bi ton B n u A B v B
A. K hi u A ~ B .
1.5.3 L p bi ton NP - kh ( NP - hard) v NP - y ( NP Complate)
a) Bi ton quy t nh : Bi ton quy t nh l bi ton m u ra ch c th l
Yes ho c No (ng/sai, 0/1, ch p nh n/t ch i).
V d : Bi ton v tnh nguyn t : H i s nguyn n c l s nguyn t hay khng?.
Khi ta c n = 23 l b d li u vo Yes, cn n = 24 l b d li u vo No c a
bi ton.
b) Bi ton NP Kh(NP Hard)
Bi ton A c g i l NP- kh n u nh t n t i thu t ton a th c gi i bi ton A th ko theo s t n t i thu t ton a th c gi i m i bi ton trong NP.
16
-
7/31/2019 Ly Thuet Thuat Toan
17/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Hay: A l NP Kh n u nh B A, v i m i bi ton B NP
M t cch khng hnh th c, c th ni r ng n u ta c th gi i c m t cch hi u
qu m t bi ton NP Kh c th th ta cng c th gi i hi u qu b t k bi ton
no trong NP b ng cch s d ng thu t ton gi i bi ton NP-Kh nh l m t ch ng
trnh con.c) Bi ton NP - y ( NP complete, NPC)
M t bi ton quy t nh A c g i l NP - y n u nh
i) A l bi ton trong NP,
ii) M i bi ton trong NP u c th quy d n v A.
L u : Khi ni m NP - y i h i bi ton nh t thi t ph i c d ng quy t nh.
Ta c b c tranh t m th i y v phn l p cc bi ton trn hnh sau:
Hnh 2: S phn l p cc bi ton
c) Ph ng php ch ng minh m t bi ton l NP - y
- Cch 1: Theo nh ngha (r t kh).
- Cch 2: p d ng b sau:
B : Gi s bi ton A l NP - y , bi ton B thu c NP v bi ton A quy d n
v B. Khi bi ton B cng l NP - y .
V d 9: Bi ton x p bal(KNASPACK) NPC Ch ng minh bi ton l p l ch NPC.
Bi ton l p l ch ( Bi ton PH T ):
Input: C n cng vi c x l trn m t my.
ri: Th i i m b t u cng vi c x l i
di : H n nh hon thnh cng vi c i.
ti : Th i gian x l cng vi c i, t i di-ri.
bi : Th i gian b t u x l.
ci : Th i gian k t thc cng vi c i, t i=ci-bi
17
NP
NPC
NP-kh
-
7/31/2019 Ly Thuet Thuat Toan
18/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 n u c i di , cng vi c i l x l ng h n.
n u c i>di , cng vi c i l x l qu h n(b ph t).
wi : Ti n ph t.
Output: Hy s p x p cc cng vi c theo m t th t nh t nh theo ch n
l t x l, sao cho l ng ti n ph t l t nh t. K hi u U i = 0 n u c i di (ng h n)
1 n u c i>di (qu h n)
Khi yu c u : =
n
i 1
UiWi min
Ta c th vi t bi ton trn ng n g n nh sau : 1n =
n
i 1
UiWi . K hi u l PH T.
Bi ton ny r rng l gi i c b ng ph ng php vt ton b . Nh ng th c t kh gi i v n thu c l p NP_ y .
ch ng minh bi ton PH T l NP - y , ch c n ch ng minh r ng bi ton
KNAPSACK PH T v ta bi t KNAPSACK l NP_ y . Ni m t cch khc
KNAPSACK l tr ng h p ring c a PH T.
Nh c l i bi ton KNAPSACK :
Input: n v t v i th tch a 1,a2,an c n nht vo bal c th tch B.
Output: Tm nhm v t c th nht v a kht bal trn.
( T {1,2,,n} m BaiTi
=
.)
a) ch ng minh KNAPSACK PH T tr c h t ta di n t n b ng ngn
ng c a bi ton PH T. C th m i v t i KNAPSACK c xem l m t
cng vi c trong PH T, chng ng th i c nh p vo h th ng. M i cng
vi c c h n nh nh nhau v b ng B. Th i gian t i th c hi n cng vi c i b ng
ti n ph t w i v b ng th tch a i c a v t.
Tm l i ta c th bi u di n bi ton nh sau:
Input: - n cng vi c ng th i c x l r i =0, i=1,2,,n.
- m i cng vi c i (1 ni ) c bi t d i=B, ti=wi=ai, i=1,2,,n.
- my lm vi c lin t c cho n khi m i cng vi c c x l xong.
- t i m i th i i m my ch x l c m t cng vi c.
- khi ang x l cng vi c i, khng c php ng t n th c hi n m t cng vi c khc.
18
-
7/31/2019 Ly Thuet Thuat Toan
19/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Output: Hy l p l ch my x l cc cng vi c sao cho l ng ti n ph t l t nh t
=
n
i 1
UiWi l nh nh t.
b) Ch ng minh:
Gi i c PH T b ng thu t ton n nh a th c th cng gi i c KNAPSACK b ng thu t ton n nh a th c v ng c l i.
Gi s gi i c PH T t c l l ch bi u m =
n
i 1
WiUi l nh nh t, v y th: =
n
i 1
WiUi==
n
iia
1-b.
Suy ra S {1,2,,n} m =
n
i 1
UiWi =Si
ia ==
n
iia
1-b
Hay b==
n
iia
1-
Siia =
Tiia v i T={1,2,,n}- S. Nh v y KNAPSACK gi i
c.
Ng c l i, gi s KNAPSACK gi i c, t c l T {1,2,,n} m baTi
i =
hay
Ti
ia ==
n
iia
1-
Siia =b, nh v y
=
n
iia
1-
=
n
i 1
UiWi =b =
n
i 1
UiWi ==
n
iia
1-b , y l l ng
ti n nh nh t v PH T gi i c.
*Ch : N u t t c n cng vi c u qu h n th l ng ti n ph t l n nh t l
=n
iia
1 .d) M t s bi ton c ch ng minh l NP kh , NP - y
ch ng minh m t bi ton no l NP- y (NP-kh) cng vi c kh khn nh t
l tm c m t bi ton NP- y c th quy d n v n. Do ta c n bi t thm
v nh ng bi ton c ch ng minh l NP- y , cho n nay danh m c cc bi
ton NPC trong cc lnh v c a d ng :Logic Bool, th , s h c, l p l ch, tr ch i,
otomat ln n hng nghn . Sau y l m t s bi ton c ch ng minh l
NPC:
Bi ton 3-SAT.
19
== iii wab
ri=0 b d
i=b -b
-
7/31/2019 Ly Thuet Thuat Toan
20/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Xt cc bi u th c Bool l h i c a cc m nh m m i m nh l tuy n c a ng 3
ton h ng, m i ton h ng l m t bi n Bool (x) ho c ph nh c a n )(x . Bi u th c
Bool c d ng nh v y c g i l cng th c 3-CNF (d ng chu n t c h i 3
conjunctive normal form).
V d . Bi u th c )()()()( uzxzyxzyxzyx L m t 3-CNF ch a 4 bi n Bun x, y, z, u.
Bi ton 3-SAT: Cho m t cng th c 3-CNF, h i r ng c t n t i m t b gi tr c a cc
bi n sao cho bi u th c nh n gi tr TRUE hay khng?
Bi ton v b l n nh t c a th (MaxClique):
Cho th v h ng G = (V, E). M t th con y c a th G c g i l b
(clique). Ta g i kch th c c a b l s nh c a n. B c a th G v i kch th c l n nh t c g i l b l n nh t(MaxClique)
V d:
Hnh 3:
Bi ton Clique: Cho th v h ng G = (V, E) v s nguyn k. H i th G c
ch a b v i kch th c hay khng ?
.Bi ton ph nh(Vertex Cover- VC) : Ta g i m t ph nh c a th v h ng
G=(V, E) l m t t p con cc nh c a th S V sao cho m i c nh c a th c t
nh t m t u mt trong S. Ta g i kch th c c a m t ph nh l s nh c a n
Bi ton VC: Cho th v h ng G=(V, E) v s nguyn k. H i c ph nh v i
kch th c k hay khng?
20
a)MaxClique kch th c 3 b)MaxClique kch th c 4
-
7/31/2019 Ly Thuet Thuat Toan
21/92
Hnh 4
a) Ph nh v i kch th c 2 b) Ph nh v i kch th c 3
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 V d:
1.6. Thu t ton x p x ( Heuristic)
1.6.1. Cc khi ni m
Ng i ta cho r ng ngy nay my tnh v i t c r t l n, khng c n quan tm nhi u
t i thu t ton nhanh nh ng v i s ki m ch ng sau y: Bi ton x l v i n i
t ng, c 3 thu t ton v i 3 m c ph c t p khc nhau, sau 1 gi x l s ch u 3 h u
qu khc nhau.
Trong khi
nhi u bi ton c ngha th c t l i thu c l p cc bi ton NPC v r t quan tr ng.
N u m t bi ton l NPC ta t khng tm m t thu t ton th i gian a th c . V v y,
c hai cch ti p c n c th kh c ph c tnh NPC:
- N u d li u u vo th c t l nh th m t thu t ton c th i gian th c hi n hm m c th hon ton tho mn.
- Tm cc gi i php g n t i u trong th i gian a th c.
M t thu t ton tr v cc k t q a g n t i u c g i l m t thu t ton x p x .
Ta c cc khi ni m sau y:
Thu t ton t i u nhanh : L thu t ton tm nghi m t i u, nh ng nhanh ( ph c
t p th i gian l a th c).
Thu t ton t i u ch m : L thu t ton tm nghi m t i u nh ng ch m ( ph c
t p th i gian l hm m).
Thu t
ton
ph c
t p
X l/1 gi
A O(n) 3,6 tri u i
t ngB O(nlog2n) 0,2 tri u i
t ngC O(2n) 21 i t ng
21
c
f g
-
7/31/2019 Ly Thuet Thuat Toan
22/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Thu t ton x p x nhanh (Fasf Approximation Algorithms). L cc thu t ton tm ra
nghi m g n ng c a bi ton v i chnh xc no nh ng nhanh. Thu t ton
nh v y cn c g i l Thu t ton x p x a th c.
V d 10: Bi ton ph nh t i u
Input: Cho th v h ng G = (V, E). Output: Tm ph nh t i u( Ph nh c kch th c c c ti u) .
Bi ton VC tm ra ph nh c kch c c c ti u l NPC. Do kh c th tm ra 1
ph nh t i u nh ng khng qu kh tm ra m t ph nh g n t i u.
Sau y l m t thu t ton x p x cho k t q a l m t ph nh c kch c khng l n
h n 2 l n kch c m t ph nh t i u trong th i gian a th c:
Procedure Approx _VertexCover;
Begin
C:= ; { C - t p ph g n t i u}
E:= T p c nh c a th G;
While E do
Begin
Ch n (u, v) l m t c nh tu c a E;
C:= C {u, v}; {K t n p hai nh u, v vo ph nh C}; G b kh i E m i c nh lin thu c v i u ho c v;
End;
Return(C);
End;
22
-
7/31/2019 Ly Thuet Thuat Toan
23/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010
Hnh 5
K t qu : Ph nh C={b, c, d, e, f, g} g n t i u c kch th c 6.
( Ph nh t i u {b, e, d} c kch th c 3) 1.6.2. Thu t ton - x p x tuy t i
Cho P l bi ton c c i ha:
G i H l th t c Heuristic, thu t ton tm m t nghi m no cho P
K hi u OPT(I) l nghi m t i u c a bi ton P i v i th hi n I.
K hi u H(I) l nghi m g n ng c a P do thu t ton H tm ra.
Cho >0, th t c Heuristic H c g i l thu t ton - x p x tuy t i khi v ch
khi
)()( IHIOPT cho m i th hi n I c a bi ton P (I: instance) v i b d li u.
V d 11: Bi ton l u tr t i a s l ng ch ng trnh (maximum program stored)
Input : - n ch ng trnh v i dung l ng nh ( di) d 1,d2,, dn
- Hai bng nh v i dung l ng ( di) m i bng l L.
Output: Hy ghi cc ch ng trnh ln 2 bng nh v i s l ng t i a, m i ch ng
trnh ch c ghi trn m t bng nh .
23
a f
a f
b
a) th G b) Ch n c nh (b, c), g b (b,a),(c,e),(c,d)
c) Chn tip (e,f), g b (e,d),(d,f)
-
7/31/2019 Ly Thuet Thuat Toan
24/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Bi ton ny c ch ng minh l NP - y . V v y vic tm thu t ton a th c
cho n l t hi v ng.
Ng i ta dng gi i php tm thu t ton x p x nhanh cho php tm c nghi m
g n ng c a n nh ng ch m t th i gian a th c.
Sau y l thu t ton 1- x p x tuy t i: Cho k t qu nghi m t i u v nghi m g n ng ch chnh nhau c 1.
Thu t ton 1- x p x tuy t i:
Procedure XXTD1;
Begin
1. S p x p cc ch ng trnh theo th t tng d n c a d 1,d2,, dn;
2. i:=1;
For j:=1 to 2 do
Begin
dodai:=0;
While (dodai+di L) and (i n) do
Begin
;
dodai:= dodai+di;i:=i+1;
End;
End;
End;
Ch : M c ch mu n ch trn 2 bng nh c di L m l u tr c t i a cc
ch ng trnh. Theo suy ngh thng th ng th hy u tin cc ch ng trnh c di
ng n h n, v v y u tin l s p x p cc ch ng trnh theo th t tng d n cc di c a chng. Ti p theo l n l t x p theo th t ny ln t ng bng nh m t. Do 2
bng nh c di nh nhau nn dng bng no tr c cng c . Theo thu t ton
trn th dng bng 1 tr c. Bi n dodai ghi l i t ng di bng nh dng l u
cc ch ng trnh.
Bi ton ny cn c g i l bi ton c t n o n s t t 2 thanh s t c cng di L
sao cho s l ng o n s t c t ra l nhi u nh t (Ch t s t - Cutting problem).
Ch ng minh |OPT(I) - H(I)| 1
24
-
7/31/2019 Ly Thuet Thuat Toan
25/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - t k = H(I) l nghi m c a thu t ton Heurtstic k l s l ng ch ng trnh c
l u tr trn 2 bng nh theo cch s p t c a thu t ton x p x trn.
- G i p l s l ng ch ng trnh c ghi trn 1 bng nh c di b ng 2 bng ni
trn
Nh v y k OPT(I) p v =
p
iid
12L (1)
Ta ch ng minh 1)()( IHIOPT OPT(I) k )(1 IOPT k+1 (2)
Theo (1) th ch c n ch ng minh p k+1 l v khi pIOPT )( k+1.
Ch ng minh b ng ph n ch ng:
Gi s p>k+1 p k+2 =
+
=
p
ii
k
ii dd
1
2
12L (3).
G i m l s l ng ch ng trnh c ghi trn m t bng theo thu t ton x p x trn.
Khi : LddLdd km
iim
m
ii >+>+ +
=+
= 1
11
1 (4)
T ng t trn bng nh 2 : LddLdd kk
miik
k
mii >+>+ +
+=+
+= 2
11
1(5)
T(4),(5) ta c : Ldk
i
i 22
1
>+
=
mu thu n v i (3) 1+ kp (pcm).
ph c t p th i gian c a thu t ton:
Th i gian x l c a thu t ton x p x trn l O(nlog 2n) (ch y u l ph n s p
x p cc ch ng trnh theo th t c a di). Trong khi thu t ton chnh xc ph i
c n c th i gian hm m, m hi u qu l 2 nghi m ch chnh nhau c 1. N u nh ng
bi ton c gi i t t nh v d trn th dng gi i php - x p x tuy t i. Nh ng
khng ph i khi no cng sun s nh v y v cc thu t ton - x p x tuy t i tm
c khng nhi u. Hi n nay ph n l n cc bi ton NP- y th vi c tm thu t ton - x p x
tuy t i cho chng cng l i l NP- y . Ch ng h n nh bi ton x p bal
(KNAPSACK), bi ton ng i bn hng (Traverling Salesman Problem), bi ton
MaxCliqueChnh v l ng i ta d n ra khi ni m y u h n g i l Thu t ton -
x p x .
1.6.3.Thu t ton - x p x
Cho P l bi ton c c i ha.
G i H l th t c Heuristic, thu t ton x p x tm m t nghi m no cho P.
25
-
7/31/2019 Ly Thuet Thuat Toan
26/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 K hi u OPT(I) l nghi m t i u c a bi ton P i v i th hi n I (Instance).
H(I) l nghi m g n ng c a P do H tm ra.
Th t c Heuristic H c g i l thu t ton - x p x khi v ch khi:
)(
)()(IOPT
IHIOPTcho I.
V d 12: Bi ton x p bal gi tr nguyn (Interger - Valued Knapsack)
Input: M t ba l c th tch B, n v t c th tch: a 1, a2,an ,
gi tr t ng ng c a cc v t l: p 1, p2,pn
S l ng m i lo i v t l khng h n ch , x i nguyn l s l ng lo i
v t i.
Ouput: Tm nhm v t tho mn
=
n
i ii
Bxa1 v =
n
i ii
xp1 t max
?.
Tm t t: in
iipx
=1Max v i iiii
n
ii bxZxBax
=0,,
1. y
i
iw
Bb , i u ny
l hi n nhin v
iw
Bchnh l s nguyn v t c cng th tch a i c th nht
c vo ba l.
Tr ng h p b i=1 i th v n trn g i l bi ton x p bal 0-1, t c l ch c x p nhi u nh t l 1 v t vo bal (0-1 Knapsack)
Bi ton ny c ch ng minh l NP- y . V v y vi c tm thu t ton a th c
cho n l r t t hi v ng. Ng i ta th tm thu t ton x p x tuy t i (nhanh) cho
n nh ng cng khng thnh cng v vi c tm m t thu t ton nh v y cng l i l NP-
kh.
Sau y l thu t ton 1/2 - x p x cho bi ton x p bal tr nguyn:
Procedure XAPXI12;
Begin
1) s p x p t s p i/ai , i=1,2,..,n theo th t gi m d n;
2) T:=0;
for i:=1 to n do
begin
xi:=[(B-T)/ai];T:=T+xiai;
26
-
7/31/2019 Ly Thuet Thuat Toan
27/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 End;
End.
Ch ng minh:
- V i m i th hi n I ta c 1
1.)(
a
BpIOPT v )(.
1
1 IH
a
Bp
M t khc2
. 11
Ba
a
BB
-
7/31/2019 Ly Thuet Thuat Toan
28/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 CH NG 2
CC THU T TON S P X P
2.1. Bi ton s p x p
2.1.1. T m quan tr ng c a bi ton s p x p
S p x p m t danh sch cc i t ng theo m t th t no l m t bi ton th ng
c v n d ng trong cc ng d ng tin h c, v l m t yu c u khng th thi u trong
khi thi t k cc ph n m m.
2.1.2. S p x p trong v s p x p ngoi
- S p x p trong l s s p x p d li u c t ch c trong b nh trong c a my tnh,
ta c th s d ng kh nng truy nh p ng u nhin c a b nh v do v y s
th c hi n r t nhanh.
- S p x p ngoi : S d ng khi l ng d li u c n s p x p l n khng th l u tr
trong b nh trong m ph i l u tr trong cc t p tin trn b nh ngoi Ch c th
truy nh p tu n t , c t ng ph n t m t vo b nh trong.
2.1.3. T ch c d li u v ngn ng ci t
- Cc i t ng c n c s p x p l cc b n ghi g m m t hay nhi u tr ng, m t
trong cc c g i l tr ng kha(Key), ki u cu n l m t ki u c th t no .
V d :s nguyn, s th c - Danh sch cc i t ng c n s p x p s l m t m ng c a cc b n ghi ni trn.
M c ch c a vi c s p x p l t ch c l i cc b n ghi sao cho cc kha c a chng
c s p th t t ng ng v i quy lu t s p x p.
- trnh by ta s d ng kha i bo sau:
const N=100;
type
Keytype=Integer;
Othertype=real;
Recordtype=Record
Key:Keytype;
OtherField: Othertype;
End;
Var a:array[1..N] ofRecordtype;Procedure SWAP(var x,y:Recordtype);
28
-
7/31/2019 Ly Thuet Thuat Toan
29/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010
Var Temp: Recordtype;
Begin
Temp:=x; x:=y; y:=Temp;
End;- Ta th y th t c SWAP l y O(1) th i gian v ch th c hi n 3 l nh gn n i ti p nhau .
- Dy ch ph i th a mn a 1 .key a2 .key an .key ho c ng c l i.
2.1.4. Thu t ton s p x p
- Thu t ton s p x p g i l n nh n u n khng o l n tr t t ban u c a cc
kha cng gi tr : n u a i=aj , i
-
7/31/2019 Ly Thuet Thuat Toan
30/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 B c 6: 2 2 3 5 6 9 | 12 10 9 10
B c 7: 2 2 3 5 6 9 9 | 10 12 10
B c 8: 2 2 3 5 6 9 9 10 | 12 10
K t qu : B c 9: 2 2 3 5 6 9 9 10 10 | 12
b)Ch ng trnh:Procedure SelectionSort;
Var i,j,k:Integer; min:Real;
Begin
1.for i:=1 to n-1 do
Begin
2. k:=i ; min:=a[i];
3. for j:=i+1 to n do
4. If a[j]
-
7/31/2019 Ly Thuet Thuat Toan
31/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - B c i: Chn ph n t a[i+1] vo danh sch c th t a[1], a[2],..,a[i] sao cho
a[1],a[2],..,a[i+1] l m t danh sch c th t .
Ph n t ang xt a[j] s c chn vo v tr thch h p trong danh sch cc ph n t
c s p tr c a[1], a[2],a[j-1] b ng cch so snh a[j] v i a[j-1] ng ngay
tr c n. N u a[j] < a[j-1] th i ch a[j] v i a[j-1] v ti p t c so snh a[j-1] v i a[j- 2]
L p cho n khi h t dy i=n. M ng c s p x p xong.
*V d :
Ban u: 5 6 2 2 10 12 9 10 9 3
B c 1 : 5 6
B c 2: 2 5 6
B c 3: 2 2 5 6
B c 4: 2 2 5 6 10
B c 5: 2 2 5 6 10 12
B c 6: 2 2 5 6 9 10 12
B c 7: 2 2 5 6 9 10 10 12
B c 8: 2 2 5 6 9 9 10 10 12
B c 9: 2 2 3 5 6 9 9 10 10 12 (K t qu )
b)Ch ng trnh:
Procedure InsertionSort;
Var i,j:Integer;
Begin
1.For i:=2 to n do
Begin
2. j:=i;3.While (j>1) and (a[j]
-
7/31/2019 Ly Thuet Thuat Toan
32/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - Vng l p (3) ch y nhi u nh t i-1 l n, m i l n t n O(1) (3) l y i-1
th i gian.
- L nh (2), (3) n i ti p nhau, l nh (2) l y O(1) C 2 l nh l y i-1
- Vng l p (1) c i ch y t 2 n n u g i T(n) l th i gian s p n
ph n t ( ) ( )( ) ( )2
2 21
1 nOnn
inTn
i
== =
2.2.3. S p x p n i b t(Bubble Sort)
a) Gi i thu t: Coi cc b n ghi c l u trong m t m ng d c. Qua qu trnh s p, b n
ghi no c kha nh h n s n i ln trn. Duy t ton m ng, t d i ln trn. N u 2
ph n t c nh nhau m khng ng th t t c l ph n t nh h n d i th ph i
cho n n i ln b ng cch i ch 2 ph n t ny cho nhau. C th :
+ B c 1: Xt cc ph n t t a[n] n a[2], v i m i ph n t a[j] so snh kha c a n
v i kha c a ph n t a[j-1] ng ngay tr c n. N u kha c a a[j] nh h n kha
c a a[j-1] th i ch c a a[j] v a[j-1].
+ B c 2: Xt cc ph n t t a[n] n a[3], lm t ng t
+ B c i: Xt cc ph n t t a[n] n a[i+1]
Sau n b c ta c m ng s p th t .
b)V d :Ban u B c 1 B c 2 B c 3 B c 4
5 2 2 2 2
6 5 2 2 2
2 6 5 3 3
2 2 6 5 5
10 3 3 6 6
12 10 9 9 9
9 12 10 9 9
10 9 12 10 10
9 10 9 12 10
3 9 10 10 12
c)Ch ng trnh:
Procedure BubbleSort;Var i,j: Integer;
Begin32
-
7/31/2019 Ly Thuet Thuat Toan
33/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 {1} For i:=1 to n-1 do
{2} For j:= n downto i+1 do
{3} ifa[j] ch t sang ph i ch t, cc
thnh ph n c kha ch t sang tri ch t K t qu c a phn ho ch, ch t ng v
tr k v m i thnh ph n c a m ng con bn tri ch t A[1..k-1] c kha ch t, m i
thnh ph n c a m ng con bn ph i ch t A[k+1..n] c kha > ch t.
- S p x p c l p 2 m ng con A[1,..k-1], A[k+1,..,n] b ng cch g i quy thu t
ton trn.
2.3.2. Thi t k gi i thu t
Procedure Quicksort( i,j:Integer);
Var k:Integer;
BeginIfi
-
7/31/2019 Ly Thuet Thuat Toan
34/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - V n ch n ch t: N u ch n c ph n t lm ch t sao cho k t qu phn hoach
nh n c 2 m ng con cn b ng l t t nh ng s tiu t n nhi u th i gian khng c n
thi t Th ng ch n ph n t u tin c a m ng lm ch t, t c l l y p=A[1] lm
ch t.
- V n phn ho ch: S d ng 2 bi n :+ Bi n L ch y t tri sang ph i b t u t i.
+ Bi n R ch y t ph i sang tri b t u t j+1.
Bi n L c tng cho t i khi A[L] > p, cn bi n R c gi m cho t i khi A[R] p.
N u LR.
Cu i cng i ch A[i] v A[R] t ch t vo ng v tr.
Procedure PARTITION ( i,j:Integer; var R:Real);
Var L:Integer;
P: ki u ph n t m ng;
Begin
P:=A[i]; L:=i; R:=j+1;
Repeat L:=L+1 until (A[L] > p) or (L > j);
RepeatR:=R-1
untilA[R]
p;
While L p;
Repeat R:=R-1 until A[R] p;
End;
SWAP(A[i],A[R]);End;
V d : Phn ho ch m ng cc s nguyn A[1..8] nh sau:
1 2 3 4 5 6 7 8
10 15 4 11 6 3 5 14
L y ch t p=A[1]=10, L=1, R=9
Tng L:=L+1 , gi m R:=R-1 cho t i khi A[L] >10 v A[R] 10 Ta c L=2 v R=7. V L
-
7/31/2019 Ly Thuet Thuat Toan
35/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010
10 5 4 11 6 3 15 14
L R
Ti p t c tng L v gi m R cho t i khi A[L] >10 v A[R] 10.
Ta c L=4 v R=6. V L 10 v A[R] 10
Ta c L=6 v R=5 . V L>R, i ch A[1] v A[5] t ch t p=A[1] vo v tr R=5 , ta c:
1 2 3 4 5 6 7 8
6 5 4 3 10 11 15 14
R L
Nh v y m ng A[1..8] c phn ho ch thnh 2 m ng con A[1..R-1] v A[R+1..8] t c A[1..4] v A[6..8]. Sau ti p t c QUICKSORT 2 m ng con trn ta s c
m ng s p x p.
2.3.3. nh gi ph c t p
- Th i gian th c hi n th t c Partition l th i gian i qua m ng(hai bi n L,R ch y t
2 u cho t i khi chng g p nhau) v so snh kha c a m i thnh ph n m ng v i
kha c a ch t. Do phn ho ch m ng n ph n t ta c n th i gian O(n)=P(n)
- G i T(n) l th i gian th c hi n Quicksort th T(n) ph i l t ng c a P(n) v th i gian
qui Quicksort cho 2 m ng, cn trong tr ng h p x u nh t l ch n ph i ph n t
c kha l n nh t lm ch t Vi c phn ho ch b l ch, t c l m ng bn ph i ch g m
m t ph n t ch t, cn m ng bn tri g m n-1 ph n t cn l i. Khi ta c th thnh
l p ph ng trnh qui :
1 n u n=1 1 n u n=1
T(n)= T(n)=
O(n)+T(n-1) +T(1) n u n>1 T(n-1)+T(1)+n n u n>1
Gi i ph ng trnh qui ny b ng ph ng php truy h i: 35
-
7/31/2019 Ly Thuet Thuat Toan
36/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Ta c: ( ) ( ) ( ) ( ) ( )1111 ++=++= nnTnTnTnT
( ) ( )[ ]( ) ( )( ) ( ) ( )[ ] ( )( ) ( ) ( )
( ) ( ) ( ) ( )
( ) +
+=
+=
++++++++=
++++=+++++=
+++=++++=
1
2
1...32........
1131213
121112
n
inj
jinT
nninininT
nnnnT
nnnTnT
nnnT
nnTnT
Qu trnh trn k t thc khi i=n-1, khi ta c:
( ) ( )( )( ) ( )2
21
3 2
23
2
4111 nO
nnnnjTnT
n
j
=+
=+
+=+= +
=
Tr ng h p t t nh t khi ch n ch t sao cho 2 m ng con c kch th c cn b ng. Ph ng trnh quy: 1 n u n=1
T(n)=
2T(n/2) + n n u n>1
Gi i ph ng trnh quy trn ta c T(n) = O(nlogn).
Nh v y trong tr ng h p trung bnh T(n)=O(nlogn) Kh h n cc gi i thu t tr c.
2.4. S p x p ki u vun ng (Heapsort)
2.4.1. nh ngha HEAP
HEAP l m t cy nhi phn y tri m m i nt c gn m t gi tr kha sao cho
gi tr kha nt cha bao gi cng nh h n ho c b ng gi tr kha 2 nt con. Do
trong HEAP ta c :
- Nt g c c kha b nh t
- Dy kha nh n c khi i theo m t ng b t k l dy c th t tng d n
Ng i ta cn g i HEAP l cy nh phn c th t b ph n, HEAP - ti ng Anh c ngha l ng. C th minh h a HEAP b ng hnh nh vun ng m t ng t
ch ng h n, nh ng c c nh nh s n m trn, nh ng c c n ng h n s d i.
V d : M t HEAP
36
1
1
5 1 5
-
7/31/2019 Ly Thuet Thuat Toan
37/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010
C u trc m ng thch h p bi u di n cy nh phn ki u HEAP v HEAP l cy nh
phn y tri. Khi ta ni m ng th a mn i u ki n HEAP n u m ng bi u di n
cy nh phn l HEAP.
V d : M ng bi u di n cy trn 10 15 12 54 17 91
- Nh v y v i ng: n u j ch vo v tr c a nt con th [j/2] ch vo v tr c a nt
cha, hay con c a nt i l cc nt th 2i ( con tri) v 2i+1( con ph i).
- Nt ng v i ch s [n/2] tr xu ng m i c th l cha c a cc nt khc.
V d : n=10 cc nt 5, 4, 3, 2, 1 m i c th l cha.
2.4.2. S p x p ki u vun ng c chia thnh 2 giai o n:
Giai o n 1 : T o ng
T cy nh phn cho ta bi n i n tr thnh m t ng.
Giai o n 2 : S p x p.
Nhi u l t x l c th c hi n, m i l t ng v i hai php:
- a kha nh nh t v v tr th c c a n b ng cch i ch A[1] v A[n].
- Vun l i thnh ng i v i cy g m cc kha cn l i (sau khi lo i kha nh
nh t ra ngoi)
*V d : V i dy kha 42 23 74 11 65 58 94 36 99 87
th c u trc ban u l cy c d ng:
T o ng
37
4
2
8
1
9
6 5
7
9
3
1
2 5
3 6 7 9
4 9 8
-
7/31/2019 Ly Thuet Thuat Toan
38/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010
i ch v ,sau nt ng v i v tr cu i cng b lo i kh i cy.
Vun ng m i v i
cc nt cn l i
Dy c s p S=(11)
i ch v i
S = (23, 11)
..
Thi t k gi i thu t:
V n c n gi i quy t tr c h t l: Bi n i m ng ban u A[1..n] thnh
m ng bi u di n cy th t b ph n(vun ng) nh th no. Ta c nh n xt r ng:
v i i>n div 2 th i u ki n ng xem nh th a mn v 2i v 2i+1 >n. Nh v y n u ta ch xt i ch y t n div 2 gi m xu ng 1, y A[i] xu ng v tr thch h p trong m ng
A[1..n] th cu i cng s nh n c A[1..n] th a mn i u ki n vun ng.
Xy d ng th t c Pushdown(a,b) th c hi n vi c y A[a] xu ng v tr thch h p
trong m ng A[a..b] th a mn i u ki n ng v i i a.
+Th t c Pushdown : Cc ph n t thu c n a sau c a m ng khng c con khng
ph m i u ki n HEAP Ch c n xt t gi a m ng tr v tr c.
Procedure PUSHDOWN(a,b:Integer);
Var i.j: integer; {l u v tr c a nt cha, con}
38
1 8
2 9
8
2 5
3 6 7 9
4 9 1
2
53
4 6 7 9
89
9
3 5
4 6 7 9
8 2
-
7/31/2019 Ly Thuet Thuat Toan
39/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 OK: Boolean; {nh d u nh ng nt th a mn i u ki n HEAP }
Begin
i:=a; OK:=False;
1.While (i b div 2) and not OK do
{ ch xt cc nt c con v ch a th a mn i u ki n ng} Begin
2. Ifi=b div 2 thenj:=2*i { ch c con tri}
elseifA[2*i]
-
7/31/2019 Ly Thuet Thuat Toan
40/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 + Thn c a vng l p (1) l cc l nh (2) v (3), m i l nh c n O(1) Thn (1) c n
O(1).
+ Sau m i l n l p, bi n i tng t nh t 2 l n, gi tr ban u c a i l a g i k l s
l n l p
ab
kba
k
log2. th i gian th c hi n Pushdown(a,b) l O(log(b/a)) - Th i gian th c hi n Heapsort
+ Vng (1) l p2n
l n, m i l n g i Pushdown c n nhi u nh t l O(logn) th i
gian th c hi n (1) l O(nlogn);
+ Vng (2) l p n-1 l n, m i l n l p c n th c hi n Swap v g i Pushdown C n
nhi u nh t O(logn) Th i gian th c hi n (2) nhi u nh t O(nlogn) Th i gian th c
hi n Heapsort l t ng hai vng l p For O(nlogn).
2.5. S p x p ha nh p ( Merge Sort)
2.5.1. t ng: Xu t pht t ch cc ph ng php s p x p xt th ng c lm
v i cc file d li u khng l n. V i cc file l n ng i ta th ng phn ra thnh cc file
nh h n s d ng cc thu t ton trn. Nh v y k t qu s c nhi u ph n t c
s p x p theo cng m t th t . Thu t ton Merge s ha nh p cc file ny thnh m t
file c di nh file ban u, b ng cch ti n hnh t ng 2 file m t, k t qu ha ti p
v i file th 3 v ti p t c nh v y n h t.
Gi s c 2 dy X={x 1,x2,..,xt} s p x p tng
dy Y={y1,y2,..,ys} s p x p tng
Th c hi n ha nh p X v Y sao cho v n th a mn i u ki n (tng d n)
- So snh gi a 2 kha nh nh t c a 2 dy X v Y, ch n kha nh h n a vo dy
m i Z, ng th i lo i b n kh i dy ban u.
- Qu trnh so snh l p l i cho n khi 1 trong 2 dy X v Y c n. Ph n cn l i c a dy kia x p n t vo ph n sau c a dy Z.
*V d : X={15, 20, 50, 76}
Y={8, 17, 92}
+B c 1: Z={8} , X={15, 20, 50, 76}
Y={ 17, 92}
+B c 2: Z={8,15}, X={ 20, 50, 76}
Y={ 17, 92}
+B c 3: Z={8,15,17} , X={20, 50, 76}
40
-
7/31/2019 Ly Thuet Thuat Toan
41/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Y={92}
+B c 4: Z={8,15,17,20}, X={50, 76}
Y={92}
+B c 5: Z={8,15,17,20,50} , X={76}
Y={92}+B c 6: Z={8,15,17,20,50,76}.
2.5.2. Thi t k gi i thu t
a) Th t c MERGE ha nh p 2 dy kha s p x p X={x 1,x2,,xm}, Y={y1,y2,
,yn}, Z l dy k t qu c di khng l n h n n+m.
Procedure MERGE (X,Y,Z,m,n);
Var i,j,k : integer;
Begin
i:=1 ; j:=1 ; k:=1 ;
While (i
-
7/31/2019 Ly Thuet Thuat Toan
42/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Begin { h t dy Y,n i ph n cn l i c a dy X vo Z}
Z[k]:=X[i];
For q:=1 to m-i do Z[k+q]:=X[j+q];
End;
End;b) Th t c MERGESORT:
A l dy kha, B l dy ch a k t qu s p x p, p, q t ng ng l hai ch s u
v cu i c a dy A.
Procedure MERGESORT (A,B,p,q);
Var t : integer;
Begin
Ifp
-
7/31/2019 Ly Thuet Thuat Toan
43/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010
2.5.3. nh gi ph c t p: O(nlogn) ( nh gi ph n tr c ).
2.6. C u trc d li u v gi i thu t x l ngoi
2.6.1. M hnh x l ngoi
Khi s l ng d li u v t qu kh nng l u tr c a b nh trong (x l
phi u i u tra dn s ton qu c, qu n l t ai..), ta ph i dng b nh ngoi l u
tr v x l. Cc thi t b l u tr ngoi nh bng t , a t u c kh nng l u tr
l n nh ng c i m truy nh p hon ton khc b nh trong. Do , ph i tm
CTDL> thch h p cho vi c x l d li u l u tr trn b nh ngoi.
- Ki u d li u t p tin l ki u thch h p nh t cho vi c bi u di n d li u c l u
trn b nh ngoi. H i u hnh chia b nh ngoi thnh cc kh i (block) c kch
th c b ng nhau (t 512 bytes n 4096 bytes).
- Trong qu trnh x l vi c chuy n giao d li u gi a b nh trong v b nh ngoi
c ti n hnh thng qua vng nh m (buffer). B m l m t vng dnh ring
cho b nh trong c kch th c b ng kch th c m t kh i c a b nh ngoi.
- C th xem 1 t p tin bao g m nhi u m u tin c l u trong cc kh i. M i kh i l u
m t s nguyn v n cc m u tin.
- Trong thao tc c, nguyn m t kh i c a t p tin c chuy n vo trong b m,
l n l t c cc m u tin c trong b m cho t i khi b m r ng th l i chuy n
m t kh i t b nh ngoi vo b m.
- ghi thng tin ra b nh ngoi, cc m u tin c x p vo b m cho n khi y b m th m t kh i c chuy n ra b nh ngoi, khi b m r ng th x p
ti p cc m u tin vo.
n v giao ti p gi a b nh trong v b m l m u tin, cn gi a b m v b
nh ngoi l kh i.
ghi(kh i)
43
Bnh
tron
B m
Ghi(m u tin)
c(m i l n 1 m u tin)
Ghi(kh i) Bnh
n oi c(m i l n 1 kh i)
-
7/31/2019 Ly Thuet Thuat Toan
44/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Hnh: M hnh giao ti p gi a b nh trong, b nh ngoi v vng nh m
2.6.2. nh gi cc gi i thu t x l ngoi
- i v i b nh ngoi, th i gian tm m t kh i c vo b nh trong l r t l n
so v i th i gian thao tc trn d li u trong kh i .
V d : Gi s m t kh i l u 1000 s nguyn c l u trn a quay v i v n t c 1000 v/pht th th i gian a u t vo rnh ch a kh i v quay a a kh i
n ch u t h t kho ng 100 miligiy. V i th i gian ny my c th th c hi n
100000 l nh, s p x p cc s nguyn ny theo gi i thu t Quicksort Khi nh
gi cc gi i thu t thao tc trn b nh ngoi, ta t p trung vo vi c xt s l n c
kh i vo b nh trong v s l n ghi kh i ra b nh ngoi g i l php truy xu t kh i
(block access). V kch th c cc kh i l c nh nn ta khng th tm cch tng kch
th c m t kh i m ph i tm cch gi m s l n truy xu t kh i.
2.6.3. S p xp ngoi - MergeSorting
S p x p d li u c t ch c nh m t t p tin ho c t ng qut h n, s p x p d
li u c l u trn b nh ngoi g i l s p x p ngoi.
a)Khi ni m ng
- ng di k l m t t p h p k m u tin c s p th t theo kha t c l n u cc
m u tin r
1, r2,.., rk l n l t c kha l k
1, k2,.., kk t o thnh m t ng th
kkkk ...21 .
- Cho t p tin ch a cc m u tin r 1, r2,.., rn, ta ni t p tin c t ch c thnh ng c
di k n u ta chia t p tin thnh cc o n k m u tin lin ti p v m i o n l m t
ng, o n cu i c th khng k m u tin, ta g i o n ny l ui (tail).
*V d : T p tin g m 14 m u tin c kha l cc s nguyn c t ch c thnh 4
ng di 3 v 1 ui di 2 :
b)Gi i thu t
s p t p tin F c n m u tin ta s d ng 4 t p tin F 1, F2, G1, G2.
- Phn ph i cc m u tin c a t p tin cho F lun phin vo 2 t p tin F 1, F2. Nh v y
2 t p tin ny c xem nh t ch c thnh ng di 1.
+ B c 1 : c 2 ng, m i ng c di 1 t 2 t p tin F 1,F2 v tr n 2 ng
nay thnh m t ng c di 2 v ghi lun phin vo 2 t p tin G 1, G2. i vai tr F 1
cho G1, F2 cho G2.
5 6 9 13 26 17 1 5 8 12 14 27 23 25
44
-
7/31/2019 Ly Thuet Thuat Toan
45/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 + B c 2 : c 2 ng, m i ng c di 2 t 2 t p tin F 1, F2 v tr n hai ng
ny thnh m t ng c di 4 v ghi lun phin vo 2 t p tin G 1, G2 . i vai tr
c a F 1 cho G1, F2 cho G2.
Qu trnh trn ti p t c v sau i b c th di m t ng l 2 i. N u 2 i n th
gi i thu t k t thc, lc t p tin G 2 r ng v G 1 ch a cc m u tin c s p. c) ph c t p tnh ton
Gi i thu t k t thc sau i b c v i i logn. M i b c ph i c t 2 t p tin v ghi
vo 2 t p tin, m i t p tin c trung bnh n/2 m u tin. Gi s m i kh i l u c b
m u tin th m i b c c n c v ghi (2*2*n)/(2*b) = 2n/b kh i, m c n logn b c
C n nb
nlog
2php truy nh p kh i ( block access).
V d : Cho t p tin F c 23 m u tin v i kha l cc s nguyn
F : 28, 31, 3, 5, 93, 27, 15, 10, 40, 65, 9, 30, 39, 13, 90, 8, 10, 77, 8, 20, 69, 23
Phn ph i cc m u tin c a F lun phin vo 2 t p tin F 1, F2 t ch c thnh cc ng
d di 1 :
+B c 1 : Tr n cc ng c di 1 c a F 1, F2, c cc ng c di 2, ghi
lun phin vo 2 t p G 1, G2
+B c 2 : i vai tr G 1cho F1, G2 cho F2. Tr n cc ng di 2 trong F 1, F2 c
cc ng di 4 ghi lun phin vo G 1, G2.
28 3 93 15 40 9 39 90 10 8 22 23 F1
31 5 27 10 65 30 13 8 77 20 69 F2
G1 28 31 27 93 40 65 13 39 10 77 22 69 F1
G2 3 5 10 15 9 30 8 90 8 20 23 F2
45
-
7/31/2019 Ly Thuet Thuat Toan
46/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 G1
G2
+B c 3 :
G1
G2
+B c 4 :
G1
G2
+B c 5 :
3 5 8 8 9 10 13 15 20 22 23 27 28 30 31 39 40 65
Procedure MERGE (K : integer; f1,f2,g1,g2 : file of Recordtype);
{Tr n cac ng c di k trong F 1,F2 thnh cc ng c di 2k v ghi lun
phin vo 2 t p G 1,G2}
Var
Ghit p: Boolean; {n u Ghit p=True th ghi vo G 1, ng c l i ghi vo G 2}
Ghim u : Integer; {m u tin hi n hnh no trong 2 t p F 1,F2 s c ghi ra G 1
ho c G 2}
Used: array[1..2] of Integer;{ghi s m u tin c c trong ng hi n t i
c a F j}
Fin: array[1..2] of Boolean; {Fin(j)=True n u c h t cc m u tin trong ng
hi n hnh c a F j ho c n cu i F j }
Current: array[1..2] of Recordtype; {Current(j) l u m u tin hi n hnh c a t p F[j]}
3 5 28 31 9 30 40 65 8 10 20 77 F1
10 15 27 93 8 13 39 40 22 23 69 F2
3 5 10 15 27 28 31 93 8 10 20 22 23 69 77 F1
8 9 13 30 39 40 65 90 F2
3 5 8 9 10 13 15 27 28 30 31 39 40 65 90 93 F1
8 10 20 22 23 69 77 F2
46
-
7/31/2019 Ly Thuet Thuat Toan
47/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Procedure GetRecord(i:Integer);
{N u c h t cc m u tin trong ng hi n hnh c a f i ho c cu i f i th t
Fin[i]=True n u khng th c m t m u tin c a t p f i vo Current[i]}
Begin
Used[i]:=Used[i]+1;If(Used[i]=k+1) or (i =1) and (eof(f1)) or (i=2) and (eof(f2)) then Fin[i]:=True
Elseifi =1 then Read(f1, current[2]);
Else Read(f2, current[2]);
End;
Begin {Kh i t o}
Ghit p:=True; {ghi vo t p F 1}
Reset(f1); Reset(f2);
Rewrite(g1); Rewrite(g1);
While (noteof(f1)) or (noteof(f2)) do
{ B t u c cc m u tin t trong 2 ng hi n hnh c a f 1,f2}
Begin
Used[1]:=0 ; Used[2]:=0;
Fin[1]:=False ; Fin[2]:=False;Getrecord(1); Getrecord(2);
While ( not fin[1]) or (not fin[2]) do
Begin { tr n 2 ng , ch n m u tin s c ghi }
IfFin[1] then Ghim u:=2
Else ifFin[2] then Ghim u:=1
Else ifcurrent[1].Key< current[2].Key then Ghim u:=1
Else Ghim u:=2;IfGhit p then Write(g1,current(Ghim u))
Else Write(g2,current(Ghim u));
Getrecord(Ghim u);
End;
Ghit p:= Not Ghit p;
End;
End;
2.6.4. C i ti n s p x p tr n
47
-
7/31/2019 Ly Thuet Thuat Toan
48/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - Qu trnh s p x p tr n ni trn b t u t cc ng di 1 nn sau logn b c
gi i thu t m i k t thc.
- Ta c th ti t ki m th i gian b ng cch ch n m t s k thch h p sao cho k m u tin
c th ch a trong b nh trong. M i l n c vo b nh trong k m u tin, dng
s p x p trong (Quicksort,...) s p x p k m u tin ny v ghi lun phin vo 2 t p F1,F2 sau ti n hnh s p x p tr n v i cc t p tin c t ch c thnh cc ng
di k.
- Sau i b c th di m i ng l k.2 i . Gi i thu t k t thc khi k.2 i n hay i
log(n/k) S php truy xu t kh i l +
==
1nneu2
n4T(
1nneu
CnnT
)
1)(
Gi i T(n) c T(n) = O(n 2) Ch a c i ti n h n so v i gi i thu t nhn 2 s thng
th ng.
Do : + Vi t (1) thnh d ng
XY = AC10n
+ [(A-B)(D-C) + AC + BD].10n/2
+ BD (3)
52
-
7/31/2019 Ly Thuet Thuat Toan
53/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 (3) ch c n 3 php nhn cc s nguyn n/2 ch s AC, BD v (A-B)(D-C), 6 php
c ng tr v 2 php nhn v i 10 n l y O(n) ph ng trnh quy
>+
==
1nnu
1nnu
Cnn
TnT
)2
(3
1)(
Gi i ph ng trnh quy c T(n) = O(n log3) = O(n1.59) Gi i thu t ny c i thi n
h n r t nhi u.
Function Mult(x,y: integer; n: integer) : integer;
Var m1,m2,m3,A,B,C,D : integer;
d u : integer ; {l u tr d u c a tch xy}
53
-
7/31/2019 Ly Thuet Thuat Toan
54/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010
Begin 1 n u x>0
d u :=sign(x)*sign(y); sign(x) =
-1 n u x
-
7/31/2019 Ly Thuet Thuat Toan
55/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 c u th ...d n n bi ton c s l s p l ch thi u cho 2 c u th , 2 c u th ny s
thi u 1 tr n trong m t ngy.
- T ng h p l ch thi u cho 4 c u th , 8 c u th ,...t l ch thi u c a 2 c u th nh
sau:
Xu t pht t l ch thi u c a 2 c u th l ch thi u cho 4 c u th l m t b ng 4 dng, 3 c t. L ch thi u cho 2 c u th 1 v 2 trong ngy 1 chnh l l ch thi u cho 2
c u th (bi ton c s ) (1,1)=2 ; (2,1)=1, t ng t ta c l ch thi u cho 2
c u th 3 v 4 trong ngy 1 (3,1)=4, (4,1)=3.
Nh n xt : (3,1)= (1,1)+2 v (4,1)= (2,1)+2
hon thnh l ch thi u cho 4 c u th ta l y gc trn bn tri c a b ng l p vo
cho gc d i bn ph i v l y gc d i bn tri l p cho gc trn bn ph i
1 2 3 4 5 6 71 2 3 4 5 6 7 82 1 4 3 6 5 8 73 4 1 2 7 8 5 6
4 3 2 1 8 7 6 55 6 7 8 1 2 3 46 5 6 7 2 1 4 37 8 5 6 3 4 1 28 7 6 5 4 3 2 1
V i k thu t chia tr ni chung s t t h n n u ta chia bi ton c n gi i thnh cc bi ton con c kch th c g n b ng nhau
V d : Mergesort phn chia bi ton thnh 2 bi ton con c cng kch th c n/2 =>
Th i gian th c hi n l O(nlogn). Ng c l i trong tr ng h p x u nh t c a
QuickSort, khi m ng b phn ho ch l nh th th i gian l O(n 2).
Nguyn t c chung l tm cch phn chia bi ton thnh cc bi ton con c kch th c
x p x b ng nhau th hi u qu s cao h n => G i l bi ton con cn b ng (Balancing
Subproblems).
3.2. Quy ho ch ng (Dynamic)
11 22 1
1 2 31 2 3 42 1 4 33 4 1 24 3 2 1
55
c u th
4 c u th
8 c u th
-
7/31/2019 Ly Thuet Thuat Toan
56/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 3.2.1. N i dung
T t ng ch o c a ph ng php quy ho ch ng d a trn nguyn l t i u c a
Bellman : N u m t dy cc l a ch n l t i u th m i dy con c a n cng t i u .
Ta bi t k thu t chia tr th ng d n t i m t gi i thu t quy. Trong cc gi i
thu t , c th c m t s gi i thu t th i gian m. Tuy nhin, th ng ch c m t s a th c cc bi ton con, i u c ngha l ta ph i gi i m t s bi ton con no
trong nhi u l n. Thu t ton nh n c s km hi u qu . V v y, trnh vi c gi i
d th a m t s bi ton con, ta dng k thu t t d i ln (bottom up) t o ra
m t b ng l u t t c cc k t qu c a cc bi ton con v khi c n ch c n tham kh o
t i k t qu c l u trong b ng m khng ph i gi i l i bi ton . L p y
b ng k t qu cc bi ton con theo m t quy lu t no nh n c k t qu c a
bi ton ban u (cng c l u trong m t no c a b ng) c g i l quy
ho ch ng.
Cc thao tc t ng qut c a quy ho ch ng:
- Tm nghi m c a cc bi ton con ( cc tr ng h p ring ) n gi n nh t
- Xy d ng hm quy ho ch ng ( cng th c ho c quy t c xy d ng nghi m
c a bi ton con thng qua nghi m c a cc bi ton con c nh h n)
- L p b ng l u l i cc gi tr c a hm. - Dng b ng l u truy xu t l i gi i t i u ( tm nghi m c a bi ton).
H n ch c a quy ho ch ng:
Ph ng php quy ho ch ng khng hi u qu trong cc tnh hu ng sau:
- S k t h p l i gi i c a cc bi ton con ch a ch c cho ta l i gi i c a cc
bi ton l n h n.
- S l ng cc bi ton con c n gi i quy t v l u tr k t qu c th r t l n,
khng th ch p nh n c. 3.2.2. V d p d ng
a) Bi ton tnh s t h p
Ta bi t cng th c tnh s t h p ch p k c a n l
knC =1 n u k = 0 ho c k = n
knkn
kn CCC 1
11
+= n u 0
-
7/31/2019 Ly Thuet Thuat Toan
57/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Begin
If(k=0) or (k=n) then Tohop:=1
Else Tohop:=Tohop(k-1,n-1)+Tohop(k,n-1);
End;
- ph c t p tnh ton : G i T(n) l th i gian tnh knC , Ta c ph ng trnh quy
C1 n u k=0 ho c k=n
T(n) =
2T(n-1) + C2 n u 0
-
7/31/2019 Ly Thuet Thuat Toan
58/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 i,j: integer;
Begin
C[0,0]:=1;
For i:=1 to n do
BeginC[i,0]:=1; C[i;i]:=1;
For j:= 1 to i-1 do C[i,j]:=C[i-1,j-1]+C[i-1,j];
End;
TOHOP:=Tohop[n,k];
End;
ph c t p: T(n) = O(n 2).
b) Xu con chung
Bi ton: Cho hai xu k t x v y, hy tm xu l t c l xu con chung c a x v y v c
c di l n nh t c th c.
V d : x = ab132sc v y = 1abdc th c = abc
Nh n xt: N u x v y c di nh th c th gi i bi ton b ng cch duy t m i
xu con chung v l u l i xu c di l n nh t. Tuy nhin cch lm ny khng th
p ng v m t th i gian khi x v y c di l n. V v y ta s dng ph ng php
quy ho ch ng gi i quy t bi ton trn nh sau:
G i m v n l n l t l di c a cc xu x v y.
- N u m t trong hai s m = 0 ho c n = 0 th c l xu r ng.
- Xt cc o n u c a 2 xu x v y c di i v j t ng ng (x 1,x 2,..,xi) v
(y1, y2,.., yj) v i 0 njmi 0, . G i L(i,j) l di l n nh t xu con chung
c a hai xu ny. Khi L(m,n) s l di l n nh t c a hai xu x v y.
Ta c cch tnh L(i,j) thng qua L(s,t) v i jtis , theo quy t c sau:+ n u i=0 ho c j=0 th L(i,j)=0.
+ n u i >0 v j >0 v x i yj th L(i,j) = Max{L(i,j-1), L(i-1,j)}
+ n u i >0 v j >0 v x i =yj th L(i,j)=1+L(i-1,j-1).
- L u cc gi tr L(i,j) vo m ng L[0..m, 0..n]. T quy t c trn ta th y n u bi t L[i,j-
1], L[i-1,j], L[i-1,j-1] ta tnh ngay c L[i,j] C th tnh c cc ph n t c a
m ng L[0..m,0..n] t gc trn tri l n l t theo cc ng cho song song.
Procedure Xau_con_chung;
Var x, y, c:String;
58
-
7/31/2019 Ly Thuet Thuat Toan
59/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 I, j: Byte;
L: array[0..250,0..250] of byte;
Begin
For i:= 1 to length(x) do L[0,i]:=0;
For j:= 0 to length(y) do L[j,0]:=0;For i:=1 to length(x) do
For j:=1 to length(y) do
If x[i] = y[j] then L[i,j]:= L[i-1,j-1] + 1
Else If L[i-1,j] > L[i,j-1] then L[i,j]:= L[i-1,j]
Else L[i,j]:= L[i,j-1]
End;
*V n truy xu t k t qu :
T m ng L c lm y, ta xy d ng xu con chung di nh t c di l k =
L[m,n]. Ta xc nh cc thnh ph n c a c = (c 1,c2,..,ck) l n l t t bn ph i. Trong
b ng L xu t pht t L[m,n], t c = , gi s ang L[i,j] :
- N u x i=yj th gn c = xi + c, v i ln L[i-1,j-1].
- N u x i yj th :
+ ho c L[i,j] =L[i,j-1] th i t i L[i,j-1]
+ ho c L[i,j] =L[i-1,j] th i t i L[i-1,j].
Qu trnh c ti p t c khi ta xc nh c t t c cc thnh ph n c a c (ngha l khi
g p L[i,j] no c gi tr 0).
Procedure Truy_vet;
Var i,j: byte;
Begin
C:=; i:=length(x); j:=length(y);While L[i,j]0 do
If x[i] = y[j] then
Begin
C:=x[i]+c; dec(i); dec(j);
End
Else If L[i,j] = L[i-1,j] then dec(j)
Else dec(i);
Return(c);
59
-
7/31/2019 Ly Thuet Thuat Toan
60/92
x
y
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 End;
*V d : Xy d ng b ng L[6,7]
x = abd4eb
y = 1ab4cde
0 1 2 3 4 5 60 0 0 0 0 0 0 01 0 0 0 0 0 0 02 0 1 1 1 1 1 13 0 1 2 2 2 2 24 0 1 2 2 3 3 35 0 1 2 2 3 3 36 0 1 2 3 3 3 37 0 1 2 3 3 4 4
C = a b 4 e
Ch :
- Trn b ng l u, khi truy v t c th c nhi u xu con chung c di l n
nh t.
- S d ng thu t ton trn k t h p v i c u trc d li u ki u con tr ta c th
m r ng bi ton cho tr ng h p tm dy con chung c a hai dy s nguyn c
di ln t i hng ngn n v . 3.3. Ph ng php tham lam (Greedy Method)
3.3.1. Bi ton t i u t h p
C d ng t ng qut:
- f(x) = =
n
i 1
Cixi xc nh trn m t t p h u h n cc ph n t D. Hm f(x) c
g i l hm m c tiu.
- M i ph n t X D c d ng X=(x 1,x2, ..xn) c g i l m t ph ng n. - C n tm m t ph ng n X D sao cho hm f(x) t Min(max). Ph ng n X
nh th g i l ph ng n t i u.
C th tm ph ng n t i u b ng ph ng php vt c n ngha l xt t t c
cc ph ng n trong t p D (h u h n) xc nh ph ng n t t nh t. M c d D l
h u h n nh ng tm m t ph ng n t i u cho m t bi ton kch th c n b ng
ph ng php vt c n ta c th s t n th i gian hm m. V i nhi u bi ton t i u
ho, qu l qu th a khi dng quy ho ch ng xc nh cc ph ng n t i u,
thay v th ta c th dng cc thu t ton n gi n v hi u qu h n. 60
-
7/31/2019 Ly Thuet Thuat Toan
61/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Ph ng php Greedy Method s gi i bi ton t i u t h p m th i gian c th
ch p nh n c, tuy nhin c th ch t c ph ng n t t ch khng ph i l t i
u.
3.3.2. N i dung
Khc v i quy ho ch ng, th ng gi i quy t cc bi ton con t d i ln, m t chi n l c tham lam th ng ti n tri n theo cch t trn xu ng, ph ng n X c
xy d ng b ng cch l a ch n t ng thnh ph n x i c a X cho n khi hon ch nh ( n
thnh ph n). V i m i x i, ta s ch n x i t i u. V i cch ny th c th b c cu i
cng ta khng cn g ch n m ph i ch p nh n m t gi tr cu i cng cn l i.
L c c a ph ng php tham lam:
Procedure Greedy_Method(A,X);
{Xy d ng ph ng n X t t p cc i t ng A}
Begin
X:=;
While A do
Begin
x:= Select(A); {Hm ch n x t t nh t trong A};
A:=A-{x};If X{x} ch p nh n c then X:=X{x};
End;
Return (X); {ph ng n t i u}
End;
Ta c th d dng th y t i sao cc thu t ton nh th c g i l tham lam. T i
m i b c, n ch n mi ng ngon nh t ( c xc nh b i hm ch n), n u th y c
th nu t c (c th a vo nghi m) n s x i ngay, n u khng n s b i, sau
ny khng bao gi xem xt l i.
C n l u r ng, thu t ton tham lam trong m t s bi ton, n u xy d ng c hm
ch n thch h p c th cho nghi m t i u. Trong nhi u bi ton, thu t ton tham lam
ch tm c nghi m g n ng v i nghi m t i u.
3.3.3.Cc v d p d ng:
a)Bi ton i ti n
Input : - C n lo i ti n, m i lo i ti n c gi tr t ng ng l d 1,d2,..,dn.
- L ng ti n M ng.
61
-
7/31/2019 Ly Thuet Thuat Toan
62/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Output : i M ng ra ti n l sao cho s lo i ti n i l t nh t.
*Phn tch : C n ph i tm 1 nghi m X = (x 1,x2,..xm) v i x i l s lo i ti n th i c gi
tr d i sao cho M= im
ii dx
=1
Tm cch i sao cho t ng lo i ti n c n i l t nh t. V y
ta s b t u i t ng xu c gi tr l n nh t v c gi m d n cho n khi s ti n
M c i h t th thng bo l tm c nghi m, ng c l i th thng bo khng
i c.
p d ng t t ng c a thu t ton tham lam , ta c th vi t nh sau:
Function iti n_Thamlam(M);
Const D={d1,d2,..,dn} { m ng l u gi tr t ng lo i ti n}
Var x, sum, i; {x l nghi m bi ton}
Begin
- S p x p D gi m d n
X= ; sum:= ; i:=1;
While (sum M) and (i
-
7/31/2019 Ly Thuet Thuat Toan
63/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 d3=6. C n tm cch i 13 ng sao cho s ti n i l t nh t. V i thu t ton trn ta
c n 2 t 6 ng d 1 ng. Nh v y s ti n ny s khng i c, nh ng trong
th c t , ta c th i c d dng v i 1 t 6 ng, 1 t 4 ng v m t t 3 ng.
- Tuy nhin ta hon ton c th s d ng ph ng php tham lam t nghi m t i u
v i m t s bi ton nh : Thu t ton Kruskal tm cy khung nh nh t, b) Bi ton ng i c a ng i giao hng (TSP - Traveling Salesman Problem)
M t ng i giao hng c n i giao hng t i n thnh ph . Xu t pht t m t thnh ph
no , i qua cc thnh ph khc giao hng v tr v thnh ph ban u. M i
thnh ph ch n m t l n, kho ng cch t 1 thnh ph t i cc thnh ph khc l xc
nh c ( a l, th i gian, c c ph) di. Hy l p m t chu trnh sao cho t ng
di cc c nh l nh nh t.
- V i ph ng php vt c n, ta xt t t c cc chu trnh, m i chu trnh tnh t ng
di cc c nh r i ch n m t chu trnh c t ng di nh nh t, do c n xt t t c l
( )2
!1nchu trnh ph c t p O(n!). V v y, ta c th s d ng ph ng php tham
lam s cho ph ng n t t (khng ph i ph ng n t i u) nh ng ch t n th i gian a
th c nh sau:
*Thu t ton TSP_Greedy: Tnh di c a t t c cc c nh (c t t c n(n-1)/2 c nh).
Xt cc c nh c di t nh n l n a vo chu trnh.
M t c nh s c a vo chu trnh n u c nh tho mn hai i u ki n sau:
- Khng t o thnh m t chu trnh thi u(Khng i qua n nh).
- Khng t o thnh m t nh c c p 3(t c l khng c c nhi u h n hai
c nh xu t pht t m t nh, v m i thnh ph ch c n m t l n).
L p l i b c 3 cho n khi xy d ng c m t chu trnh.
V i ph ng php ny ta ch c n n(n-1)/2 php ch n nn ta c m t gi i thu t c n
O(n2) th i gian.
M t cch ti p c n khc c a k thu t tham lam vo bi ton ny l:
Xu t pht t m t nh b t k, ch n m t c nh c di nh nh t trong t t c cc
c nh i ra t nh n nh k ti p.
T nh k ti p ta l i ch n m t c nh c di nh nh t i ra t nh ny tho mn hai i u ki n ni trn i t i nh k ti p.
63
-
7/31/2019 Ly Thuet Thuat Toan
64/92
Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 L p l i b c 2 cho n khi i t i nh n th quay tr