1. Trang chủ
  2. » Tài Chính - Ngân Hàng

Phân tích thiết kế và đánh giá giải thuật toán potx

74 535 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phân tích thiết kế và đánh giá giải thuật
Người hướng dẫn ThS Nguyễn Hữu Tuân
Trường học Trường đại học Hàng Hải Việt Nam
Chuyên ngành Kỹ thuật và Công nghệ Thông tin
Thể loại Báo cáo môn học
Năm xuất bản 2010
Thành phố Hải Phòng
Định dạng
Số trang 74
Dung lượng 1,2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BỘ GIAO THÔNG VẬN TẢI TRƯỜNG ĐẠI HỌC HÀNG HẢI... Rivest, Clifford Stein, Introduction to Algorithms, Second Edition, MIT Press, 2001.. H nh thức và tiêu chuẩn đánh giá sinh viên Ngày p

Trang 1

BỘ GIAO THÔNG VẬN TẢI

TRƯỜNG ĐẠI HỌC HÀNG HẢI

Trang 2

Nội dung chi tiết của học phần

TÊN CHƯƠNG ỤC PHÂN PHỐI SỐ TIẾT TS LT TH/Xemina BT KT

Ch ng I Các khái niệm c ản 5 4 0 1 0 1.1 G ớ

1

Ch ng II S p ếp và t m kiếm 15 7 5 2 1 1 B sắp x p

Trang 3

1

1 0,5

1

0,5

1

1 0,5

1

1

Ch ng VI Chiến c tham am 6 4 1 1 0 1 N yê ắ am lam

Trang 4

Nhiệm vụ của sinh viên

T am ự y ủa ê ự ọ ự l m p do giáo viên giao,

- R a Neap l a Kumarss Naimipour, Foundations of Algorithms Using

C++ Pseudocode, Third Edition, Jones and Bartlett Publishers, 2004

- Thomas H Cormen, Charles E Leiserson, Ronald L Rivest, Clifford Stein,

Introduction to Algorithms, Second Edition, MIT Press, 2001

H nh thức và tiêu chuẩn đánh giá sinh viên

Ngày phê duyệt / /20

Tr ởng ộ môn ThS Nguyễn Hữu Tuân (ký và ghi rõ họ tên)

Trang 5

iv

Ụ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

4 Sắp x p ọ B le s 21

Trang 6

v

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

ĐỀ THI THAM KHẢO 66

Trang 8

2

CHƯƠNG I C C H I NIỆ CƠ ẢN

1 Thuật toán (giải thuật) - Algorithm

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

Trang 9

3

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)

Trang 10

4

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 ê ẩ :

ê ộ 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:

Trang 11

l số lần i ch hai phần t (hai số nguyên) tố a ủa thu t toán

T ư ng hợp trung bình, thu t toán sắp x p chọ x ướng tố s ới sắp

Trang 12

“ ộ p p a ủa l O(N2 ắ ọ l “ l O(N2

Tư ự a a  (omega)v  (theta):

Trang 13

7

3.4 Các ớp thuật toán

K a ộ p p a / ô a ớ ủa mộ ay s

ụ ý  a ả p ớ lớp ủa m V ụ f(N) =  N a s l y l ea C am ả êm:

Trang 15

9

N a l O(N2 a ẫ ư l

l O N a ưa a ượ ô x

4 Cấu tr c dữ iệu – Data structure

Niklaus Wirth, một l p trình viên và nhà khoa họ m y ư i phát minh ra ngôn

ng l p Pas al ng nói một câu nói n i ti l ực l p : C ư (Programs) = C u trúc d li u (Data Structures) + Giải thu t (Algorithms) Câu nói này nói lên bản ch t của vi c l p l m một c u trúc d li u phù hợp bi u di n d li u của bài toán và t x y ựng giải thu t phù hợp với c u trúc d li chọn Ngày nay với sự phát tri n của các k thu t l p trình, câu nói của Wirth không hẳ y ối n a

ư ẫn phản ánh sự gắn k t và tầm quan trọng của các c u trúc d li u và giải thu t

C u trúc d li ược s dụ bi u di n d li u còn các giải thu ược s dụ thực

hi n các thao tác trên các d li u của bài toán nh m hoàn thành các ch ă ủa ư trình

Các chiến c thiết kế thuật toán

K ô mộ p ư p p p a x y ự ê

ả l C a ọ m y ê ưa a lượ ả p ụ l a

5.1 Duyệt toàn ộ (E hausted search)

5.2 Đệ qui quay ui – Backtracking

C lượ ay l l mộ lượ x y ự ựa ê a qui N m ủa ượ mô a ướ mộ e m p ầ ủa e

Trang 16

10

a s a ả

sa ợp m ủa l m ủa a ầ T y ê ă y m a y ố: l m a

mộ ợp lý l ượ ả y

a s p p y ố a l ợp l ả ủa

s ượ ự ư

C sắp x p ộ me e s sắp x p a s ộ l

a y ượ y ư 3

Ví dụ[6, trang 57]: T ụ y a s xem x a N Đ a a ý ô sa : N N N/2 2 N/2 2 1 nÕu N = 0 a (a ) nÕu N ch½n a*(a ) nÕu N lÎ T ô ê a s y a ủa ư sa : int power(int a, int n) { if(n==0) return 1; else{ int t = power(a, n/2); if(n%2==0) return t*t; else return a*t*t; } } Chiến c tham am (Greedy) C lượ am lam l mộ lượ x y ự m m ố ư ụ ộ ố ư m ượ m ố ư ụ ả ư

ợp T ư ợp m l ả ủa lượ am lam ư

ă a ộ p p p Ch ý: T mộ số x y ự ượ m ọ ợp

m ố ư T am ă m ầ ớ m

ố ư

Trang 17

s l ả ựa ê s p lems ựa ê a C qui ộ ư s ụ mả lư l m ủa

yê ựa ủa ma sa le p ư l p ầ ê p ầ lớ

ê ộ ủa ma C ẳ a 0 l mộ p ầ yê ựa ma sa :

f(x) = a0 + x*(a1+x*(a2+x* +x an-1+an*x Cô H e

ài tập C 4 ộp ướ a m m ủa ộp ượ ô 1

4 m xa m H y ưa a ả x p ộp 1 y sa

e p a ê x ố ướ sa ủa y ủ ả 4 m

xa m

Trang 18

12

ài tập 7 H y ư a ượ a ả số yê

số a số

ài tập 8 p ụ s a ả số yê ố N

Trang 19

13

CHƯƠNG II: S P XẾP (S RTING) VÀ T IẾ (SE RCHING)

1 Bài toán s p ếp

1 1 S p ếp trong (Interna Sorting)

Sắp x p ược xem là một trong nh l ực nghiên c u c n của khoa học máy T ướ t toán chi ti t chúng ta cần nắm v ng một số khái ni m ản sau:

+ Mộ ư ng (field) là mộ d li ẳng h ư ê i, số n tho i của mộ ư i

T p m ủa mô ọ y a xem x sắp x p Cụ

ầu Chúng ta s sắp x p trên file mới này với các bả ước nh sa y

c p vào các bả le a ầu thông qua các con tr ho c ch số y l l m

ư ng th y ối với các h quản tr s d li u)

Trang 20

14

Ví dụ: chúng ta muốn sắp x p các bản ghi của le sa y:

Index Dept Last First Age ID number

ta không nh t thi t phả i các bả a ầu)

1.3 Các tiêu chuẩn đánh giá một thuật toán s p ếp

Các thu t toán sắp x p có th ược so sánh với nhau dựa trên các y u tố sa y:

+ Th i gian thực hi n (run-time): số các thao tác thực hi ư ng là số các phép so

s i các bản ghi)

+ Bộ nhớ s dụ Mem y : l lượng bộ nhớ cần thi thực hi n thu t toán lượng bộ nhớ s dụ ch a d li u cần sắp x p

+ Một vài thu t toán thuộc lo “ pla e ô ần (ho c cần một số cố nh) thêm

bộ nhớ cho vi c thực hi n thu t toán

+ Các thu ư ng s dụng thêm bộ nhớ t l thu n theo hàm tuy n tính ho c

Ví dụ v sắp x p nh: Chúng ta muốn sắp x p le sa y ự trên ký tự ầu của các

bả ướ y l t quả sắp x p của các thu t toán nh và không nh:

Trang 21

S ồ :

Trang 22

j<n j=i+1

i=i+1

j=j+1

Đ S

S

Đ

Đ S

Đ n mã sau minh họa cho thu t toán:

void selection_sort(int a[], int n)

{

int i, j, vtmin;

Trang 23

Với m i giá tr của i thu t toán thực hi n (n – i – 1) phép so sánh và vì i ch y t 0 cho tới

(n–2), thu t toán s cần (n-1) + (n- + + 1 -1)/2 t c là O(n2) phép so sánh T mọ

I e a e s ay S a Sele S

Mô ả: Bắ ầ x p ầ ầ ê a ớ 0 a x ả p ầ sa

a ọ l a ớ y +1 ớ -1 ố ù Vớ m p a a ý l a

l p ầ sa a a a l xảy a sa a s a a[j]

Ví dụ minh họa G ả s mả a ầ l a 1 19 3 1 C ướ ủa

s ượ ự ư sa :

i=0, j=2: 1, 6, 2, 19, 3, 12

Trang 24

j<n j=i+1

a[j]<a[i]

Đ S

i=i+1 j=j+1

Đ S

Trang 25

19

for(j=i+1;j<n;j++) if(a[j] < a[i])

// a a tam = a[i];

a[i] = a[j];

a[j] = tam;

} }

Độ p p ủa : C y s ớ sắp x p ọ sắp x p ự p ầ số ướ s s ư ư : l * -1 / lầ s s

N ư số ướ a p ầ ớ số lầ s s : * -1 / T ư

ợp x số ướ ủa ớ số lầ s s ư ợp

số ướ l * -1 /4 C ư ợp ố số ướ 0

N ư y sắp x p ự p l m s ớ sắp x p ọ số lầ

2.3 S p ếp ch n (Insertion sort)

Mô ả :

T ựa a l hèn m i khóa vào mộ y ược sắp x p của dãy cần sắp P ư p p y ư ược s dụng trong vi c sắp x p các cây bài trong

S ồ ả ủa ư sa :

Trang 26

Đ S

Trang 27

Với m i i chúng ta cần thực hi n so sánh khóa hiên t i (a[i]) với nhi u nh t là i khóa và

vì i ch y t 1 tới n-1 nên chúng ta phải thực hi n nhi u nh : 1 + + + -1 = n(n-1)/2 t c

là O(n2 p p s s ư ự ư t toán sắp x p chọn Tuy nhiên l p le ô

Trang 28

j>i j=n-1

a[j]<a[j-1]

Đ S

i=i+1 j=j-1

Trang 29

23

for(i=n-1;i>=0;i )

for(j=1;j<=i;j++) if(a[j-1]>a[j]) swap(a[j-1],a[j]);

Trang 30

l mộ y p ầy ủ l mộ y p ầy ả ầ ủa y ầ ố

ù ầy p a ủa y C mô ả l mộ y p m

Trang 31

 Left(i) = 2*i + 1

 Right(i) = 2*i + 2

 Parent(i) = (i-1)/2

Ví dụ

Trang 37

ô a m m ượ lư ê ộ ớ ủa m y m m

K ả m m l v trí của phần tử th a mãn điều kiện t m kiếm: ư a

ớ mộ a ướ a m m T m y y a

y p ớ ô ượ a ư l ủa p ầ m y N

ả l ô m y ư ợp y ẫ ô ả

s ượ mộ ư ư ớ ô ồ p ầ : ẳ ư -1 ố ớ mả NULL ố ớ a s l ê

Trang 39

33

5 Các vấn đề khác

N ượ y ê ẫ mộ số m

a am ả : ẳ ư sắp x p S ell s sắp x p m Counting sort sắp x p số Ra x s C y ượ xem ư p ầ ự m

Trang 40

34

CHƯƠNG III ĐỆ QUI VÀ CHIẾN LƯ C V T CẠN

1 hái niệm đệ qui

Trang 41

35

ê số ư ợp ầ p ả ủa ư lê ớ số lớ ư l s

ớ yê ầ ủa a

3 Chiến c quay ui ( ack tracking / try and error)

Đ y l mộ lượ a ọ ủa Tư

ự ư lượ s lượ ay l mộ m : lư

ả ă p ượ ướ p l ầ lù l mộ ướ l

ả ă ưa ượ T ô ư ả y ư ượ ắ l ớ

Ngày đăng: 15/03/2014, 19:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w