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