Thông tin tài liệu
Giới thiệu
Độ tăng hàm
Big-O
Tính chất
Big-Theta
Tính chất
Little-o
Độ phức tạp
Xấu nhất
Trung bình
Tính đúng đắn
Điều kiện
Lặp
Ví dụ
Tóm tắt
1/35Tổ toán đại học FPT
05/03/14
Chương 2.2, 2.3 Kenneth H. Rosen
Xuân 2008
Đại học FPT
Discrete Mathematics I
độ phức tạp & tính
đúng đắn
complexity & correctness
độ phức tạp & tính
đúng đắn
complexity & correctness
Thuật toán
Algorithm
Thuật toán
Algorithm
Giới thiệu
Độ tăng hàm
Big-O
Tính chất
Big-Theta
Tính chất
Little-o
Độ phức tạp
Xấu nhất
Trung bình
Tính đúng đắn
Điều kiện
Lặp
Ví dụ
Tóm tắt
2/35Tổ toán đại học FPT
05/03/14
Thuật toán GIỚI THIỆU
Algorithm
INTRODUCTION
Giới thiệu
Chúng ta sẽ học:
•
Đánh giá về độ tăng của hàm
•
Big-O, big-Theta
•
Độ phức tạp thuật toán: Độ phức tạp thời gian
•
Trường hợp xấu nhất
•
Trường hợp trung bình
•
Tính đúng đắn thuật toán
Giới thiệu
Độ tăng hàm
Big-O
Tính chất
Big-Theta
Tính chất
Little-o
Độ phức tạp
Xấu nhất
Trung bình
Tính đúng đắn
Điều kiện
Lặp
Ví dụ
Tóm tắt
3/35Tổ toán đại học FPT
05/03/14
Thuật toán BIG-O
Algorithm BIG-O
Định nghĩa Definition
Định nghĩa Definition
Cho f(x) và g(x) là hai hàm số từ tập các số nguyên
hoặc số thực đến tập các số thực. Ta nói f(x) là O(g(x))
hoặc f(x) là big-O của g(x) hay f(x) ∈ O(g(x)) nếu tồn tại
hai hằng số C và k sao cho
|f(x)| ≤ C|g(x)| với mọi x ≥ k.
Cho f(x) và g(x) là hai hàm số từ tập các số nguyên
hoặc số thực đến tập các số thực. Ta nói f(x) là O(g(x))
hoặc f(x) là big-O của g(x) hay f(x) ∈ O(g(x)) nếu tồn tại
hai hằng số C và k sao cho
|f(x)| ≤ C|g(x)| với mọi x ≥ k.
Big-O
Với mỗi thuật toán số phép toán cần thực hiện sẽ là một
hàm số theo kích thước đầu vào. Chúng ta sẽ đánh giá
tính hiệu quả của mỗi thuật toán bằng cách khảo sát độ
tăng của hàm này.
Ta sẽ chỉ xét các hàm dương nên sẽ bỏ dấu | |
Giới thiệu
Độ tăng hàm
Big-O
Tính chất
Big-Theta
Tính chất
Little-o
Độ phức tạp
Xấu nhất
Trung bình
Tính đúng đắn
Điều kiện
Lặp
Ví dụ
Tóm tắt
4/35Tổ toán đại học FPT
05/03/14
Thuật toán BIG-O
Algorithm BIG-O
Ví dụ Example
Chứng minh f(n) = 30n + 8 là big-O của g(n) = n.
Ta cần chứng minh ∃c,k: ∀n > k: 30n + 8 ≤ cn.
Lấy c = 31, k = 8. Khi đó
với n > k = 8,
cn = 31n = 30n + n > 30n+8
n>k=8 →
n
30n+8
cn =
31n
30n+8 ∈O(n)
Giá trị cụ thể của c và k
gọi là bằng chứng. Ta có
thể tìm nhiều bằng chứng.
Chẳng hạn:
c = 32, k = 9
Big-O
Giới thiệu
Độ tăng hàm
Big-O
Tính chất
Big-Theta
Tính chất
Little-o
Độ phức tạp
Xấu nhất
Trung bình
Tính đúng đắn
Điều kiện
Lặp
Ví dụ
Tóm tắt
5/35Tổ toán đại học FPT
05/03/14
giai thừa
Thuật toán BIG-O
Algorithm BIG-O
Khái niệm big-O được sử dụng để đánh giá số phép
toán cần dùng để giải một bài toán theo một thủ tục hoặc
một thuật toán cụ thể. Các hàm số cơ bản thường được
dùng để so sánh là:
1, log(log(n)), log(n), log
k
(n), n
1/k
, n, nlog(n), n
k
, a
n
, n!, n
n
hằng
logarit đa thức
mũ
-10
0
10
20
30
40
50
60
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
n
1
log(n)
n^2
2^n
n!
Big-O
Giới thiệu
Độ tăng hàm
Big-O
Tính chất
Big-Theta
Tính chất
Little-o
Độ phức tạp
Xấu nhất
Trung bình
Tính đúng đắn
Điều kiện
Lặp
Ví dụ
Tóm tắt
6/35Tổ toán đại học FPT
05/03/14
Thuật toán BIG-O
Algorithm BIG-O
Định lí Theorem
Định lí Theorem
•
a
n
x
n
+ a
n -1
x
n -1
+ …+ a
1
x + a
0
∈ O(x
n
) (a
0
, a
1
, …, a
n
là
các số thực)
•
f ∈ O(g) ∧ g ∈ O(h) → f ∈ O(h)
•
af, f
1-b
, (log
b
f)
a
∈ O(f) với mọi a, b ∈ R và b ≥ 0.
•
f
1
∈O(g
1
) ∧ f
2
∈O(g
2
) → f
1
f
2
∈ O(g
1
g
2
)
•
f
1
∈O(g
1
) ∧ f
2
∈O(g
2
) → f
1
+f
2
∈ O(g
1
+g
2
)
•
O(g
1
+g
2
) = O(max(g
1
,g
2
)) = O(g
1
) nếu g
2
∈O(g
1
)
•
a
n
x
n
+ a
n -1
x
n -1
+ …+ a
1
x + a
0
∈ O(x
n
) (a
0
, a
1
, …, a
n
là
các số thực)
•
f ∈ O(g) ∧ g ∈ O(h) → f ∈ O(h)
•
af, f
1-b
, (log
b
f)
a
∈ O(f) với mọi a, b ∈ R và b ≥ 0.
•
f
1
∈O(g
1
) ∧ f
2
∈O(g
2
) → f
1
f
2
∈ O(g
1
g
2
)
•
f
1
∈O(g
1
) ∧ f
2
∈O(g
2
) → f
1
+f
2
∈ O(g
1
+g
2
)
•
O(g
1
+g
2
) = O(max(g
1
,g
2
)) = O(g
1
) nếu g
2
∈O(g
1
)
Tính chất
Giới thiệu
Độ tăng hàm
Big-O
Tính chất
Big-Theta
Tính chất
Little-o
Độ phức tạp
Xấu nhất
Trung bình
Tính đúng đắn
Điều kiện
Lặp
Ví dụ
Tóm tắt
7/35Tổ toán đại học FPT
05/03/14
Ví dụ Example
Đánh giá hàm số
Thuật toán BIG-O
Algorithm BIG-O
∑
1=
=
n
i
inf )(
Ta có
2
1+
==
∑
1=
)(
)(
nn
inf
n
i
2
+
2
=
2
nn
∈ O(n
2
)
hoặc ∈ n
2
/2 + O(n)
Bài tập: Chứng minh
)(log)( 1+=
1
=
∑
1=
On
i
nf
n
i
Tính chất
Giới thiệu
Độ tăng hàm
Big-O
Tính chất
Big-Theta
Tính chất
Little-o
Độ phức tạp
Xấu nhất
Trung bình
Tính đúng đắn
Điều kiện
Lặp
Ví dụ
Tóm tắt
8/35Tổ toán đại học FPT
05/03/14
Thuật toán BIG-
THETA Algorithm BIG-
THETA
Khi f ∈ O(g) thì hàm f bị chặn trên bởi g. Dưới đây cung
cấp một vài cách đánh giá khác về độ tăng của hàm
Định nghĩa Definition
Định nghĩa Definition
Cho f(x) và g(x) là hai hàm số từ tập các số nguyên hoặc
số thực đến tập các số thực. Ta nói
•
f(x) là Ω(g(x)) hoặc f(x) là big-Omega của g(x) nếu tồn
tại hai hằng số C > 0 và k sao cho
|f(x)| ≥ C|g(x)| với mọi x ≥ k.
•
f(x) là Θ(g(x)) hoặc f(x) là big-Theta của g(x) nếu f ∈
O(g) và f ∈ Ω(g) tức là tồn tại các hằng số C
1
, C
2
, k > 0
sao cho
C
1
|g(x)| ≤ |f(x)| ≤ C
2
|g(x)| với mọi x ≥ k.
Cho f(x) và g(x) là hai hàm số từ tập các số nguyên hoặc
số thực đến tập các số thực. Ta nói
•
f(x) là Ω(g(x)) hoặc f(x) là big-Omega của g(x) nếu tồn
tại hai hằng số C > 0 và k sao cho
|f(x)| ≥ C|g(x)| với mọi x ≥ k.
•
f(x) là Θ(g(x)) hoặc f(x) là big-Theta của g(x) nếu f ∈
O(g) và f ∈ Ω(g) tức là tồn tại các hằng số C
1
, C
2
, k > 0
sao cho
C
1
|g(x)| ≤ |f(x)| ≤ C
2
|g(x)| với mọi x ≥ k.
g ∈ O(f)
f và g cùng bậc
Big-Theta
Giới thiệu
Độ tăng hàm
Big-O
Tính chất
Big-Theta
Tính chất
Little-o
Độ phức tạp
Xấu nhất
Trung bình
Tính đúng đắn
Điều kiện
Lặp
Ví dụ
Tóm tắt
9/35Tổ toán đại học FPT
05/03/14
Thuật toán BIG-
THETA Algorithm BIG-
THETA
Định lí Theorem
Định lí Theorem
•
a
n
x
n
+ a
n -1
x
n -1
+ …+ a
1
x + a
0
∈ Θ(x
n
) (ở đây a
0
, a
1
, …,
a
n
là các số thực và a
n
≠ 0)
•
f ∈ Θ(g) ∧ g ∈ Θ(h) → f ∈ Θ(h)
•
af ∈ Θ(f) với mọi a ≠ 0
•
f
1
∈ Θ(g
1
) ∧ f
2
∈ Θ(g
2
) → f
1
f
2
∈ Θ(g
1
g
2
)
•
f
1
∈ Θ(g
1
) ∧ f
2
∈ Θ(g
2
) → f
1
+ f
2
∈ Θ(g
1
+g
2
)
•
Θ(g
1
+g
2
) = Θ(max(g
1
,g
2
)) = Θ(g
1
) nếu g
2
∈O(g
1
)
•
a
n
x
n
+ a
n -1
x
n -1
+ …+ a
1
x + a
0
∈ Θ(x
n
) (ở đây a
0
, a
1
, …,
a
n
là các số thực và a
n
≠ 0)
•
f ∈ Θ(g) ∧ g ∈ Θ(h) → f ∈ Θ(h)
•
af ∈ Θ(f) với mọi a ≠ 0
•
f
1
∈ Θ(g
1
) ∧ f
2
∈ Θ(g
2
) → f
1
f
2
∈ Θ(g
1
g
2
)
•
f
1
∈ Θ(g
1
) ∧ f
2
∈ Θ(g
2
) → f
1
+ f
2
∈ Θ(g
1
+g
2
)
•
Θ(g
1
+g
2
) = Θ(max(g
1
,g
2
)) = Θ(g
1
) nếu g
2
∈O(g
1
)
Tính chất
Giới thiệu
Độ tăng hàm
Big-O
Tính chất
Big-Theta
Tính chất
Little-o
Độ phức tạp
Xấu nhất
Trung bình
Tính đúng đắn
Điều kiện
Lặp
Ví dụ
Tóm tắt
10/35Tổ toán đại học FPT
05/03/14
Thuật toán BIG-
THETA Algorithm BIG-
THETA
Ví dụ Example
Cho 2 hàm số
Chứng minh f ∈ Θ(g)
f(n) = log(1) + log(2) + …+ log(n) g(n) = nlog(n)
f (n) ≤ g(n) ∀ n ≥ 1
⇒ f (n) ∈ O(g(n))
2f(n) = log(1) + log(2) + …+ log(n)
+ log(n) + log(n-1) +…+ log(1)
= log(1.n) + log(2(n-1)) + … + log(n.1)
≥ g(n) ∀ n ≥ 1
⇒ f (n) ∈ Ω(g(n))
Vậy f (n) ∈ Θ(g(n))
Tính chất
[...]... là có • độ phức tạp hằng nếu có dạng O(1) độ phức tạp hằng nếu có dạng O(1) • độ phức tạp logarit nếu có dạng O(log n) độ phức tạp logarit nếu có dạng O(log n) • độ phức tạp tuyến tính nếu có dạng O(n) độ phức tạp tuyến tính nếu có dạng O(n) • độ phức tạp đa thức nếu có dạng O(naa),a ≥ 1 độ phức tạp đa thức nếu có dạng O(n), a ≥ 1 • độ phức tạp hàm mũ nếu có dạng O(ann),a > 1 độ phức tạp hàm mũ nếu... 20/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt ĐỘ PHỨC TẠP COMPLEXITY Ví dụ Example Độ phức tạp của thuật toán tìm kiếm tuyến tính trong trường hợp xấu nhất là 2n + 2 = Θ(n) (độ phức tạp tuyến tính) Nếu coi x có mặt trong danh sách và khả năng x ở mỗi vị trí là như nhau thì độ phức tạp. .. 13/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 05/03/14 ĐỘ PHỨC TẠP COMPLEXITY Khi có một thuật toán chúng ta sẽ quan tâm đến • Tính đúng đắn: kết quả chính xác không? • Độ phức tạp: thuật toán có hiệu quả không? Định nghĩa Định nghĩa Definition Definition Độ phức tạp của thuật. .. > 1 • độ phức tạp giai thừa nếu có dạng O(n!) độ phức tạp giai thừa nếu có dạng O(n!) Ví dụ Example Thuật toán tìm giá trị lớn nhất trong dãy các số nguyên có độ phức tạp tuyến tính 05/03/14 Tổ toán đại học FPT 17/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 05/03/14 ĐỘ PHỨC TẠP COMPLEXITY... → độ phức tạp thuật toán Θ(n) 05/03/14 Tổ toán đại học FPT 16/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt ĐỘ PHỨC TẠP COMPLEXITY Định nghĩa Định nghĩa Definition Definition Một thuật toán với kích thước đầu vào n gọi là có Một thuật toán với kích thước đầu vào n gọi là có • độ phức. .. ra kết quả đúng, tức là xác lập tính đúng đắn bộ phận quả đúng, tức là xác lập tính đúng đắn bộ phận ••Chứng tỏ thuật toán kết thúc Chứng tỏ thuật toán kết thúc Tổ toán đại học FPT 24/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 05/03/14 TÍNH ĐÚNG ĐẮN CORRECTNESS Định nghĩa Định... Definition Một thuật toán gọi là đúng đắn nếu với mọi đầu vào Một thuật toán gọi là đúng đắn nếu với mọi đầu vào khả dĩ, nó cho đầu ra đúng Việc chứng minh tính đúng khả dĩ, nó cho đầu ra đúng Việc chứng minh tính đúng đắn của thuật toán gồm hai phần: đắn của thuật toán gồm hai phần: ••Chứng tỏ rằng nếu thuật toán kết thúc thì nó cho ra kết Chứng tỏ rằng nếu thuật toán kết thúc thì nó cho ra kết quả đúng, tức... tạp của thuật toán tìm kiếm tuyến tính trong trường hợp trung bình là (2.1 + 1) + (2.2 + 1) + …+ (2n + 1) n 05/03/14 Tổ toán đại học FPT = n + 2 = Θ(n) 21/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 05/03/14 ĐỘ PHỨC TẠP COMPLEXITY Ví dụ Example Xác định độ phức tạp của thuật toán... Definition Definition • Độ phức tạp trong trường hợp xấu nhất là độ phức tạp Độ phức tạp trong trường hợp xấu nhất là độ phức tạp tính trong trường hợp phải dùng tối đa các phép toán để tính trong trường hợp phải dùng tối đa các phép toán để giải bài toán theo thuật toán đang xét, ứng với một số đầu giải bài toán theo thuật toán đang xét, ứng với một số đầu vào nào đó có kích thước xác định vào nào đó có kích... thước xác định • Độ phức tạp trong trường hợp trung bình là độ phức tạp Độ phức tạp trong trường hợp trung bình là độ phức tạp tính số trung bình các phép toán để giải bài toán trên toàn tính số trung bình các phép toán để giải bài toán trên toàn bộ các giá trị đầu vào có kích thước xác định bộ các giá trị đầu vào có kích thước xác định ••Những bài toán giải được bằng một thuật toán có độ Những bài toán . I
độ phức tạp & tính
đúng đắn
complexity & correctness
độ phức tạp & tính
đúng đắn
complexity & correctness
Thuật toán
Algorithm
Thuật.
có độ phức tạp tuyến tính.
Độ phức tạp
Giới thiệu
Độ tăng hàm
Big-O
Tính chất
Big-Theta
Tính chất
Little-o
Độ phức tạp
Xấu nhất
Trung bình
Tính
Ngày đăng: 05/03/2014, 11:20
Xem thêm: Thuật toán: Độ phức tạp và tính đúng đắn pptx, Thuật toán: Độ phức tạp và tính đúng đắn pptx