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



