BỘ GIAO THÔNG VẬN TẢI TRƯỜNG ĐẠI HỌC HÀNG HẢI N H HỌC T NH H C NG NGHỆ TH NG TIN
ÀI GIẢNG PHÂN T CH THIẾT Ế VÀ Đ NH GI THUẬT T N
TÊN HỌC PHẦN : Phân tích thiết kế và đánh giá thuật toán MÃ HỌC PHẦN : 17208 TRÌNH ĐỘ ĐÀO TẠO : ĐẠI HỌC CH NH QU
DÙNG CHO SV NGÀNH : C NG NGHỆ TH NG TIN
HẢI PHÒNG - 2010
Loại học phần 2
Tổng số TC: 3
Tự ọ B p lớ Đồ mô ọ 0 T ự /Xem a 15 Lý y 45 0 0
Tên học phần P ộ môn phụ trách giảng dạy K a ọ M y hoa phụ trách CNTT ã học phần 17208 TS 60 Điều kiện tiên quyết
S ê p ả ọ x ọ p ầ sa mớ ượ ă ý ọ p ầ y: K l p C l T
ục tiêu của học phần
- - - C p ả l . C p lượ x y ự Rè l y ư y a ọ .
Nội dung chủ yếu Gồm 4 p ầ :
C ả . C ả sắp x p m m l . C lượ : lượ a lượ ay l
- - - lượ ộ lượ am lam - K ả ộ p p .
PHÂN PHỐI SỐ TIẾT TS LT TH/Xemina 5 0 0
BT KT 1 1
4 1 2 0,5 0,5
15 1
i
Nội dung chi tiết của học phần TÊN CHƯƠNG ỤC Ch ng I Các khái niệm c ản 1.1. G ớ 1.1.1 K m . 1.1. . C p ư p p 1.1.3. C ụ s ồ ố 1. . Độ p p 1. .1. C ý m ộ p p 1. . . C lớp 1.3. Mố a a l ả 1.4. Mộ số ụ Ch ng II S p ếp và t m kiếm .1. B sắp x p .1.1. Sắp x p .1. . Sắp x p .1.3. Đ sắp x p . . C sắp x p ả . .1. Sắp x p ọ Sele S . . . Sắp x p ự p x a e S . .3. Sắp x p è I se S . .4. Sắp x p ọ B le S . . . S s sắp x p ả 7 0,5 3 5 2,5 2 1
PHÂN PHỐI SỐ TIẾT TS LT TH/Xemina BT KT 1
2,5 1 1,5 1
11 0
3 1 2
11 1
3 1 1 1
12 1
6 0
ii
TÊN CHƯƠNG ỤC .3. Sắp x p ố .3.1. C Heap .3. . T x y ự Heap .3.3. T sắp x p ố .4. T m m y .4.1. B m m .4. . T m m y Ch ng III Đệ qui và chiến c v t cạn 3.1. K m quy 3.1.1. G ả y ủ ụ y 3.1. . T ả y 3.1.3. H lự ủa y. 3.1.4. Đ y y p ọ . 3. . C lượ B e e 3.3. C lượ ay l a a 3.3.1. Ve m 3.3. . T ủ ụ 3.3.3. C 3.3.4. Đ p 3.3. . Mộ số a a Ch ng IV Chiến c chia đ tr 4.1. C s ủa lượ a 4. . T sắp x p ộ 4. .1. T ộ a R 4. . . Sắp x p ộ 4.3. Sắp x p a s 4.3.1. C lượ p 4.3.2. Quick sort 4.4. T m m p 4. . T số yê 4. .1. T ay 4. . . T a 4. . Mộ số Ch ng V Qui hoạch động .1. C lượ ộ 5.1.1. C p ụ .1. . C ướ ộ .1.3. C ộ . . B y số a . .1. T . . . T ộ .3. B y .4. B ma . . Mộ số ụ Ch ng VI Chiến c tham am .1. N yê ắ am lam . . B .3. B sắp l sự .3.1. T 6 1 0,5 1 1 1 0,5 1 6 0,5 1,5 1,5 1 1 0,5 6 1,5 1 1 1,5 1 4 0,5 1 2 3 0,5 1 1 0,5 1 1 2 1 1 1 1 2 1 1 1
PHÂN PHỐI SỐ TIẾT TS LT TH/Xemina
0,5 BT KT 1
TÊN CHƯƠNG ỤC .3. . T e lượ am lam .4. S s lượ am lam ớ lượ ộ Nhiệm vụ của sinh viên
T am ự y ủa ê ự ọ ự l m p do giáo viên giao, am ự m a ỳ ố ỳ.
N y H Đ Giáo trình một số vấn đề về thuật toán NXB G ụ
Đ M Tư . Cấu trúc dữ liệu và thuật toán. NXB Đ ọ ố a H
N y ố Lượ H Đ Hả . Cấu trúc dữ liệu + giải thuật = chương
R a Neap l a Kumarss Naimipour, Foundations of Algorithms Using
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, Tài iệu học tập - 2003 - ộ . 00 . - trình. NXB G ụ . 199 - C++ Pseudocode, Third Edition, Jones and Bartlett Publishers, 2004. - Introduction to Algorithms, Second Edition, MIT Press, 2001.
H nh thức và tiêu chuẩn đánh giá sinh viên
- - H ố ỳ : T p. S ê p ả ảm ả e y ủa N ư ủa Bộ
Đi m đánh giá học phần Z = 0,3X + 0,7 Thang đi m Thang đi m chữ , , C, D, F B ả y l l chính thức và thống nhất ủa Bộ mô K a ọ M y
K a Cô T ô ượ ù ả y cho sinh viên. Ngày phê duyệt / /20
iii
Tr ởng ộ môn ThS Nguyễn Hữu Tuân (ký và ghi rõ họ tên)
ài giảng môn học Phân tích thiết kế và đánh giá giải thuật
ỤC LỤC
LỜI NÓI ĐẦU ............................................................................................................................ 1
CH NG I: C C KH I NI M C BẢN ................................................................................ 2
1. T ả - Algorithm ............................................................................... 2
1.1. Đ a ............................................................................................. 2
1. . Đ ư ủa ........................................................................................ 2
. B ....................................................................................................... 2
.1. Mô ả ướ ự ....................................................................................... 2
. . S ụ s ồ lư ồ ả l a ........................................................ 3
3. Độ p p – Algorithm Complexity.......................................................... 4
3.1. C ê ............................................................................. 4
3. . Đ a ự ................................................................. 4
3.3. C a ộ p p .............................................. 5
3.4. C lớp .................................................................................................. 7
4. C l – Data structure .................................................................................. 9
. C lượ . ................................................................................ 9
.1. D y ộ x a s e sea ......................................................................... 9
. . Đ ay l – Backtracking ............................................................................. 9
.3. C a D e a C e ........................................................................... 9
.4. C lượ am lam G ee y ............................................................................ 10
. . ộ Dy am P amm ........................................................... 11
. B p ......................................................................................................................... 11
CH NG II: S P X P SORTING VÀ TÌM KI M S ARCHING ................................. 13
1. B sắp x p .......................................................................................................... 13
1.1. Sắp x p I e al S .......................................................................... 13
1. . Sắp x p x e al S ......................................................................... 13
1.3. Sắp x p p .................................................................................................. 13
1.3. C ê ẩ mộ sắp x p .................................................. 14
. C p ư p p sắp x p ả ................................................................................ 15
.1. Sắp x p ọ Sele s .............................................................................. 15
. . Sắp x p ự p x a e s ........................................................... 17
.3. Sắp x p è I se s ............................................................................... 19
iv
.4. Sắp x p ọ B le s .............................................................................. 21
ài giảng môn học Phân tích thiết kế và đánh giá giải thuật
. . S s sắp x p ả ................................................................. 23
3. C l Heap sắp x p ố Heap s . ............................................... 24
4. T m m y .................................................................................................... 31
. C ........................................................................................................... 33
. B p ......................................................................................................................... 33
CH NG III: Đ UI VÀ CHI N L C V T CẠN .......................................................... 34
1. K m ..................................................................................................... 34
2. C lượ B e e ............................................................................. 34
3. C lượ ay l Ba a / y a e ................................................ 35
CH NG IV: CHI N L C CHIA Đ TR ......................................................................... 38
1. C s ủa lượ a D e a C e .......................................... 38
2. Sắp x p ộ Me e s ........................................................................................ 38
3. Sắp x p a s ..................................................................................... 43
4. T m m p ................................................................................................... 46
5. B p...................................................................................................................... 48
CH NG V: UI HOẠCH ĐỘNG ........................................................................................ 49
1. C lượ ộ ...................................................................................... 49
2. B 1: D y a ......................................................................................... 49
3. B : B y ma .............................................................. 51
4. P ư p p ộ .................................................................................. 53
5. B y .............................................................................. 53
6. B p...................................................................................................................... 57
CH NG VI: CHI N L C THAM LAM GR D ) ....................................................... 60
1. N yê ắ am lam ............................................................................................... 60
2. B ....................................................................................................... 60
3. Bài t l p l ....................................................................................................... 61
4. S s lượ am lam ộ .................................................... 64
TÀI LI U THAM KHẢO ........................................................................................................ 65
v
ĐỀ THI THAM KHẢO ............................................................................................................ 66
ài giảng môn học Phân tích thiết kế và đánh giá giải thuật
LỜI NÓI ĐẦU
C l lượ l l ự ê ắ l ớ a l mộ l ự ê l ủa a ọ m y . Hầ ư ượ a y ê m y ù lớ ay ù ả ay p p p ả s ụ l e ự l m l ả . V ê lượ x y ự p p l p ê a ọ m y ả lý y ắ lựa ọ ưa a ả p p ự . V y ọ p mô ọ P ả l mộ a ọ .
T l y ựa ê m ê m ả p ả y mô ọ C l ả a Cô T ô Đ ọ H ả V am ù ớ sự am ả ủa l ủa ồ p ả ướ ự y pe a. Vớ ẩy ư ượ a ủ a m ả ớ sắp x p m m lượ ư ay l ộ am lam y ọ s p em s ê ộ ả mộ l . M ù ố ắ s ẫ ô mộ số s y ọ s ượ è ồ p em s ê ộ ả p ý ô a l y.
X l ảm ớ è ồ p Ba ủ m a
Cô T ô p ỡ l y .
Hải phòng, tháng 04 năm 2010
Tác giả
1
Nguyễn Hữu Tuân
ài giảng môn học Phân tích thiết kế và đánh giá giải thuật
CHƯƠNG I C C H I NIỆ CƠ ẢN
1. Thuật toán (giải thuật) - Algorithm
1.1. Đ nh ngh a thuật toán
C a ư p a a ủa . T e ư ố s a l “Introduction to Algorithms Se ủa T mas H. C me C a les . Le se s R al L. R es Cl S e ượ a ư sa : “mộ l mộ ủ ụ x ell- e e mộ p ọ l p s a a mộ mộ p ượ ọ l p .
N mộ ố ư l mộ ô ụ x ell- e e . V mộ m ư p ầ ủa y số a l mộ ủa mộ ụ . T m mộ m ả ộ a số l mộ m ù l mộ ả .
1 2 Đ c tr ng của thuật toán
T ắ : T ầ p ả ảm ả mộ ả sa ự ố ớ ộ l ầ . Đ y l ư a ọ ố ớ mộ .
T : ầ p ả ảm ả s sa mộ số ướ .
T x : C ướ ủa p ả ượ p ụ y
p ầm lẫ ố ớ ư ọ .
T ả: ượ xem l ả ư ả ă ả y ả a a p p ê ự p ượ yê ầ ủa ư ù .
T p : ượ ọ l p ố p ả
y ượ mộ lớp ư ự.
N a m e a ầ ượ ọ l l Input. K ả ủa ư l mộ ả ụ ùy e ụ ượ ọ l O tput.
2. i u diễn thuật toán
T ư ng có hai cách bi u di n một thu t toán, cách th nh t là mô tả ước thực hi n
của thu t toán, cách th hai là s dụ s ồ giải thu t.
2.1. ô tả các ớc thực hiện
2
Đ bi u di n thu ư i ta mô tả x ước thực hi n của thu t toán, ngôn ng ù mô tả thu t toán có th là ngôn ng tự nhiên ho c một ngôn ng lai ghép gi a ngôn ng tự nhiên với một ngôn ng l p ọ l n giả mã l nh.
ài giảng môn học Phân tích thiết kế và đánh giá giải thuật
Ví dụ: mô tả thu m ước số chung lớn nh t của hai số nguyên.
Input: Hai số nguyên a, b.
O p : ớ số lớ ủa a .
Thuật toán:
Bướ 1: N a USCLN(a, b)=a.
Bướ : N a m USCLN của a-b và b, quay l i ướ 1
Bướ 3: N u a < b thì tìm USCLN của a và b-a, quay l i ướ 1
2 2 Sử dụng s đ ( u đ ) giải thuật (flowchart)
Mộ p l s ụ s ồ
(Algorithm Flowchart).
S ồ s ụ ý ố ả mộ mô ả ma y s ớ mô ả ướ ự ủa . C a s ụ s ồ ả mô ả ố ư ù ả mô ả ủa a .
C ố ả ủa mộ s ồ
hối 1 K ố ắ ầ y mộ ư a
hối 2 K ố ư
Khối 3 T ự l l mộ l ồm mộ ư
mộ ư a
3
Khối 4: R m a u ki B lea u th s e Đ T e u th sa s e Sa (False).
ài giảng môn học Phân tích thiết kế và đánh giá giải thuật
hối C l p x l .
3. Độ phức tạp thuật toán – Algorithm Complexity
3 1 Các tiêu chí đánh giá thuật toán
T ô ư m ộ tốt, x u và so sánh các thu t toán cùng lo i, có th
dựa trên ha ê ẩ :
+ T ả .
+ Dựa vào th i gian thực hi n và tài nguyên mà thu t toán s dụ thực hi n trên các
bộ d li u.
Trên thực t các thu t toán hi u quả thì không d hi t hi u quả ô d dàng thực hi n và hi ược một cách nhanh chóng. Và mộ u có vẻ ngh ch lý là các thu t toán càng hi u quả thì càng khó hi t càng ph c t p l i càng hi u quả (không phả l . V nh giá và so sánh các thu ư a ư ng dựa ê ộ ph c t p v th i gian thực hi n của thu t toán, gọ l ộ ph c t p thu t toán (algorithm complexity). V bản ch ộ ph c t p thu t toán là mộ m ướ lượng (có th không chính xác) số phép tính mà thu t toán cần thực hi n (t dàng suy ra th i gian thực hi n của thu ối với một bộ d li p ước N. N có th là số phần t của mả ư ng hợp bài toán sắp x p ho c tìm ki m, ho c có th l ộ lớn của số trong bài toán ki m tra số nguyên tố chẳng h n.
3.2. Đánh giá th i gian thực hiện thuật toán
Đ minh họa vi ộ ph c t p thu t toán ta xem xét ví dụ v thu t toán sắp x p
chọn (selection sort) và sắp x p i ch trực ti p ex a e s ư sa :
Cài t của thu t toán sắp x p chọn: