bài giảng phân tích thiết kế và đánh giá thuật toán

74 0 0
bài giảng phân tích thiết kế và đánh giá thuật toán

Đ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

BỘ GIAO THÔNG VẬN TẢI TRƯỜNG ĐẠI HỌC HÀNG HẢI... 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... H nh thức và tiêu chuẩn đánh giá sinh viên Ngày

Trang 1

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

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

Trang 2

- C lượ : lượ a lượ ay l lượ ộ lượ am lam

- K ả ộ p p

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

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 6

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

2.1 ô tả các ớc thực hiện

Đ 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

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)

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 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

Trang 11

5 }

Số phép tính thu t toán cần thực hi n ượ ư sau: (N-1) + (N- + + + 1 N* N-1)/2

Phân tích chi ti N* N-1)/2 là số phép toán so sánh cần thực hi n, còn số lần thực hi i ch hai phần t (số nguyên) tố a ủa thu t toán là N

C t của thu t toán sắp x p i ch trực ti p:

Tư ự ối với thu t toán sắp x p chọn ta có số p p ự l : (N-1) + (N-2) + + +1 N* N-1)/2 Chi ti N* N-1)/2 là số lần so sánh thu t toán thực hi n, và 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 x p i ch trực ti p vì số a i ch ư ng hợp tốt nh ư a ư ng hợp tồi nh t thì chắc chắn thu n sắp x p chọn tố k t lu n thu t toán sắp x p chọ a s ới thu t toán sắp x p i ch trực ti p

Trang 12

“ ộ p p a ủa l O(N2 ắ ọ l “ l O(N2 Tư ự a a  (omega)v  (theta):

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 ư

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

Chiến c tham am (Greedy) C lượ am lam l mộ lượ x y ự 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

Sắp x p (sorting) là một quá trình x p t các bản ghi của một file theo một th tự nào V c x p y ược thực hi n dựa trên một hay nhi ư ô y ược gọi là khóa xắp x p (key) Th tự của các bả ượ x nh dựa trên các khóa khác nhau và vi c sắp x p ố ược thực hi ối với m i khóa theo các th tự khác nhau Chúng ta s t p trung vào các thu t toán xắp x p và giả s khóa ch gồm 1 ư ng duy nh t Hầu h t các thu t toán xắp x p ược gọi là các thu t toán xắp x p so sánh: chúng s dụng hai

Khi các bả ước lớn vi i các bản ghi là r t tố m giảm p ư i ta có th s dụ p ư p p sắp x p gián ti p Vi c này có th ược thực hi n theo nhi u cách khác nhau và môt trong nh p ư p p l o ra một file mới ch a ư ng khóa của le a ầu, ho c con tr tới ho c là ch số của các bản ghi ban ầ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

Sau khi sắp x p x truy c p vào các bản ghi theo th tự sắp x p chúng ta s dụng th tự ược cung c p b i cột index (ch số T ư ng hợp này là 3, 2, 4, 1 (chúng 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 m m ớ ước file sắp x p

+ T t nhiên là bộ nhớ s dụng càng nh càng tốt m c dù vi ối gi a th i gian và bộ nhớ cần thi t có th là có lợi

+ Sự nh (Stability):Một thu ược gọi là nh n ư gi ược quan h th tự của các khóa b a ô l m ay i th tự của các khóa b ng nhau)

C a ư ng lo lắng nhi u nh t là v th i gian thực hi n của thu t toán vì các thu t toán mà chúng ta bàn v ư ng s dụ ước bộ nhớ ư ư a

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 22

Đ 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ọ

Trang 25

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 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 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 36

Heaps ọ ớ l eap 1 lầ -1 lầ ọ ớ eap y s y a ộ p p ủa l O(n + (n-1)logn) = O(n*log n)

T ê ự eaps ô a quicksort

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

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 ớ

Trang 44

38

CHƯƠNG IV CHIẾN LƯ C CHI Đ TR

1 C sở của chiến c chia đ tr (Divide and Conquer)

Trang 45

39 Các thu t toán sắp x p tốt nh u là các thu C u tuân theo chi n lượ sa y:

Cho một danh sách các bản ghi L

+ N u L có không nhi 1 p ần t a l ược sắp + N ược l i

- Chia L thành hai dãy nh l L1 L - Sắp x p L1 L qui – gọi tới thủ tục này)

int mid = (left + right)/2; mergesort(A, left, mid); mergesort(A, mid+1, right); merge(a, left, mid, right);

Trang 46

int *B1 = new int[m-l+1]; int *B2 = new int[r-m]; for(int i=0;i<m-l+1;i++)

Trang 47

int *B=new int[r-l+1]; for (i=m; i>=l; i )

Trang 49

3 S p ếp nhanh (Quick sort)

s l sắp x p ượ C A R H a e ưa a ăm 19

Trang 53

47

Cài đ t ng C của thuật toán t m kiếm nh phân

int binary_search(int a[], int left, int right, int key)

Trang 57

51

+ ui ho ch động là một thuật t nh toán đệ ui hiệu uả ng cách lưu trữ các t uả c c ộ

+ rong ui ho ch động t uả c các ài toán con thư ng đư c lưu vào một mảng

3 Bài toán 2 ài toán nhân dãy các ma trận

Trang 59

1 ác đ nh đ c đi m cấu trúc c giải pháp tối ưu c ài toán

2 ìm c ng th c tru h i đệ ui ác đ nh giá tr c một giải pháp tối ưu

3 nh giá tr tối ưu c ài toán d vào các giá tr tối ưu c các ài toán con c

Trang 63

ộ l p y ượ lê l mộ ả T a ủa m ộ ượ x a số yê s ư ớ a ắ ầ ướ

Trang 66

Thực hiện ựa chọn theo ki u tham am (Greedy Choice)

M ầ y xem s ọ lựa ọ a s ọ lựa ọ ố

Trang 68

Thực hiện một ựa chọn tham am

ổ đề 1: Tồ mộ l ọ a ố ư p Si,j a lớp Ck trong Si,j

Trang 69

63

Trang 70

m ớ ợ ý ủa ố ớ m ủa Hay mộ l mộ m ố ư ủa ượ ự lựa ọ ố ư ụ

Trang 71

4 Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest and Clifford Stein, “I Al ms Se T e MIT P ess 001 1180 pa es 5 Jeff Cogswell, Christopher Diggins, Ryan Stephens, Jonathan Turkanis, “C++

C O’Re lly N em e 00 9 pa es

6 N y H Đ G mộ số NXB G ụ 003 7 Đ M Tư C l NXB Đ ọ ố a H ộ

2002

Ngày đăng: 27/04/2024, 02:19

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan