Professional Documents
Culture Documents
-
2.2 PHÂN TÍCH THUẬT TOÁN KHÔNG ĐỆ QUY
2.2 Phân tích thuật toán không đệ quy
• Ví dụ 2: Giải thuật kiểm tra xem có
phải mọi phần tử trong mảng 1 chiều là
khác biệt nhau.
12/12/2020 5
2.2 Phân tích thuật toán không đệ quy
Function Tim_phantu(A,n)
begin
for i:=0 to n-1 do
for j:= i+1 to n do
if A[i] = A[j] return false
return true
end;
12/12/2020 6
2.2 Phân tích thuật toán không đệ quy
• Ví dụ 3: Giải thuật nhân 2 ma trận A(
m x p), B(p x n) thành ma trận C kích
thước (m x n).
Viết giải thuật
Xác định phép toán cơ bản của giải thuật
và tính độ phức tạp của GT theo phép
toán cơ bản này.
12/12/2020 7
2.2 Phân tích thuật toán không đệ quy
Procedure NhanMT(A,B,C,m,p,n)
Begin
for i:=1 to m do// T(m)
for j:=1 to n do// T(n)
begin
C[i,j]:=0;
for k:=1 to p do // T(p)
C[i,j] = C[i,j] +A[i,k]*B[k,j]
end;
End;
12/12/2020 8
2.2 Phân tích thuật toán không đệ quy
• Ví dụ 4: Tìm tất cả những ký tự xuât
hiên trong cùng một văn bản
12/12/2020 9
2.2 Phân tích thuật toán không đệ quy
procedure So_khop_xau
begin
n:=[T]; m:=[P];
for s:=0 to n-m do
if P[1..m] = T[ s+1,..., s+m]
then print(' Mẫu xuất hiện ở vị trí',s);
end;
12/12/2020 10
2.2 Phân tích thuật toán không đệ quy
• Ví dụ 4: Tìm tất cả những ký tự xuât procedure so_khop_xau(T,P)
hiên trong cùng một văn bản Begin
n:=|T|; m:=|P|;
for s:=0 to n-m do
begin
thoat = false; k:=1;
while k<=m and not thoat do
if P[k] <> T[s+k] then thoat = true
else k:=k+1
if not thoat then
print( " Mẫu xuất hiện tại vị trí",s);
12/12/2020
end; 11
2.3 PHÂN TÍCH THUẬT TOÁN ĐỆ QUY
5!
= 5*4! = 5*24 = 120
4!= 4*3!=4*6 =24
3!=3*2! =3*2 = 6
N!= n*(n-1)! 2!= 2*1!=2*1 = 2
0!=1 1!= 1*0! = 1*1 =1
0!= 0*(0-1)!
13
12/12/2020
2.3 PHÂN TÍCH THUẬT TOÁN ĐỆ QUY
Int giaithua(int n)
{
if n= 0
return 1
return (n*giaithua(n-1));
}
N=5
5! = 5*4!
= 5* 4*3!
= 5*4*3*2!
= 5*4*3*2*1!
= 5*4*3*2*1*0!
= 5*4*3*2*1*1 =120
2.3 PHÂN TÍCH THUẬT TOÁN ĐỆ QUY
2.3 PHÂN TÍCH THUẬT TOÁN ĐỆ QUY
1.
2.
3.
4.
5.
2.3 PHÂN TÍCH THUẬT TOÁN ĐỆ QUY
2.3 PHÂN TÍCH THUẬT TOÁN ĐỆ QUY
2.3 PHÂN TÍCH THUẬT TOÁN ĐỆ QUY
2.3 PHÂN TÍCH THUẬT TOÁN ĐỆ QUY
2.3 Phân tích thuật toán đệ quy
• Bài tập 1
12/12/2020 21
2.3 Phân tích thuật toán đệ quy
• Bài tập 1 HanoiTower(n, A, B, C)
// chuyển n đĩa ở A sang B.
C(1) = 1 {
C(n) = 2c(n-1) + 1 if (n = =1)// chuyển một đĩa ở
ta có 7 bước A sang B;
Với n = 1, 2, 3 ta có else {
C(1) = 1 = 2^1-1, HanoiTower(n-1,A, C, B);
C(2) = 2c(1) + 1 = 3 = 2^2 -1, chuyển một đĩa ở A sang B;
C(3) = 2c(2) + 1 = 7 = 2^3-1 HanoiTower(n-1, C, B, A);
C(n) = 2^n-1 }
thời gian: O(2^n). }
12/12/2020 22
2.3 Phân tích thuật toán đệ quy
• Bải tập 1 HanoiTower(n, A, B, C)
- Để chuyển n đĩa từ cọc A->C , // chuyển n đĩa ở A sang B.
trước tiên ta phải chuyển n-1 đĩa {
if (n = =1)// chuyển một đĩa ở
trên cùng (các đĩa nhỏ) từ cọc A-
A sang B;
>B , sau đó chuyển đĩa thứ n từ else {
cọc A->C . Cuối cùng lại chuyển HanoiTower(n-1,A, C, B);
n-1 đĩa từ cọc B sang cọc C. Ta chuyển một đĩa ở A sang B;
có C(n) =C(n-1) +1 HanoiTower(n-1, C, B, A);
- =2*C(n-1) +1 }
-> theo quy nạp , ta có C(n+1) }
=2C n +1 = 2.2^n-1-1 =2^n-1
-> L(n) =2^n-1 đc chứng minh vs
12/12/2020 23
2.3 Phân tích thuật toán đệ quy
• Bải tập 2 int UCLN( int n, int m)
// n và m là nguyên dương và n > m
{
if ( n % m = = 0)
return m;
else {
int k = n % m ;
return UCLN(m, k);
}
}
12/12/2020 24
2.3 Phân tích thuật toán đệ quy
• Bài tập 3 Int S(n)
{
Input số nguyên dương n
If n = 1
return 1
else
return S(n-1)+n*n*n;
}
12/12/2020 25
2.3 Phân tích thuật toán đệ quy
• Bài tập 4 procedure sx_noibot;
var
i,j,t: integer;
begin
for i:=n downto 1 do
for j:=2 to i do
if a[j-1] > a[j] then doicho(a[j],a[j-1]);
end;
Procedure Doicho(a,b)
tg: integer
Begin
tg:=a; a:=b; b:=tg
}
12/12/2020 26
2.4 Các chiến lược thiết kế giải thuật
12/12/2020 27
2.4.1. Chiến lược thiết kế giải thuật “ trực
tiếp”
12/12/2020 28
2.4.1. Chiến lược thiết kế giải thuật “ trực
tiếp”
12/12/2020 29
2.4.1. Chiến lược thiết kế giải thuật “ trực
tiếp”
12/12/2020 30
2.4.1. Chiến lược thiết kế giải thuật “ trực
tiếp”
12/12/2020 31
2.4.1. Chiến lược thiết kế giải thuật “ trực
tiếp”
12/12/2020 32
2.4.2. Chiến lược thiết kế giải thuật vét cạn
12/12/2020 33
2.4.2. Chiến lược thiết kế giải thuật vét cạn
Mặt hàng Trọng Giá trị
lượng
1 7 24
2 3 12
3 4 40
4 5 25
12/12/2020 34
2.4.2. Chiến lược thiết kế giải thuật vét cạn
Tập con Tổng trọng Tổng giá trị Tập con Tổng trọng Tổng giá trị
lượng lượng
Ø 0 0 {2,3} 7 52
{1} 7 24
{2,4} 8 37
{2} 3 12
{3,4} 9 65
{3} 4 40
{1,2,3} 14 Không khả thi
{4} 5 25
{1,2,4} 15 Không khả thi
{1,2} 10 36
{1,3} 11 Không khả thi {1,3,4} 16 Không khả thi
12/12/2020
{1,2,3,4} 19 Không khả thi35
2.4.2. Chiến lược thiết kế giải thuật vét cạn
12/12/2020 36