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

Lý thuyết 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 (929.47 KB, 67 trang )

TOÁN RỜI RẠC

Gvc, ThS. Võ Minh Đức

Giảng viên: VÕ MINH ĐỨC
Mobile 0919473389
Email:
Website:


BÀI GIẢNG

TOÁN RỜI RẠC

CHƯƠNG I . THUẬT TOÁN

Giảng viên: VÕ MINH ĐỨC
Mobile 0919473389
Website:



NỘI DUNG
Chương I THUẬT TOÁN

I.
II.
III.
IV.
V.


Khái niệm thuật toán
Biểu diễn thuật toán
Một số thuật toán xử lý số
Độ phức tạp của thuật toán
Thuật toán đệ quy

Toán rời rạc


MỞ ĐẦU
Chương I THUẬT TOÁN

Có nhiều lớp bài toán tổng quát xuất hiện trong
toán học rời rạc. Chẳng hạn:

 Cho một dãy các số nguyên, tìm số lớn nhất.
 Cho một tập hợp, liệt kê các tập con của nó;
 Cho tập hợp các số nguyên, xếp chúng theo thứ tự
tăng dần;

 Cho một mạng, tìm đường đi ngắn nhất giữa hai

đỉnh của nó.
Khi được giao cho một bài toán như vậy thì việc
đầu tiên phải làm là xây dựng một mô hình dịch bài
toán đó thành ngữ cảnh toán học.
Toán rời rạc


I.


KHÁI NIỆM THUẬT TOÁN

Chương I THUẬT TOÁN

 Khái niệm
 Các đặc trưng của thuật toán

Toán rời rạc


KHÁI NIỆM
Chương I THUẬT TOÁN

 Thuật toán (algorithm) là một quá trình gồm
một dãy hữu hạn các thao tác có thể thực hiện
được sắp xếp theo một trình tự xác định dùng
để giải một bài toán
 Ví dụ: thuật toán Euclid tìm ước số chung lớn
nhất của hai số tự nhiên. Thay vì phải tính
toán theo định nghĩa của USCLN (tích của các
ước số chung với số mũ nhỏ nhất) thuật toán
Euclid dựa trên các tính chất sau:
 USCLN(a,b) = USCLN (b,a)
 Nếu a> b, USCLN(a,b) = USCLN (a-b,b)
 USCLN(a,a)= a
Toán rời rạc


KHÁI NIỆM

Chương I THUẬT TOÁN

Ví dụ 1: Thuật toán tìm phần tử lớn nhất
trong một dãy hữu hạn các số nguyên.

a1 a2 a3 a4 a5 a6 a7 a8 .

.

.

.

.

an

B1. Giả sử số nguyên đầu tiên trong dãy là
lớn nhất (gọi là max).
B2. So sánh số nguyên tiếp sau với max,
nếu nó lớn hơn max thì đặt max bằng số
nguyên đó.
B3. Lặp lại bước 2 nếu còn số nguyên
trong dãy ngược lại chuyển qua bước 4.
B4. Dừng. Max chính là số nguyên lớn nhất
của dãy.
Toán rời rạc


CÁC ĐẶC TRƯNG CỦA THUẬT TOÁN

Chương I THUẬT TOÁN

 Input, Output
 Tính hữu hạn: quá trình tính toán luôn phải dừng
sau một số hữu hạn bước.
 Tính xác định: Sau mỗi bước, bước tiếp theo hoàn
toàn xác định.
 Tính hiệu quả
 Tính đơn trị
 Tính phổ dụng: Áp dụng được cho một lớp bài toán
cùng kiểu.

Toán rời rạc


II.

BIỂU DIỄN THUẬT TOÁN

Chương I THUẬT TOÁN

 Có

3 phương pháp biểu diễn thuật
toán:






Dùng ngôn ngữ tự nhiên: Liệt kê các bước
giải.
Sơ đồ khối: trực quan, dễ hiểu, nhưng
không thích hợp với các bài toàn lớn, phức
tạp.
Dùng giả mã hay ngôn ngữ phỏng trình
khắc phục được nhiều nhược điểm của hai
phương pháp trên
Toán rời rạc


III.

MỘT SỐ THUẬT TOÁN XỬ LÝ SỐ

Chương I THUẬT TOÁN

Thuật toán về số nguyên.
2. Thuật toán sắp xếp
3. Thuật toán tìm kiếm
1.

Toán rời rạc


THUẬT TOÁN VỀ SỐ NGUYÊN
Chương I THUẬT TOÁN

1.
2.

3.
4.

Thuật toán kiểm tra số nguyên tố.
Thuật toán kiểm tra số hoàn thiện.
Thuật toán kiểm tra số chính phương.
Thuật toán kiểm tra số có thuộc dãy
Fibonacci?
5. Thuật toán tìm ước chung lớn nhất của
2 số tự nhiên.
6. Thuật toán tìm số lớn nhất trong dãy
hữu hạn số.

Toán rời rạc


THUẬT TOÁN EUCLID
TÌM UCLN CỦA HAI SỐ TỰ NHIÊN
Chương I THUẬT TOÁN

Bài toán: Cho hai số m, n tìm d = USCLN(m,n)
Bước 1: Kiểm tra nếu m = n thì CHUYỂN ĐẾN bước 3
Bước 2: Nếu m > n thì bớt m đi một lượng bằng n và quay
về bước 1,
Nếu n > m thì bớt n đi một lượng bằng m và
quay về bước 1.
Bước 3: Lấy d = m = n. Kết thúc

Toán rời rạc



VÍ DỤ CÁC BƯỚC CỦA
THUẬT TOÁN EUCLID
Chương I THUẬT TOÁN

m n
15 21
15 6

mm>n

9

6

m>n

3
3

6
3

mm=n

USCLN(15,21) = 3
Toán rời rạc



Thuật toán xác định số Fibo
Chương I THUẬT TOÁN

Bước 1. Nhập n; u1:=1; u2:=1; i:=3;
Bước2. Nếu n = 1 thì chuyển qua Bước 6.
Bước3. ui:= ui-1 + ui-2
Bước 4. Nếu ui > n chuyển qua bước 7
Bước 5. Nếu ui < n thì tăng i lên 1 và
quay lại bước 3.
Bước 6: n là số thuộc dãy Fibo. Dừng
Bước 7: n không thuộc dãy Fibo. Dừng
Toán rời rạc


THUẬT TOÁN SẮP XẾP
Chương I THUẬT TOÁN

KHÁI NIỆM NGHỊCH THẾ
 Xét một mảng các số a0, a1,. an.
 Nếu có i < j và ai > aj, thì ta gọi đó là một nghịch thế.
 Mảng chưa sắp xếp sẽ có nghịch thế.
 Mảng đã có thứ tự sẽ không chứa nghịch thế. Khi đó
a0 sẽ là phần tử nhỏ nhất rồi đến a1, a2,…
 a0 ≤ a1 ≤ a2 ≤ … ≤ an
 Như vậy, để sắp xếp một mảng, ta có thể tìm cách giảm
số các nghịch thế trong mảng này bằng cách hoán vị
các cặp phần tử ai, aj nếu có i < j và ai > aj theo một qui
luật nào đó.
Toán rời rạc



Giới thiệu
Chương I THUẬT TOÁN

 Cho trước một dãy số a1, a2,..., aN được lưu trữ trong
cấu trúc dữ liệu mảng các số nguyên a[n];
 Sắp xếp dãy số a1, a2,..., aN là thực hiện việc bố trí lại
các phần tử
 dãy mới ak1, ak2,..., akN có thứ tự (giả sử xét thứ tự tăng)
nghĩa là aki ≤ aki-1.

Thao tác
cơ bản

So sánh

Gán
Toán rời rạc


THUẬT TOÁN SẮP XẾP
Chương I THUẬT TOÁN

1. Sắp xếp kiểu lựa chọn (SelectionSort)
2. Sắp xếp kiểu chèn (InsertionSort)
3. Sắp xếp nổi bọt (BubbleSort)
4. Sắp xếp đổi chỗ trực tiếp (InterchangeSort)

5. Sắp xếp kiểu phân đoạn (Quick Sort)

Toán rời rạc


THUẬT TOÁN TÌM KIẾM

Chương I THUẬT TOÁN

1

2

Tìm kiếm tuyến tính
LinearSearch
(Tìm kiếm tuần tự
SequentialSearch)

Tìm kiếm nhị
phân Binary
Search

Toán rời rạc


II.

ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

Chương I THUẬT TOÁN

1. Tính hiệu quả của thuật toán

2. Khái niệm độ phức tạp thuật toán.
3. Đánh giá thời gian thực hiện thuật toán
như thế nào?

4. Các qui tắc để đánh giá thời gian thực
hiện thuật toán.

5. Phân tích một số thuật toán
19

Giảng Viên: Võ Minh Đức, CĐSP Dăklăk

Toán rời rạc

17/10/2007


1. Tính hiệu quả của thuật toán
Chương I THUẬT TOÁN

1. Tính hiệu quả của thuật toán
Thế nào là thuật toán tốt?
Chọn một thuật toán dựa trên
cơ sở nào?
Tiêu chí lựa chọn là gì?

20

Giảng Viên: Võ Minh Đức, CĐSP Dăklăk


Toán rời rạc

17/10/2007


Các tiêu chí về hiệu quả của thuật
toán
Chương I THUẬT TOÁN

1. Thuật toán đơn giản, dễ hiểu.
2. Thuật toán dễ cài đặt (dễ viết
chương trình)
3. Thuật toán cần ít bộ nhớ
4. Thuật toán chạy nhanh

21

Giảng Viên: Võ Minh Đức, CĐSP Dăklăk

Toán rời rạc

17/10/2007


Chọn một thuật toán dựa trên cơ sở nào?
Chương I THUẬT TOÁN

1.

Thuật toán chỉ sử dụng một số ít lần?

1. Thuật toán đơn giản, dễ hiểu
2. Thuật toán dễ cài đặt (dễ viết chương trình)

2. Thuật toán được sử dụng nhiều lần,
cho nhiều người sử dụng.
3. Thuật toán cần ít bộ nhớ
4. Thuật toán chạy nhanh
22

Giảng Viên: Võ Minh Đức, CĐSP Dăklăk

Toán rời rạc

17/10/2007


Chương I THUẬT TOÁN

Tính hiệu quả của thuật toán

Tính hiệu quả thuật toán gồm 2 nhân
tố cơ bản:
1. Dung lượng không gian nhớ cần
thiết (độ phức tạp không gian)
2. Thời gian thực hiện thuật toán:
Thời gian chạy (độ phức tạp thời
gian)

23


Giảng Viên: Võ Minh Đức, CĐSP Dăklăk

Toán rời rạc

17/10/2007


2. Khái niệm độ phức tạp của thuật toán
Chương I THUẬT TOÁN

Tính hiệu quả của thuật toán
Khi giá trị đầu vào (Input) có một kích
thước xác định. Thì thước đo hiệu quả
của một thuật toán là:

Dung lượng bộ nhớ cần thiết để thực
hiện thuật toán (độ phức tạp không
gian)

Thời gian thực hiện thuật toán: Thời
gian chạy (độ phức tạp thời gian)

24

Giảng Viên: Võ Minh Đức, CĐSP Dăklăk

Toán rời rạc

17/10/2007



2.

Khái niệm độ phức tạp của thuật toán

Chương I THUẬT TOÁN

Thời gian chạy của thuật toán. Ngày
nay với kỹ thuật máy tính tiến bộ rất
nhanh, thời gian chạy có cần thiết
không? Vậy có cần thiết việc phân tích
tìm ra thuật toán có thời gian chạy
nhanh hơn không?
Thử tìm một vài ví dụ?

25

Giảng Viên: Võ Minh Đức, CĐSP Dăklăk

Toán rời rạc

17/10/2007


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×