Giáo trình Lý thuy t thu t toán-B môn Khoa h c máy tính-2010ế
M C L C
N i dungTrang
Ch ng 1: K thu t phânch đánh g thu t toánươ 4
1.1. Khái ni m bài toán đ ph c t p d li u vào 4
1.1.1. Ki ni m bài toán4
1.1.2. Đ ph c t p d li u vào c a bài tn 4
1.2. Các mô hình tính toán 4
1.2.1. Máy Turing 5
1.2.2. Máy x lý thu t toán vi t b ng nn ng t a ALGOL ế 7
1.3. Khái ni m thu t toán đ ph c t p c a thu t toán 7
1.3.1. Thu t toán(Algorithm) 7
1.3.2 Chi phí ph i tr cho m t quá trình tính toán các khái
ni m v đ ph c t p thu t toán 7
1.4. Cách tính đ ph c t p 10
1.4.1. Các quy t c c b n ơ 10
1.4.2. Đ ph c t p c a các ch ng trình đ quy ươ 11
1.5. Thu t toán không đ n đ nh đa th c(Nodeterministic ơ
Polynomial NP) 14
1.5.1. S phân l p các bài toán. 16
1.5.2. Ki ni m “d n v đ c” ( ượ Phép quy d n) 17
1.5.3 L p bài toán NP - khó (NP - hard) NP - đ y đ ( NP
Complate)18
1.6. Thu t toán x p x ( Heuristic) 22
1.6.1. Các khái ni m 22
1.6.2. Thu t toán
ε
- x p x tuy t đ i 24
1.6.3.Thu t toán
ε
- x p x 26
1.7. Ch ng minh tính đúng đ n c a thu t toán 28
1.7.1. Ví d :28
1.7.2. Ph ng pháp th ươ 28
1.7.3. Ki m ch ng tính đúng đ n 29
Ch ng 2:ươ Các thu t toán S p x p ế 31
2.1. Bài toán s p x p ế 31
2.1.1. T m quan tr ng c a bài toán s p x p ế 31
2.1.2. S p x p trong s p x p ngoài ế ế 31
2.1.3. T ch c d li u và ngôn ng cài đ t 31
2.1.4. Thu t toán s p x p ế 32
2.2. Các ph ng pháp s p x p đ n gi nươ ế ơ 32
2.2.1. S p x p ch n (Selection Sort) ế 32
2.2.2. S p x p chèn (InsertionSort) ế 33
2.2.3. S p x p n i b t(Bubble Sort) ế 35
2.3. S p x p nhanh QUICK SORT ế 36
2.3.1. Ý t ngưở 36
2.3.2. Thi t k gi i thu tế ế 36
2.3.3. Đánh giá đ ph c t p 38
2.4. S p x p ki u vun đ ng (Heapsort) ế 39
2.4.1. Đ nh nga HEAP39
2.4.2. S p x p ki u vun đ ng ế 40
1
Giáo trình Lý thuy t thu t toán-B môn Khoa h c máy tính-2010ế
2.4.3. Đ ph c t p tính toán 40
2.5. S p x p hòa nh p ( ế Merge Sort) 43
2.5.1. Ý t ngưở 43
2.5.2. Thi t k gi i thu t ế ế 44
2.5.3. Đánh giá đ ph c t p 46
2.6. C u trúc d li u và gi i thu t x lý ngoài 46
2.6.1. Mô hình x ngoài46
2.6.2. Đánh giá các gi i thu t x lý ngoài 47
2.6.3. S p xêp ngoài - MergeSorting 47
2.6.4. C i ti n s p x p tr n ế ế 51
2.6.5. Tr n nhi u đ ng ườ 52
Ch ng 3: K thu t thi t k thu t toánươ ế ế 54
3.1. Chia đ tr 54
3.1.1. N i dung54
3.1.2. M t s bài toán áp d ng 55
3.2. Quy ho ch đ ng (Dynamic) 58
3.2.1. N i dung 58
3.2.2. Ví d áp d ng 59
3.3. Ph ng pháp tham lam (ươ Greedy Method) 63
3.3.1. Bài toán t i u t h p ư 63
3.3.2. N i dung 64
3.4. Ph ng pháp nnh c n ươ (Branch- and- Bound) 68
3.4.1. N i dung 68
3.4.2. Các bài toán áp d ng69
Ch ng 4: thuy t l p l chươ ế 75
4.1. V n đ l p l ch t i u ư 75
4.1.1. Bài toán 75
4.1.2. Nh n xét 76
4.1.3. Tìnhnh gi i bài toán l p l ch hi n nay 77
4.2. Pn l p bài tn l p l ch d ng tĩnh 78
4.2.1. Tng tin v công vi c 78
4.2.2. Quan h gi a các máy 78
4.2.3. Quan h gi a cácng vi c 79
4.2.4. M t s tiêu chu n t i u ư 80
4.2.5. M t s ví d 80
4.2.6. M t s thu t toán l p l ch 81
4.3. M t s bài tn l p l ch gi i b ng thu t toán l p l ch t i
u nhanhư81
4.3.1. H 1,n Cmax 81
4.3.2. Nm h 1, n Lmax 1, n Tmax 83
4.3.3. H 1,n ri
0 Cmax 85
4.4. Bài toán l p l ch gia công trên 2 máy, thu t toán Johnson 88
4.4.1. Bài toán 2; Fri
0 Cmax 88
4.4.2. Thi t k thu t ế ế toán 88
4.4.3. M t s tr ng h p riêng th d n v i tn 2 máy ườ 91
2
Giáo trình Lý thuy t thu t toán-B môn Khoa h c máy tính-2010ế
Ch ng 1ươ
K THU T PHÂN TÍCH, ĐÁNH GIÁ THU T TOÁN
1.1. Khái ni m bài toán đ ph c t p d li u vào
1.1.1. Ki ni m bài tn
- Tng th ng m t bài toán đ c cho d i d ng sau:ườ ượ ướ
+ Input: Các d li u vào c a bài toán.
+ Output: Các d li u ra tho n yêu c u c a bài toán.
- Gi i bài toán nghĩa xu t phát t d li u vào, th c hi n m t y h u h n
nh ng thao tác c s khoa h c thích h p đ tìm đ c d li u ra (k t qu ) theo ơ ượ ế
u c u c a bài toán.
1.1.2. Đ ph c t p d li u vào c a bài tn
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 vào c a bài toán đ oc
hi u là s l ng d li u vào c a bài tn (kích th c c a bài toán ượ ướ
Quan ni m 2: t ng đ dài c a m i d li u vào đã đ ca theo m t cách ượ
o đó.
d : Cho dãy s nguyên X={x 1,x2,…,xn}. Tìm gtr l n nh t trong dãy?
Bài toán đ c bi u di n nh sau: ượ ư
Input : Choy s nguyên X= {x1,x2,…,xn}, s l ng n. ượ
Output: Tìm s l n nh t Max c a dãy X.
- Theo quan ni m 1 : ch th c c a bài toán là (n+1) ướ
- Theo quan ni m 2 : ch th c c a bài toán ướ
+ S t nhn x i theo mã nh phân đ dài là [log 2xi]+1
VD: xi mã đ dài
3 11 [log23]+1=2
5 101 [log25]+1=3
dài d li u c a bài toán tn là:
=
n
i1
[log2xi] +log2n+n+1
1.2. Các mô nhnh toán
Tng t ng ng i ta xét đ n 2 mô hình tính toán thông d ng:ườ ườ ế
- Mô hình lí thuy t: Máy Turing.ế
3
Giáo trình Lý thuy t thu t toán-B môn Khoa h c máy tính-2010ế
- Mô hình ng d ng: y x thu t toán vi t b ng ngôn ng t a Algol ( c ngôn ế
ng l p trình b c cao).
1.2.1. Máy Turing
a)Câú t o: + B nh : G m m t băng tuy n tính vô h n đ u ph i, chia thành ế
các ô nh , m i ô ch a đ c m t hi u nguyên t . n ô trái (n ượ 0) đ c ghiượ
các hi u c a xâu vào, ph n n l i bên ph i đ c l p đ y b i m t ượ
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 thái, t i m i th i đi m m t
tr ng thái c đ nh.
+ M t đ u đ c/ vi t, cho phép t i m t th i đi m th đ c hay ế
vi t m t ô trên băng. ế
b) Ho t đ ng: Theo th i gian “r i r c”, đ c đi u khi n b i b đi u khi n. ượ
y thu co tr ng thái hi n t ikí hi u đ c đ c trên băng mà nó ti n hành ượ ế
m t b c chuy n g m đ ng th i 3 đ ng tác sau: ướ
1. Đ i tr ng thái trên b đi u khi n
2. Vi t m t kí hi u lên ô đang đ cế
3. Chuy n đ u đ c vi t sang ph i hay ti m t ô theo quy đ nh c a hàm ế
chuy n.
M t cách hình th c, xem máy Turing là m t b T = ( , Q, Γ, δ, q0, B,F)
Trong đó :
Q: T p h u h n các tr ng thái.
Γ : T p h u h n các kí hi u trên băng
B : M t kí hi u đ c bi t thu c Γ g i là kí hi u tr ng.
: T p con c a Γ , không ch a B, đ c g i b ch vào(kí hi u ượ
k t thúc)ế
q0: Tr ng thái đ u
FQ: T p tr ng thái k t thúc. ế
δ: Hàm chuy n tr ng thái
δ : Q x Γ Q x Γ x {L,R}
L, R là các tr ng thái: trái, ph i
4
Giáo trình Lý thuy t thu t toán-B môn Khoa h c máy tính-2010ế
M t hình tr ng c a y Turing m t xâu d ng # γ1q γ2#, trong đó # m t
hi u không thu c Γ , # g i là ký hi u mút ; còn γ1, γ2 ∈Γ*, q Q. Hình tr ng đ u
#q0w # v i w∈∑*
d 1:
Th i đi m t
X Z
C D
p
Th i đi m t+1
Y Z
C1 D1
q (sang ph i)
Hình 1: M t b c ho t đ ng c a máy Turing ướ
T i th i đi m t máy Turing tr ng thái p, đ u đ c /vi t nhòm vào ô nh ế
hi uX. T i th i đi m ti p theo t+1 (m t đ n v th i gian) máy tr ng thái q, ế ơ
hi u X đã thay b ng Y, đ u đ c/vi t chuy n sang trái ho c sang ph i. ế
δ: (p,X)→(q,Y,d) d{L,R}
hay vi t pX→qYd g im t m nh l nh c a máy T, xâut CpXD g im tế
hình tr ng c a máy T.
CpXD→C1qZD1 g i m t b c chuy n hình tr ng, n u q ướ ế F thì xem nh quáư
trình x lý k t thúc hay C ế 1qZD1 là hình tr ng cu i cùng.
- N u ếδ là hàm đ n tr thì T đ c g i là máy t t đ nh(đ n đ nh)ơ ượ ơ
- N u ếδ hàm đa tr thì T đ c g i là máy không t t đ nh(không đ n đ nh) ượ ơ
- Đ n v nh : Là ô nh ch a m t kí hi u, n u dùng mã nh phân thì đ n v nh ơ ế ơ
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 hình tr ng).
Nh n xét: Máy Turing có c u t o c c kì đ n gi n nh ng l i m đ c m i vi c ơ ư ượ
liên quan t i tính toán các phép tính. T mô hình này có th đ nh nghĩa ra phép c ng
(mã a d ng nh phân) b ng cách d ch chuy n đ u đ c 0, 1 t đó đ nh nghĩa ra
các phép tính khác.
5