Tải bản đầy đủ (.ppt) (125 trang)

PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT ppt

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 (741.41 KB, 125 trang )

1
PHÂN TÍCH VÀ
THIẾT KẾ GIẢI THUẬT
ANALYS AND DESIGN
ALGORITHMS
1
2
Mục tiêu môn học

Cung c p ki n th c và k năng trong ấ ế ứ ỹ
vi c phân tích đ ph c t p tính toán ệ ộ ứ ạ
c a gi i thu t.ủ ả ậ

Tìm hi u các chi n thu t thi t k gi i ể ế ậ ế ế ả
thu tậ
2
3
Nội dung môn học
3
TT Nội dung
Số
tiết
Phân bổ thời gian
Ghi
chú

thuyết
Bài
Tập
Tự
học


1
Các khái niệm căn bản về phân tích độ
phức tạp giải thuật
6 6 0 10
2
Phân tích độ phức tạp của một số giải
thuật sắp thứ tự và tìm kiếm
8 8 3 20
3
Phân tích độ phức tạp của một số giải
thuật trên cấu trúc dữ liệu
9 9 3 20
4
Phân tích độ phức tạp của một số giải
thuật đồ thị
5 5 3 20
5
Các chiến lược thiết kế giải thuật
8 8 3 15
6
Vấn đề NP-đầy đủ
9 9 3 20
TỔNG
60 60 0 105
4
Đánh giá kết quả
1. Kiểm tra giữa kỳ: Tự luận

Điểm Kiểm tra giữa kỳ < 4  không được thi kết thúc môn 
học lại

2. Kiểm tra cuối kỳ: Tự luận
3. Bài tập lớn: làm các bài tập
4. Điểm Đề tài < 4  không được thi kết thúc môn  học lại
5. Thi kết thúc môn: Tự luận
6. Kiểm tra thường kỳ
4
5
Tài liệu học tập

Giáo trình:

[1] Cormen, T. H., Leiserson, C. E, and Rivest,
Introduction to Algorithms, The MIT Press,
1997.

Tham khảo:

[2] Sedgewick, Algorithms in C++, Addison-
Wesley, 1998

[3] Weiss, M.A, Data Structures and Algorithm
Analysis in C , The Benjamin/Cummings
Publishing, 1993
5
6
Nhắc nhở một số quy định

Đi học đúng giờ

Đeo thẻ SV


Không để chuông điện thoại reo trong giờ học

Không nghe điện thoại, nhắn tin trong giờ học

Không nói chuyện riêng, làm ồn khi nghe giảng

Mang đầy đủ tài liệu học tập của môn học (khi học LT và
TH): giáo trình, bài tập, tập chép bài (hoặc slide bài
giảng), usb để lưu bài tập

Phải làm bài tập ở nhà
 Nếu vi phạm: Nhắc nhở chung  Bị mời ra khỏi lớp 
Xóa tên khỏi môn học
6
7
Trao đổi thông tin
Địa chỉ mail:


Địa chỉ download tài liệu:

/>8
CÁC KHÁI NIỆM CĂN BẢN VỀ PHÂN
TÍCH ĐỘ PHỨC TẠP GIẢI THUẬT
Chương 1:
8
9
Nội dung


Thuật ngữ và Khái Niệm

Các định nghĩa về độ phức tạp

Kỹ thuật chia-để-trị và giải thuật đệ quy

Phương trình truy hồi và cách giải phương
trình truy hồi

Vài thí dụ minh hoạ về phân tích độ phức tạp
giải thuật
9

10
Thuật ngữ và khái niệm

Cấu trúc dữ liệu

Thuật toán

Độ phức tạp của thuật toán
10

11
Cấu trúc dữ liệu

(1) Sự tổ chức hợp lý của các thành phần dữ liệu,

(2) Tập các thao tác để truy cập các thành phần dữ liệu.


Ví dụ:

Mảng (Array)

Danh sách liên kết (Linked List)

Ngăn xếp (Stack)

Hàng đợi (Queue)

Cây (Tree)



(1) the logical arrangement of data elements, combined with

(2) the set of operations we need to access the elements.
11
12

Cấu trúc dữ liệu

Thuật toán

Độ phức tạp của thuật toán
12

Thuật ngữ và khái niệm
13
Thuật toán


Giải thuật hay thuật toán là dãy các thao tác xác
Giải thuật hay thuật toán là dãy các thao tác xác
định nhằm giải một bài toán nào đó.
định nhằm giải một bài toán nào đó.

Ví dụ: Tính tổng các số nguyên lẻ từ 1n
Input: Số nguyên n
Output: Tổng các số nguyên lẻ từ 1n

B1: S=0

B2: i=1

B3: Nếu i>n thì sang B7, ngược lại sang B4

B4: S=S+i

B5: i=i+2

B6: Quay lại B3

B7: Tổng cần tìm là S
13
14
Các đặc trưng của Thuật toán

INPUT: Có các bộ dữ liệu đầu vào thuộc một tập
hợp dữ liệu nào đó.


OUTPUT: Xuất dữ liệu đầu ra theo yêu cầu của bài
toán

Tính xác định: Mỗi bước của thuật toán hoàn toàn
xác định, được mô tả chính xác và cho kết quả xác
định

Tính dừng: Thuật toán phải kết thúc sau hữu hạn
bước.

Tính phổ dụng: Thuật toán áp dụng được cho mọi
bộ dữ liệu đầu vào thuộc tập hợp dữ liệu
14
15
Mối quan hệ của CTDL và thuật toán
CTDL + Thuật toán = Chương trình
15
16
Các phương pháp biểu diễn giải thuật
Các phương pháp biểu diễn giải thuật

Diễn đạt bằng ngôn ngữ tự nhiên
Diễn đạt bằng ngôn ngữ tự nhiên

Biểu diễn bằng sơ đồ khối
Biểu diễn bằng sơ đồ khối

Biểu diễn bằng Giả mã, thông thường dùng
Biểu diễn bằng Giả mã, thông thường dùng
ngôn ngữ tựa PASCAL;

ngôn ngữ tựa PASCAL;

Ngôn ngữ lập trình cấp cao (High programming
languages) như Pascal, C/C++ vv
16
17
Các phương pháp biểu diễn giải thuật
Các phương pháp biểu diễn giải thuật
Ví dụ: Tìm x trong dãy a1, a2, , an

Đầu vào: Số x, dãy n số a1, a2, , an

Đầu ra: Một giá trị logic true hoặc false

Search(x, a, n)

1 for i ←1 to n

2 do if ai= x

then return true

4 return false
17
18

Cấu trúc dữ liệu

Thuật toán


Độ phức tạp của thuật toán (algorithm complexity)
18

Thuật ngữ và khái niệm
19
Độ phức tạp của thuật toán

Độ phức tạp của giải thuật là chi phí về tài
nguyên của hệ thống (chủ yếu là thời gian, bộ
nhớ, CPU, đường truyền) cần thiết để thực hiện
giải thuật

Phân tích giải thuật (Analyzing of Algorithm) là
quá trình tìm ra những đánh giá về tài nguyên
cần thiết để thực hiện giải thuật
19
20
Thời gian thực hiện thuật toán
Độ phức tạp về thời gian của giải thuật:

Được qui về đếm số lệnh cần thực thi của giải
thuật

Đó là một hàm T(n) phụ thuộc vào kích thước n
của input

Coi như có một máy trừu tượng (abstract
machine) để thực hiện giải thuật
20
21


Thời gian tối thiểu để thực hiện giải thuật với
mọi kích thước đầu vào n gọi là thời gian chạy
tốt nhất(best-case)của giải thuật

Thời gian nhiều nhất để thực hiện giải thuật với
mọi kích thước đầu vào n được gọi là thời gian
chạy xấu nhất (worst-case) của giải thuật

Thời gian trung bình để thực hiện giải thuật với
mọi kích thước đầu vào n được gọi là thời gian
chạy trung bình (average case) của giải thuật
21
Độ phức tạp thời gian của thuật toán
22

Ví dụ Đánh giá độ phức tạp về thời gian của
giải thuật

Search(x, a, n)

1 for i ←1 to n

2 do if ai= x

3 then return true

4 return false
22
Độ phức tạp thời gian của thuật toán

23
Giải:

Gọi α, β và γ là thời gian thực hiện của phép
gán, phép so sánh và trả về của giải thuật

Trường hợp tốt nhất: Nếu a1= x, thìT(n) = α+β+ γ

Trường hợp xấu nhất : Nếu x {a1, a2, , an} thì ∉
T(n) = (n+1)α+ nβ+ γ
23
Độ phức tạp thời gian của thuật toán
24
Giải:

Trường hợp trung bình:

Tồn tại i, ai = x, thìT(n) = f(i) = iα+ iβ+ γ với xác
suất p(i) = 1/n

T(n) = [(α+β+ γ)+ (2α+ 2β+ γ)+ +(nα+ nβ+ γ)]/n
= [(n(n+1)(α+β)/2 +nγ]/n = (n+1)(α+β)/2 + γ

Lưu ý: T(n) là kỳ vọng (expected value) của
f(i)=αi +βi +γ trên không gian xác suất {1, 2, …,
n}
24
Độ phức tạp thời gian của thuật toán
25
Khung thức của sự phân tích


Bước 1: Đặc trưng hóa dữ liệu nhập và quyết định kiểu
phân tích thích hợp. Thông thường, ta tập trung vào việc

Chứng minh rằng thời gian tính toán luôn nhỏ hơn một
“cận trên” (upper bound), hay

Dẫn xuất ra thời gian chạy trung bình đối với một dữ liệu
nhập ngẫu nhiên.
♦ Bước 2: nhận dạng thao tác trừu tượng (abstract
operation) mà giải thuật dựa vào đó làm việc.
Thí dụ: thao tác so sánh trong giải thuật sắp thứ tự.
Tổng số thao tác trừu tượng thường tùy thuộc vào một vài
đại lượng.
♦ Bước 3: thực hiện phân tích toán học để tìm ra các giá trị
trung bình và giá trị xấu nhất của các đại lượng quan trọng.

×