Tải bản đầy đủ (.pdf) (78 trang)

Kỹ thuật đánh giá thuật toán

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (630.19 KB, 78 trang )

CHƯƠNG 2
KỸ THUẬT ĐÁNH GIÁ THUẬT TOÁN
1
NỘI DUNG
 1. Công cụ sơ cấp
 2. Hàm sinh
 3. Nhóm Hoán vị
 4. Định lý Master
2
NỘI DUNG
 1. Công cụ sơ cấp
 1.1 Phƣơng pháp chung
 1.2 Phân loại sơ bộ các đoạn mã thể hiện thuật toán
 1.3 Vấn đề rẽ nhánh
 2. Hàm sinh
 3. Nhóm hoán vị
 4. Định lý Master
3
1. CÔNG CỤ SƠ CẤP
1.1 PHƢƠNG PHÁP CHUNG
 Phân tích trực tiếp đoạn mã và sử dụng các kỹ thuật:
 Phép đếm
 Tính tổng hữu hạn
 Xét dấu hàm
 …
 Phép toán chủ yếu trong các đoạn mã là phép gán và so
sánh
 Phƣơng pháp này không giải quyết đƣợc hết các trƣờng
hợp tổng quát
4
Xác định số phép toán chủ yếu


1. CÔNG CỤ SƠ CẤP
1.1 PHƢƠNG PHÁP CHUNG
 Ví dụ: Xét đoạn mã sau:
5
sum = 0;
i = 1;
while (i ≤ n)
{
j = n-i*i;
while ( j ≤ i*i )
{
sum = sum +i*j;
j = j +1;
}
i = i +1;
}
Tính số phép gán ?
Tính số phép so sánh ?
1. CÔNG CỤ SƠ CẤP
1.1 PHƢƠNG PHÁP CHUNG
 Ví dụ: Tính số phép gán
6
sum = 0;
i = 1;
while (i ≤ n)
{
j = n-i*i;
while ( j ≤ i*i )
{
sum = sum +i*j;

j = j +1;
}
i = i +1;
}
1 gán
1 gán
n gán

i
gán

i
gán
n gán
P
i
1. CÔNG CỤ SƠ CẤP
1.1 PHƢƠNG PHÁP CHUNG
 Ví dụ: Tính số phép gán
Số phép gán
Vòng lặp của đoạn P
i
đƣợc thực hiện chỉ khi
7










n
i
i
n
i
i
n
i
i
n
n
nPGann
1
1
1
222
222
)(11


2
222
n
iiin 
1. CÔNG CỤ SƠ CẤP
1.1 PHƢƠNG PHÁP CHUNG
 Ví dụ: Tính số phép gán

Từ đó:
8
















2
12
2
0
2
1)(
2
0
22
2
222
2

n
ikhini
n
ikhi
n
ikhiini
n
ikhi
i
i


1. CÔNG CỤ SƠ CẤP
1.1 PHƢƠNG PHÁP CHUNG
 Ví dụ: Tính số phép gán
Số phép gán
9
 
 
 





















































n
n
i
n
n
i
n
n
i
n
n
i
i
n
i
i
inn
nin
n

2
2
2
2
2
2
2
1
221222
12222
2222

1. CÔNG CỤ SƠ CẤP
1.1 PHƢƠNG PHÁP CHUNG
 Ví dụ: Tính số phép gán
Số phép gán
10
 
 
 





























































2
2
2

2
411
2
222
2211
2
222

n
n
n
n
nn
in
n
nn
n
n
i
1. CÔNG CỤ SƠ CẤP
1.2 PHÂN LOẠI SƠ BỘ CÁC ĐOẠN MÃ THỂ HIỆN THUẬT GIẢI
 Không có tính toán lặp
 Tùy tình huống
 Có tính toán lặp
 Loại 1: Số lần lặp xác định tƣờng minh
(thể hiện rõ ràng trong đoạn mã)
 Loại 2: Số lần lặp không tƣờng minh
 Có thể tính toán xác định. Ví dụ: Tổng n số nguyên
 Biến ngẫu nhiên phụ thuộc dữ liệu nhập. Ví dụ: Tìm số lớn nhất
11
1. CÔNG CỤ SƠ CẤP
1.2 PHÂN LOẠI SƠ BỘ CÁC ĐOẠN MÃ THỂ HIỆN THUẬT GIẢI
 Ví dụ:
12
i = 1; {1 gán}
ret = 0; { 1 gán}
while (i ≤ n) {n+1 ss}
{

j = 1; {n gán}
k = 1; {n gán}
while ( j ≤ i ) {
i
+1 ss}
{
ret = ret +i*j; {
i
gán}
k = k+2; {
i
gán}
j = j +k; {
i
gán}
}
i = i +1; {n gán}
}
 Vòng lặp ngoài thì số vòng lặp
tƣờng minh: n lần
 Vòng lặp trong số vòng lặp không
xác định một cách hiển nhiên
1. CÔNG CỤ SƠ CẤP
1.2 PHÂN LOẠI SƠ BỘ CÁC ĐOẠN MÃ THỂ HIỆN THUẬT GIẢI
 Ví dụ:
13
i = 1; {1 gán}
ret = 0; { 1 gán}
while (i ≤ n) {n+1 ss}
{

j = 1; {n gán}
k = 1; {n gán}
while ( j ≤ i ) {
i
+1 ss}
{
ret = ret +i*j; {
i
gán}
k = k+2; {
i
gán}
j = j +k; {
i
gán}
}
i = i +1; {n gán}
}
 Gọi  là số lần lặp của vòng while
trong
 Việc xác định số phép gán, số phép
so sánh đƣợc qui về tính
 Nhận xét: j là tổng các số lẽ 1, 3, 5,

 j là số chính phƣơng


n
i
i

1

1. CÔNG CỤ SƠ CẤP
1.2 PHÂN LOẠI SƠ BỘ CÁC ĐOẠN MÃ THỂ HIỆN THUẬT GIẢI
 Ví dụ:
14
i = 1; {1 gán}
ret = 0; { 1 gán}
while (i ≤ n) {n+1 ss}
{
j = 1; {n gán}
k = 1; {n gán}
while ( j ≤ i ) {
i
+1 ss}
{
ret = ret +i*j; {
i
gán}
k = k+2; {
i
gán}
j = j +k; {
i
gán}
}
i = i +1; {n gán}
}

i

là số phần tử của tập
Số vòng lặp không tƣờng minh
nhƣng xác định
 
irvàrr 
2
1/
 
i
i


1. CÔNG CỤ SƠ CẤP
1.3 VẤN ĐỀ RẼ NHÁNH
 Không rẽ nhánh
 Rẽ nhánh
 Rẽ nhánh tất định
 Cân bằng các nhánh rẽ
 Độ lệch tính đƣợc
 Không phụ thuộc vào dữ liệu ngẫu nhiên
 Rẽ nhánh phụ thuộc tính ngẫu nhiên
 Dùng xác xuất
15
1. CÔNG CỤ SƠ CẤP
1.3 VẤN ĐỀ RẼ NHÁNH
 Ví dụ:
16
i = 1; {1 gán}
max = a[0]; { 1 gán}
while (i < n) {n ss}

{
if (max < a[i]) {n-1 ss}
{
max = a[i]; {
i
gán}
}
i = i +1; {n-1 gán}
}

i
là biến ngẫu nhiên lấy giá trị
rời rạc {0, 1, …, n-1}
BÀI TẬP
 2.1.1 Tính số phép so sánh của ví dụ trong slide 5.
Từ đó xác định thời gian thực hiện của thuật toán đó.
 2.1.2 Xác định thời gian thực thi của đoạn mã sau:
17
sum = 0;
i = 1;
while (i ≤ n)
{
j = i;
while ( j > 0 )
{
sum = sum + 1;
j = j/2;
}
i = i +1;
}

NỘI DUNG
 1. Công cụ sơ cấp
 2. Hàm sinh (Generating function)
 3. Nhóm hoán vị
 4. Định lý Master
18
NỘI DUNG
 1. Công cụ sơ cấp
 2. Hàm sinh (Generating function)
 2.1 Giới thiệu về hàm sinh
 2.2 Tính chất của hàm sinh
 2.3 Hàm sinh của dãy phân bố xác suất
 2.4 Áp dụng
 3. Nhóm hoán vị
 4. Định lý Master
19
2. HÀM SINH
2.1 GIỚI THIỆU VỀ HÀM SINH
 Định nghĩa:
Hàm sinh của dãy vô hạn là chuỗi lũy thừa
Ký hiệu:
Sự tƣơng ứng giữa một dãy số và hàm sinh:
20
 

0n
n
a





0
)(
n
n
n
zazf
 
, ,,
210
0
aaaa
n
n



)(
2
210
0




zazaazazf
n
n
n

 
)(
0
zfa
n
n



2. HÀM SINH
2.1 GIỚI THIỆU VỀ HÀM SINH
 Ví dụ:
21
1 0.01, 0,0,1
0 0.00, 0,0,0
2
2


zz
zz




0
2
1.11, 1,1,1
n
n

zzz
1
1
1
0






zkhi
z
z
n
n
Bán kính hội tụ của chuỗi
2. HÀM SINH
2.1 GIỚI THIỆU VỀ HÀM SINH
 Ví dụ: Dãy {a
n
} nhƣ sau
Y/c: Xác định hàm sinh của {a
n
}
22







172
1
1
0
naa
a
nn




0
)(
n
n
n
zazf
2. HÀM SINH
2.1 GIỚI THIỆU VỀ HÀM SINH
23















0
1
0
)(
n
n
n
n
n
n
zazazzzf















11
1
2
7
)(
k
k
k
k
k
k
z
a
zazzf






11
2
7
2
1
)(
k
k
k

k
k
zzazzf



















11
2
7
2
1
)(
1
00

1 k
k
k
k
k
zaazazzf



















1
2
7
2
1

)(
0
0
0 k
k
k
k
k
zazazzf
2. HÀM SINH
2.1 GIỚI THIỆU VỀ HÀM SINH
24
 










1
2
7
)(
2
1
)(

0
0
k
k
zazfzzf
Vì:
1
1
1
0






zkh i
z
z
n
n
Nên:
 









 1
1
1
2
7
)(
2
1
)(
0
z
azfzzf















 1
1

1
2
7
2
1
)(
2
1
0
z
azfz















z
zfz
1
1

2
7
3)(
2
1
2. HÀM SINH
2.1 GIỚI THIỆU VỀ HÀM SINH
25
 
  
zz
zf
zzz
zf
zzz
zf
z
zf
z































1
7
12
8
)(
12
2
1
1
7
12

6
)(
121
7
12
6
)(
12
7
3)(
2
12

×