Bài giảng Phân tích thiết kế và đánh giá thuật toán (Phần 2)
Tóm tắt Bài giảng Phân tích thiết kế và đánh giá thuật toán (Phần 2): ...Đ y ô p ả l y a s . Mộ p ê ả ủa s ô s ụ p ầ ay ay a mả mả p ả ả s p ầ ủa mả p ầ ủa mả p ả . C ọ lựa p ầ ay C a lựa ọ p ầ ay: + S ụ p ầ l m p ầ ay + S ụ p ư ủa 3 l y p ầ ay + S ụ mộ p ầ ẫ ê l m p ầ ay. Sa ọ p ầ ay l m ả ảm ủa p C mộ ự y a s ụ p ư ọ p ầ ay l p ầ ủa mả . C p ư ... ù n: F0 = 0 F1 = 1 For i = 2 to n Fi = Fi - 1 + Fi – 2 T y ê ảm ượ a l m êm ộ ớ a ả a . a ụ 1 a mộ số x sa : ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 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...lê l mộ ả . T a ủa m ộ ượ x a số yê s ư ớ a ắ ầ ướ m . V mộ ộ m 10 ắ ầ m s 10 mộ l p ê am a ả a ộ . L mộ l p ê m ê ố ớ ộ T m ự x l ắ ộ ủa m . C ướ mộ a s ộ y p T m xem ê am a ộ l ắ ủa a a l lớ ượ . Input ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 58 D l ư ư...
or (k=l;k<=r;k++) if(((B[i] < B[j])&&(i<m))||(j==r+1)) A[k]=B[i++]; else A[k]=B[j--]; } Đ sắp x p mả a p ầ a ọ m ư sa : ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 42 merge_sort(a, 0, n-1); Độ phức tạp của thuật toán s p ếp trộn Gọ T l ộ p p ủa sắp x p ộ . T l ô a mả a a ê ộ s ủa l ô l O l . T m ướ ô ự ộ p p l O : T(n) = O(n*log(n)). Bộ ớ ầ ù êm l O y l mộ số p ượ mộ m ủa l ủa a y l p ù ợp ụ sắp x p . C ư : void merge(int *a,int l,int m,int r) { int *b=new int[r-l+1]; int i,j,k; i = l; j = m+1; for (k=l;k<=r;k++) if((a[i] r)) b[k]=a[i++]; else b[k]=a[j++]; for(k=l;k<=r;k++) a[k] = b[k]; } void mergesort(int *a, int l, int r) { int mid; if(l>=r) return; mid = (l+r)/2; mergesort(a, l, mid); mergesort(a, mid+1, r); ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 43 merge(a, l, mid, r); } C m m ọ ả l Me e s ộ p p l O(n*log(n)). Đ y l số sắp x p ựa ê s s p ầ ợp ả sắp x p . S ớ Me e s s ụ êm mộ ù ộ ớ ớ mả ầ sắp x p. 3. S p ếp nhanh (Quick sort) s l sắp x p ượ C. A. R. H a e ưa a ăm 19 . s l mộ sắp x p a ớ ướ ự ư sa : + Sele : ọ mộ p ầ ọ l p ầ ay p + Pa p : ả p ầ ủa mả p ầ ay sa ê p ầ ay ả p ầ lớ p ầ ay sa ê p ả p ầ ay. P ầ ay p ầ mả . + Đ : ọ ớ ủ ụ sắp x p a ố ớ a a mả m ê p ầ quay Thuật toán void quicksort(int *A, int l, int r) { if(r>l) { int p =partition(A, l, r); quicksort(A, l, p -1); quicksort(A, p+1, r); } } H m p pa : + L y mộ số : l . + Đ x A ủa l p + G ả s A A p p + A A p p ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 44 Đ y ô p ả l y a s . Mộ p ê ả ủa s ô s ụ p ầ ay ay a mả mả p ả ả s p ầ ủa mả p ầ ủa mả p ả . C ọ lựa p ầ ay C a lựa ọ p ầ ay: + S ụ p ầ l m p ầ ay + S ụ p ư ủa 3 l y p ầ ay + S ụ mộ p ầ ẫ ê l m p ầ ay. Sa ọ p ầ ay l m ả ảm ủa p C mộ ự y a s ụ p ư ọ p ầ ay l p ầ ủa mả . C p ư s ô p ư y. H m p : int partition(int *A, int l, int r) { int p = A[l]; int i = l+1; int j = r; while(1){ le A p && ++i; le A p && l --j; if(i>=j) { swap(A[j], A[l]); return j; }else swap(A[i], A[j]); } } Đ ọ ớ m ê sắp x p mả a p ầ a ọ m ư sa : ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 45 quicksort(a, 0, n-1); T ủ ụ ê a ọ p ầ ủa mả l m p ầ ay a y a ầ a mả ự p ầ sa s ớ p ầ quay). C p ư p p lựa ọ p ầ ay : Ph ng pháp ng u nhiên C a ọ mộ p ầ ẫ ê l m p ầ ay Độ p p ủa ô p ụ ộ sự p p ố ủa p ầ input Ph ng pháp 3-trung nh P ầ ay l p ầ ượ ọ số 3 p ầ a l a l+ / a ầ ớ ộ ủa 3 số . H y s y sa : S a ủa ủ ụ p lựa ọ p ầ ượ ủa p ư p p ê C ố ô C ố ọ p ầ p Các vấn đề khác T ắ ủa xem x ắ ủa a ầ xem x y ố: l y ầ x xem ô a l mả ự sự ượ sắp ay ưa. T ố ư ủa . Đ s xảy a ư a sắp x p mả mộ N a a mả C a l a s ụ s ố ớ mả lớ mộ ưỡ sa sắp x p mộ ă ả Độ phức tạp của thuật toán T p ượ ự O . C p l ọ ớ ủ ụ p ộ s e ộ p p l O . D ộ p p ủa s l ộ p p ủa a p ộ sa ủa l ọ xa . K ả m m ọ y s ộ p p l O *l ầ ư ợp s l sắp x p a ư ợp ồ s m s ớ B le s . ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 46 4. T m kiếm nh phân T m m p l mộ ả ư p ụ ượ y l ô a m m ầ p ả ượ sắp x p ướ e a m m. Mô ả : I p : mả a le .. ượ sắp e a ă ầ a m m . O p : ủa p ầ a . T y ộ l a mả ượ sắp x p ê m ướ ay y a p ầ ư m m ầ ự m m p x p ầ a mả m m a le + / l p ầ a ớ a m m ả m m. N ô s a ả ă xảy a mộ l p ầ lớ a m m mả ướ sắp ê mả p ầ ư a ủa p ầ s p ầ ướ a[(left+ / a l a s le + / - 1. C a le + / e lý l ư ự a s le le + / + 1. T ư ợp ô a m m s ảm mộ a số p ầ sa m ướ m m. S ồ : Begin mid = (left+right)/2; k==a[mid] return mid; End sai k > a[mid] return -1; left = mid + 1; sai ≤ sai right = mid - 1; ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 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) { // ô int mid; while(left<=right) { mid = (left + right)/2; if(a[mid] == key) return mid; if(a[mid] < key) left = mid + 1; else right = mid – 1; } return -1; } Cài đ t đệ qui int recursive_bsearch(int a[], int left, int right, int key) { // int mid; mid = (left + right)/2; if(left>right) return -1; if(a[mid] == key) return mid; else if(a[mid] < key) return recursive_bsearch(a, mid+1, right, key); else ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 48 return recursive_bsearch(a, left, mid-1, key); } Đ ọ m ớ mả a p ầ a ọ ư sa : int kq = binary_search(a, 0, n – 1, k); : int kq = recursive_bsearch(a, 0, n – 1, k); T ộ p p l m l a O l N . Vớ .000.000.000 số a ầ ự m a ả l l 31 a a l a ầ 31 ướ ự m a ê mộ ư số ả số ê ớ m m p ự sự l mộ ả. T ê ự sắp ủa l mộ p ụ ủa m m p . C p m m ô a m m số p ầ lớ l x y ự y a s xem x y ư s ụ ả ăm as a le ô ọ ộ mô ọ y y ê ộ ủa mô ọ y a x a p ư p p ả ê . 5. ài tập ài tập 1: V ư p 1 mả số yê mộ số yê y m xem a ê số . N p p số x y m xem a ê số lớ x y. ài tập 2: C m m y e . ài tập 3: V ư p mộ mả số yê p m p 1 số yê S y m xem a ê p số ủa mả a ầ S S. ài tập V ư s mộ y số yê . H y m ưa a ủa số ư ầ ê y số yê ố ố ù y. ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 49 CHƯƠNG V QUI H ẠCH Đ NG 1. Chiến c qui hoạch động ộ DP – Dy am P amm mộ ượ ọ Re a Bellma ưa a ăm 19 l mộ p ư p p ả ợp l ả ủa ố ư p ư p p a e e-a - e . C a p ầ ả y ộ l p ớ a sa ả y p ư p p e s e ợp l ả l ượ l ả a ầ . N ượ l ộ l p ư p p ượ p ụ m ủa a ầ ố l ô ộ l p ớ a . T ư ợp ư y mộ a s ự ự sự ầ s l p l ả y . Mộ ộ s ả y ả mộ lầ y sa lư ả mộ ả y p ô p ả l ả m p mộ . ộ ư ượ p ụ ớ ố ư . T ố ư ư m l ả . M l ả mộ ượ lượ s ụ mộ m ùy ộ ụ yê ầ ủa l m a mộ m ủa m l ố ư lớ . ộ l mộ p ư p p ả ả y ố ư ẳ ư ê ố ượ sắp ự a p ả m ư ắ ố ư K ộ ụ ả ố ư ô p ả l ă ư l p ê a ầ p ả m a mớ ượ . B y s y ướ ả p ụ p ư p p ộ ả mộ số ố ư ay ượ a ỳ Olymp ọ s T ọ p ư p ố a ô a ụ ụ . 2. ài toán 1 Dãy Fi onaci B m số a l mộ e ộ ố ớ ư ọ l p p ư sa : D y số a ượ ô a ầ ư sa : 1 2 0 1 , 2 0 1 n n nF F F n F F X y ự n ớ l mộ số yê p p m. Cách 1 Sử dụng ph ng pháp đệ qui Vớ a y a ê a y ả ả y l s ụ mộ m n ẳ ư sa : int fibonaci(int k) ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 50 { if(k>=2) return (fibonaci(k-1)+fibonaci(k-2)); return 1; } T ê l ớ mộ ô l p ỳ ợ s ụ m . T y y y l mộ ô ả ả s a ầ 6: Ta 1 / (1 5) / 2 1.61803n nF F suy ra 1.61803 n nF y p n a l 0 1 ê a s x p x 1.61803 n lầ ọ ớ m a ê ự l 13 lầ ay ộ p p ủa l m m . Cách 2 Sử dụng ph ng pháp qui hoạch động C a s ụ mộ ộ p p y n s ụ mộ mả lư ù n: F0 = 0 F1 = 1 For i = 2 to n Fi = Fi - 1 + Fi – 2 T y ê ảm ượ a l m êm ộ ớ a ả a . a ụ 1 a mộ số x sa : ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 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 G ả s a ầ mộ y ma : ....A B C D . H y x y ự sa số p p ầ s ụ l . C a mộ ma ướ X Y ớ mộ ma ướ Y Z s ụ ma ư s ầ X Y Z p p . 2 3 13 18 23 2 3 4 3 4 18 25 32 3 4 5 4 5 23 32 41 Đ ảm số p p ầ ù a s a ma a ướ lớ p p ma ợp ê ượ y s ụ m a ự ự p p a ma . Bê p p ma ô p ả l ố x ê ô ự ủa m ô l m ay ả. G ả s a 4 ma A B C D ớ ướ ư l 30 1 , 1 40 , 40 10 , 10 25 . Số ả p p s ụ l 3: ((AB)C)D = 30 1 40 30 40 10 30 10 25 20,700 (AB)(CD) = 30 1 10 40 10 25 30 40 25 41,200 A((BC)D) = 1 40 10 1 10 25 30 1 25 1400 C ả ê y ự ự ma a mộ sự sa lớ ả số p p ầ ù a ả ố ù sa a lớ . V y l m m a ả ố ư Gọ M l số lượ p p ầ j kk i A a x sa : + C ù p y ma mộ . + Cả a a ủa y ma m p s ự l ố ư . T a a ô sa y ồ sa : + M(i,j) = 1 1( , ) ( 1, )i k j i k jMin M i k M k j d d d + M(i,i) = 0 T ma Ai ướ l i-1, di). ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 52 C ố ư ư ợp ủa a a s ụ mộ ộ p p ủa s l m m s l ọ m ố a ượ ự . N ma s y a s +1 số yê l ướ ủa s ợp p ủa p ầ x m x ư ớ m ự ủa a 1 ê ầ ù O(n2 ô a ớ lư ả ả . L m a e p ê ê a lư ả a ủa ê mộ ma am ồ a m ượ ả ố ư a lư mộ ma am ù ướ . T M 1 : int matrixOrder { for(i=1;i<=n;i++) M[i][j] = 0; for(b=1;b<n;b++) for(i=1;i<=n-b;i++) { j = i+b; M[i][j] = 1 1( , ) ( 1, )i k j i k jMin M i k M k j d d d faster[i][j] = k; } return M[1][n]; } T m: void showOrder(i,j) { if(i==j) printf(A[i]); else { k = faster[i][j]; print (“(“); ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 53 showOrder(i,k); print (“*”); showOrder(k+1,j); print (“)”); } } 4. Ph ng pháp qui hoạch động a a ụ ê a y p ủa mộ ộ ượ a l m 4 ướ ư sa : 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 n ottom-up). 4. d ng nghiệm đ t giá tr tối ưu t các th ng tin đ t nh. C ướ 1-3 l ướ ả ả ố ư p ư p p ộ . Bướ 4 a ư yê ầ m a ố ư ô ầ a m ụ . T ô ư ướ ầ l a ọ l ă ả x m ư ô y ồ ầ ựa m sự a s ư ợp ụ ủa . D y x y ự ộ ố ư a ầ ả s ộ ự ủa ố ư m ủa ớ ộ . Đ p ụ ướ ủa p ư p p ộ ả ố ư a x ụ 3 sa : 5. ài toán dãy con chung dài nhất C y ý ự X m y x y ự m y lớ ủa a y ê ớ y ủa mộ y ượ a l mộ p ý ự ủa y yê ự . V ụ ớ : X = A L G O R I T H M Y = L O G A R I T H M T y l LORITHM ớc 1: X m ủa y ả p p ố ư ủa + G ả s a l ả l 1.. + N a ý ự ố ù ủa X ù a l ý ự ố ù ủa . + P ầ l ủa s l x ủa X 1.. -1 1..m-1]. ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 54 + N a ý ự ố ủa X ô ù a mộ số s ô m ả a . + G ả s ý ự ô m ư ợp l ý ự ủa X + T s l y ủa X 1.. -1 1..m . + N ượ l ý ự ô m l ý ự ủa s l y ủa X 1.. 1..m-1]. ớc 2: X y ự ô y ồ ộ lớ ủa y ủa y T ướ 1 a x y ự ô y ồ ư sa : + Gọ C l ộ y lớ ủa a y X 1.. 1.. + C 0 C 0 ớ mọ . + L ả ủa l C m . + Cô y ồ [ 1][ 1] 1(1) [ ][ ] max( [ 1][ ], [ ][ 1])(2) C i j C i j C i j C i j + T ư ợp 1 l X ư ợp l X ớc 3: X y ự m y ủa y X 1.. 1..m . T ự a ư sa : a ầ a C 1 1 C 1 ... C 1 C 1 C ... C ... Độ p p C O 1 ớ 1 1 m ê ộ p p ủa l O(mn). int longest_common_sequence(X, Y) { ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 55 or(i=0;i≤m;i++) C[i][0] = 0; or(j=0;j≤n;j++) C[0][j] = 0; or(i=1;i≤m;i++) or(j=1;j≤n;j++) if(X[i]==Y[j]) C[i][j] = C[i-1][j-1] + 1; else C[i][j] = max(C[i-1][j],C[i][j-1]); return C[m][n]; } ớc : T m y ủa X 1.. 1..m X y ự m ố ư ô Đ m l ượ m a s ụ mộ ả D ượ ớ -1 - 1 -1, j-1 lầ ượ D m ư sa : D ớ -1, j-1) thì X[i] = l ý ự y s m y ủa x . V D ớ -1,j-1), (i-1,j) -1 p ụ ộ ủa mả C ượ s ụ C . C ủa mả D s ượ ư sa : D 1 ê C 1 + C -1][j-1 ê C C - 1 3 C C -1]. ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 56 T m m: N D ớ -1, j-1) (1 – trên trái) thì X[i] = Y[j] và ký ự y s m y l m. char * findSolution() { row = m, col = n, cs=””; while((row>0)&&(col>0)) { if(D[row][col] == 1) { lcs = lcs + X[row]; row = row – 1; col = col - 1; }else{ if (D[row][col]==2) row = row – 1; else if (D[row][col] = 3) col = col – 1; } ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 57 } reverse cs; // đảo ng c âu lcs return lcs; } ộ l mộ p ư p p ả ả ố ư a ộ l ự a T ọ K Đ ... y ê ô ủa y ả y ụ ộ ả mộ số ố ư m ủa ư ượ a ỳ ọ s ay Olymp T ọ ô a 3 ụ ụ . Hy ọ p ượ ộ ả ướ ắm ắ s ụ p ư p p ộ ả ố ư . 6. ài tập ài 1 ContestSchedu e V ăm 300 ầ ượ ự l ê ố a l e. T ả ộ l p y ượ lê l mộ ả . T a ủa m ộ ượ x a số yê s ư ớ a ắ ầ ướ m . V mộ ộ m 10 ắ ầ m s 10 mộ l p ê am a ả a ộ . L mộ l p ê m ê ố ớ ộ T m ự x l ắ ộ ủa m . C ướ mộ a s ộ y p T m xem ê am a ộ l ắ ủa a a l lớ ượ . Input ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 58 D l ư ượ mộ le ex e sa : ê m l l mộ ộ ồm 3 số yê ư l s p 1 s, t 1000000, 1 p 100 l a ắ ầ l ắ ủa ộ . Output K ả x lý ủa ư 1 le ex ớ ộ x số sa p ẩy. Ví dụ Input Output 1 10 100 10 20 100 20 30 100 30 40 100 4.0 10 20 20 30 40 60 15 35 90 0.9 1 100 85 99 102 100 101 200 60 1.45 ài 2 oinedString C mộ y l p A y m x ộ a ả y . N x ư y y ưa a x ầ ê e ự Alp a e . Input D l ủa ư ượ mộ le ex m ượ ê mộ số 13 ộ ủa 1 a ý ự A a. Output K ả x lý ủa ư mộ le ex . Ví dụ Input Output BAB ABA ABAB ABABA AKAKA AKABAS ABAKA ABABAKAKABAS ài 3 JumpyNum Mộ số mpy l mộ số yê ư số l ủa a . V ụ: ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 59 C số ư 28459 28549 1091919 97753 C số mpy 290464 13131313 9753 5 H y ư x xem a a số yê l a ê số Jumpy. Input D l ủa ư ượ le ex ớ số l 000000 ượ ê a . Output K ả x lý ủa ư mộ le ex . Ví dụ Input Output 1 10 9 9 23 9 8000 20934 3766 ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 60 CHƯƠNG VI CHIẾN LƯ C TH L (GREED ) 1. Nguyên t c tham am C am ă ee y al ms ố ư ộ ư ượ s ụ ả ố ư m m ủa ố e mộ ê . C ộ l ô mộ m ố ư . C am ă ự lựa ọ ố ư ụ ộ ớ y ọ lựa ọ s ẫ mộ m ố ư ụ ầ ả y . C am ă ư a ộ p p a ư l m y ù lắm l ỡ l s ụ ộ ớ. N ư ô may l ô p ả l l ả ố ư . Qui hoạch động không hiệu quả C m a mớ ọ ộ ẳ ư ma O(N2 m x O m ố ớ y p ố ư O(N3 l x ê mộ a ẫ l ô ả. Ta sa y C ả l l ố ớ y a lựa ọ m a mộ ả p p ố ư ầ p ả ự m a e exs a e ố ớ ả lựa ọ y. C a m m ố mộ y xem lựa ọ l ố số lượ lựa ọ m a ầ p ả . C am ă ee y al ms ượ ù ả y m a y l lựa ọ ố . Thực hiện ựa chọn theo ki u tham am (Greedy Choice) M ầ y xem s ọ lựa ọ a s ọ lựa ọ ố m M ầ ọ a s ọ mộ am lam max m e lợ ủa a . T ê lựa ọ ư y ô p ả a ẫ mộ ả . C ẳ y số 3 4 1 8 9 ầ ọ a y ủa sa y l mộ y ă . D y ả l 3 4 8, 9>. Tuy ê e ọ am ă sa ọ x 3 p ầ ầ l 3 4 s ọ p p ầ 1 p ầ ợp mộ y ă ố ớ p ầ ượ ọ ướ ả s l 3 4 1 ê ả y ô p ả l ả . 2. ài toán đổi tiền B p ư sa : mộ lượ ồ ồ m lầ lượ l m1 m .. m . Vớ ả số lượ ồ l ô y ồ ồ ớ số lượ ồ s ụ l . Mộ ả e yê lý am ă a y ảm ả số ồ s ụ l a s ố ắ s ụ ồ m lớ . V ụ ớ 89 ồ ồ m 1 10 100 a mộ l ồ 100 3 ồ 1 ồ 10 4 ồ 1. ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 61 T y ê ê ự l mộ x p a lô apsa ộ lớp NP ầy ủ ê ự ả y : ù ộ ớ y ộ. 3. ài toán ập ch Mộ p ọ s ụ mộ lớp ọ mộ m. C lớp ọ m ố s ụ p ọ m lớp ọ mộ l ọ ượ mộ ả a Ij = [sj a l lớp ọ s ọ ắ ầ m sj ớ m j. Mụ ủa l m mộ l ọ sa số lượ lớp ọ s ụ p ọ l lớ ượ ê ô a lớp ù s ụ p ọ mộ m ô a lớp ù l ọ . G ả s l ọ ủa lớp ượ sắp e ự ă ủa a ư sa : 1 2 ... nf f f C ủa mộ l ọ ố ư Gọ Si,j l p lớp ọ ắ ầ sa m i ướ m sj a l lớp y ượ sắp x p a lớp Ci Cj. C a êm lớp ả C0 Cn+1 ớ 0 - Sn+1 + . K S0,n+1 s l p a ả lớp. G ả s lớp Ck l mộ p ầ ủa l ọ ố ư ủa lớp m Si,j. T l ọ ố ư a ồm mộ p lớ ủa S i,k, {Ck mộ p lớ ủa Sk,j. D ọ l ướ ủa mộ l ọ ố ư p S i,j a ô sa : ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 62 0 if j = i+1 ( , ) max( ( , ) ( , ) 1) if j > i+1 i k j Q i j Q i k Q k j 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 ầ ê a l lớp Ck trong Si,j ớ số . ổ đề 2: N ọ lớp Ck ư 1 p Si,k s l p . T am lam Recursive-Schedule(S) 1 if |S| = 0 2 then return 3 Gọ Ck l lớp a S 4 L Ck ả lớp ắ ầ ướ a ủa Ck S; Gọ S' l p ả 5 O = Recursive-Schedule(S') 6 return O {Ck} Dựa ê l s ụ a S s ộ p p a l O(n2 O l . T êm s m mộ p ả ă x p l . T am ă a y e l p Iterative-Schedule(S) 1 n = |S| 2 m = – 3 O = {} 3 for i = 1..n 4 do if si m 5 then O = O {Ci} 6 m = fi 7 return O M ọa ự ủa : ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 63 ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 64 T ê ê a ự y l ắ ựa ê sa : “Gọ O l p lớp Ck l lớp ố ù ượ êm O. T ố ớ lớp Cl ỳ m l Cl x ộ ớ mộ lớp O s x ộ ớ Ck. C ủa : T ay m số lượ lớ lớp s ụ p ọ a ay yê ầ ủa l m a lớ m p ọ ượ s ụ . C p ộ a ay mụ ê ủa l ô ư lựa ọ am ă ủa e ư ê s ô l m ượ ố ớ y. 4. So sánh chiến c tham am và qui hoạch động V y am ă s m ố ư B ượ ả y am ă ư l ố ư ư a m sa : + T lựa ọ am ă ee y e p pe y : Mộ m ố ư ượ ự lựa ọ ẻ ư l ố m m m ô ầ a m ớ ợ ý ủa ố ớ m ủa . Hay mộ l mộ m ố ư ủa ượ ự lựa ọ ố ư ụ ộ. + Mộ m ố ư ượ a ă a me m p ầ ượ x y ự ớ mộ m ố ư ủa l . C a l mộ m ố ư s a m ố ư ố ớ ướ . T y ượ ọ l ố ư p mal substructure). Sự a ả a ộ am ă l ố ớ am ă a ô ầ m ủa ự mộ lựa ọ . V mộ m ố ư a ê am ă ả ộ . Ch ý: T mộ số x y ự ượ m ọ ợp m ố ư . T am ă m ầ ớ m ố ư . ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 65 TÀI LIỆU TH HẢ 1. pe a “T a ư ự y V 2. pe a “T a ư ự y A 3. C l ả e s e: 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. ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 66 ĐỀ THI TH HẢ Đề số 1 Câu 1: a) T l m m H y y ướ ộ p p s ồ ủa m m y b) V m sắp x p ọ ă ầ ê mả công nhân ồm ư ô sa : Tên T Lư T ư a sắp x p l ư lư ù lư e ê . Câu 2: a) T y s x số số 1 3 ớ ộ p p m. b) T ự ướ ủa sắp x p ộ ớ mả số yê sa : 3 8 10, 9, 82, 4, 78, 28, 9, 10, 13, 11. Câu 3: a) T y y ma p ụ m số p p ự y ma ướ : x 0 0x10 10x 0 0x1 b) T y m y ồm p ầ l ê p lớ ủa y số yê sa : -9, 8, -3, 18, 4, -2, 8, -13, 20, -4, 8, 9, 3. Đề số 2 Câu 1: a) T l m m H y y ướ ộ p p s ồ ủa m m p ? b) V m sắp x p ọ ă ầ ê mả công nhân ồm ư ô sa : Tên H số lư P ụ p T ư a sắp x p l lư số lư * 0 + p ụ p. Câu 2: a) T y s x số số 1 3 ớ ộ p p m. ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 67 b) T ự ướ ủa sắp x p a ớ mả số yê sa : 3 8, 10, 9, 82, 4, 78, 28, 9, 10, 13, 11. Câu 3: a) T y y ma p ụ m số p p ự y ma ướ : 1 x x 0 0x10 10x . b) T y m y ồm p ầ l ê p lớ ủa y số yê sa : -8, 9, 7, -2, -19, 2, -9, 2, 3, 28, -9. Đề số 3 Câu 1: a) T l m m H y y ướ ộ p p s ồ ủa m m y b) V m sắp x p chèn ă ầ ê mả công nhân ồm ư ô sa : Tên T Lư T ư a sắp x p l ư lư ù lư e . Câu 2: a) T y s ủa số yê ầ ê ớ p p m. b) T ự ướ ủa sắp x p ộ ớ mả số yê sa : 3 8 10, 9, 82, 4, 78, 28, 9, 10, 13, 11. Câu 3: a) T y y ma p ụ m số p p ự y ma ướ : x 0 0x10 10x 0 0x1 Đề số Câu 1: a) T l m m H y y ướ ộ p p s ồ ủa m m p ? b) V m sắp x p ự p ă ầ ê mả công nhân ồm ư ô sa : Tên T Lư T ư a sắp x p l ư lư ù lư e . ài giảng môn học Phân tích thiết kế và đánh giá giải thuật 68 Câu 2: a) T y s x số số 3 ớ ộ p p m. b) T ự ướ ủa sắp x p a ớ mả số yê sa : 3, 8, 10, 9, 82, 4, 78, 28, 9, 10, 13, 11. Câu 3: a) T y y ma p ụ m số p p ự y ma ướ : x 0 0x10 10x 0 0x1 . b) p ụ m x ủa a x X1 “ABCABCCB X BCAABCCA . Đề số : Câu 1: a) T l m m H y y ướ ộ p p s ồ ủa m m y b) V m sắp x p ọ ă ầ ê mả Họ sinh ồm ư ô sa : Tên T Đ m T ư a sắp x p l ư m ù m e . Câu 2: a) T y s x số số 3, 7, 2 ớ ộ p p m. b) T ự ướ ủa sắp x p ộ ớ mả số yê sa : 3 8 10, 9, 82, 4, 78, 28, 9, 10, 13, 11. Câu 3: a) T y y ma p ụ m số p p ự y ma ướ : 15x5, 5x20, 20x10, 10x15 b) T y m x ủa a x .
File đính kèm:
- bai_giang_phan_tich_thiet_ke_va_danh_gia_thuat_toan_phan_2.pdf