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

PHÂN TÍCH THIẾT KẾ 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 (570.8 KB, 34 trang )

PHÂN TÍCH THIẾT KẾ
THUẬT TOÁN
1
GIỚI THIỆU MÔN HỌC
 Tên học phần: Phân tích thiết kế thuật toán
 Tên tiếng Anh: Design and Analysis of Algorithms
 Số tín chỉ: 3LT + 1TH
 Hình thức đánh giá:
 Thực hành (30%): Bài tập
 Lý thuyết(70%): Thi viết
2
MỤC TIÊU MÔN HỌC
 Trang bị cho sinh viên
 Hiểu đƣợc về thuật toán: Khái niệm, tính chất, cách biểu
diễn, độ phức tap.
 Biết các kiến thức toán học cơ sở cho việc đánh giá độ phức
tạp của tuật toán
 Áp dụng đƣợc các phƣơng pháp thiết kế để xây dựng các
thuật toán, đồng thời biết cách đánh giá độ phức tạp của
thuật toán.
3
NỘI DUNG
 Chƣơng 1: Giới thiệu thuật toán
 Chƣơng 2: Kỹ thuật đánh giá thuật toán
 Chƣơng 3: Kỹ thuật thiết kế thuật toán
 Chƣơng 4 (option): Một số vấn đề mở rộng và nâng cao
4
TÀI LIỆU THAM KHẢO
 Cẩm nang thuật toán – cuốn 1, Robert Sedgewich –
Trần Đan Thƣ
 Cấu trúc dữ liệu và thuật toán, Đại học Công nghệ


thông tin.
 Lê Minh Hoàng, Giải thuật và Lập trình, Đại học Sƣ
phạm Hà Nội, 2002
 Samir Khuller, Design and Analysis Algorithms:
Lecture note, 2012
5
CHƢƠNG 1
GiỚI THIỆU VỀ THUẬT TOÁN
6
NỘI DUNG
 1. Khái niệm về thuật toán
 2. Độ phức tạp của thuật toán
 2.1. Ký hiệu tiệm cận: Big-O
 2.2. Lớp các hàm thông dụng
 3. Phân loại sơ bộ các đoạn mã thuật toán.
 3.1 Không tính toán lặp
 3.2 Có tính toán lặp
7
NỘI DUNG
 1. Khái niệm về thuật toán
 2. Độ phức tạp của thuật toán
 2.1. Ký hiệu tiệm cận: Big-O
 2.2. Lớp các hàm thông dụng
8
1. KHÁI NIỆM VỀ THUẬT TOÁN
 Thuật toán là gì?
 Tập hợp hữu hạn các hƣớng dẫn rõ ràng để giải quyết một
bài toán (vấnđề).
 Mở rộng (máy tính): một dãy hữu hạn các bƣớc không mập
mờ và có thể thực thi đƣợc, quá trình hành động theo các

bƣớc này phải dừng và cho đƣợc kết quả nhƣ mong muốn.
 Tính chất cơ bản của thuật toán:
 Xác định = không mập mờ+thực thi đƣợc
 Hữu hạn
 Đúng
9
1. KHÁI NIỆM VỀ THUẬT TOÁN
 Các dạng diễn đạt thuật toán
 Ngôn ngữ tự nhiên
 Lƣu đồ (Sơ đồ khối)
 Mã giả
 Ngôn ngữ lập trình
10
Dữ kiện vào
Quá trình tính toán
Một dãy các bước tính toán
Một dãy số
Thuật toán sắp xếp
11
1. KHÁI NIỆM VỀ THUẬT TOÁN
 Ví dụ: Một lớp học cần chọn lớp trƣởng theo các bƣớc:
 1. Lập danh sách sinh viên
 2. Sắp thứ tự
 3. Chọn ngƣời đứng đầu làm lớp trƣởng
 Danh sách cần gì?
 Sắp theo thứ tự nào? (tăng giảm, tiêu chí nào)
 Nếu trùng tiêu chí thì giải quyết ra sao?
12
1. KHÁI NIỆM THUẬT TOÁN
 Sửa lại:

a) Lập danh sách theo: họ tên, ngày tháng năm sinh, điểm các môn,
điểm trung bình cuối năm.
b) Sắp xếp theo ĐTB giảm. Nếu ĐTB bằng nhau  cùng hạng.
c) Nếu có 01HS đứng đầu chọn, ngƣợc lại chọn ngƣời có điểm toán
cao nhất, nếu không chọn đƣợc thì bốcthăm.
 Phân biệt mập mờ và lựa chọn có quyết định:
 Mập mờ là thiếu thông tin hoặc có nhiều lựa chọn nhƣng không
đủ điều kiện quyết định, ví dụ:bƣớc 1, 2.
 Lựa chọn có quyết định là hoàn toàn xác định duy nhất trong
điều kiện cụ thể của vấn đề,ví dụ bƣớc c.
13
1. KHÁI NIỆM VỀ THUẬT TOÁN
 Đặc trƣng của thuật toán
 Xác định đầu vào/ ra
 Tính hiệu quả: khối lƣợng tính toán, không gian, thời
gian
Giải quyết một bài toán
Có nhiều thuật toán. Chọn thuật toán nào ?
Mô hình hóa
Lập chƣơng trình
Viết thuật toán
14
PHÂN TÍCH THUẬT TOÁN
 Sự cần thiết của phân tích và đánh giá thuật toán
 Lựa chọn một thuật toán tốt nhất trong các thuật toán để cài
đặt chƣơng trình giải quyết bài toán đặt ra
 Cải tiến thuật toán hiện có để có đƣợc thuật toán tốt hơn
 Một thuật toán được xem là tốt nếu nó đạt được các
tiêu chuẩn sau
 Thực hiện đúng

 Tốn ít bộ nhớ
 Thực hiện nhanh
Trong khuôn khổ của môn học này, chúng ta chỉ quan tâm
đến tiêu chuẩn thực hiện nhanh
15
PHÂN TÍCH THUẬT TOÁN
 Thời gian thực hiện chương trình: là một hàm của
kích thƣớc dữ liệu vào.
 Ký hiệu: T(n) với n là kích thƣớc dữ liệu vào
 Ví dụ: Chƣơng trình tính tổng của n số có thời gian thực
hiện là T(n) = Cn với C là hằng số
 Thời gian thực hiện chƣơng trình là một hàm không âm
16
PHÂN TÍCH THUẬT TOÁN
 Đơn vị đo T(n) không phải là đơn vị đo thời gian bình
thƣờng nhƣ giờ, phút, giây, … mà thƣờng đƣợc xác định
bởi số các lệnh đƣợc thực hiện trong máy tính
 Ví dụ: Khi ta nói thời gian thực hiện chƣơng trình là
T(n) = Cn có nghĩa là chƣơng trình ấy cần có Cn chỉ thị.
17
PHÂN TÍCH THUẬT TOÁN
 Ví dụ:
Xem xét đoạn mã giả sau:
sum = 0;
for(i= 0; i < n; i++)
sum = sum + i;
return sum
T(n) = ?
18
PHÂN TÍCH THUẬT TOÁN

 Thời gian thực hiện trong trƣờng hợp xấu nhất
 Thời gian thực hiện chƣơng trình không chỉ phụ thuộc và
kích thƣớc dữ liệu mà còn phụ thuộc vào tính chất của dữ liệu
 Vì vậy ta thƣờng coi T(n) là thời gian thực hiện chƣơng
trình trong trƣờng hợp xấu nhất, tức là T(n) là thời gian
lớn nhất để thực hiện chƣơng trình đối với mọi dữ liệu có
cùng kích thƣớc n.
19
PHÂN TÍCH THUẬT TOÁN
 Làm sao xác định “thời gian thực hiện chƣơng trình
T(n)” ?
 1. Hƣớng tiệm cận
 Thực nghiệm
 Lý thuyết
 2. Công cụ toán học (Chƣơng 2)
 Kỹ thuật sơ cấp
 Hàm sinh
 Hoán vị và nghịch thế
20
HƢỚNG TIẾP CẬN THỰC NGHIỆM
 Các bƣớc thực hiện
 1. Viết chƣơng trình cài đặt
 2. Thực thi chƣơng trình với nhiều bộ dữ liệu
 3. Đo và thống kê thời gian
 4. Xấp xỉ biểu đồ
 Hạn chế
 1. Cần phải cài đặt chƣơng trình và đo thời gian
 2. Bộ dữ liệu không thể đặc trƣng hết
 3. Khó so sánh hai thuật giải
21

HƢỚNG TIẾP CẬN LÝ THUYẾT
 Tính toán thời gian, bộ nhớ, … cần thiết của mỗi thuật
toán dựa theo độ lớn của dữ liệu đầu vào
 Ƣu điểm:
 Không phụ thuộc vào ngôn ngữ lập trình, loại máy tính
 Biết đƣợc tính hiệu quả của thuật toán đối với các dữ liệu có
kích thƣớc lớn
22
NỘI DUNG
 1. Khái niệm về thuật toán
 2. Độ phức tạp của thuật toán
 2.1. Ký hiệu tiệm cận: Big-O
 2.2. Lớp các hàm thông dụng
23
2. ĐỘ PHỨC TẠP CỦA THUẬT TOÁN
2.1 KÝ HIỆU TIỆM CẬN: BIG-O
 Cho một hàm T(n), T(n) được gọi là có độ phức tạp
f(n) nếu tồn tại các hằng số C, n
0
sao cho:
T(n) ≤ Cf(n) với  n  n
0
Ký hiệu: T(n) = O(f(n)) ( Ý nghĩa: T(n)  O(f(n)) )
(Hàm f(n) là chặn trên của hàm T(n))
Chú ý:
O(Cf(n)) = O(f(n)) với C là hắng số
O(C) = O(1)
24
2. ĐỘ PHỨC TẠP CỦA THUẬT TOÁN
2.1 KÝ HIỆU TIỆM CẬN: BIG-O

25

×