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

Toan rời rạc anh dao

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 (4.03 MB, 152 trang )

TRƯỜNG ĐẠI HỌC DUY TÂN
KHOA ĐÀO TẠO QUỐC TẾ

TẬP BÀI GIẢNG
Mơn học: Tốn rời rạc

Mã mơn học: MTH 254

Số tín chỉ: 3

Thực hành: 1

Lý thuyết: 2

Dành cho sinh viên ngành: Cơng nghệ phần mềm, mạng máy tính, cao
đẳng tin
Khoa: Đào tạo quốc tế
Bậc đào tạo: Đại học – Cao đẳng
Học kỳ: 2

Năm học: 2016-2017

Đà Nẵng, 2016


BỘ MƠN CMU

TẬP BÀI GIẢNG TÍN CHỈ
Tên mơn học:

TỐN RỜI RẠC



Số tín chỉ:

3TC (2LT + 1TH)

Mã mơn học:

MTH 254

Học kỳ:

3

Mơn học:

Bắt buộc

1.Thông tin về giảng viên:
 Họ và tên: Nguyễn Thị Anh Đào
 Chức danh, học hàm, học vị: Thạc sĩ
 Thời gian, địa điểm làm việc: Khoa ĐTQT - Trường ĐH Duy Tân
 Điện thoại: 0935861437
 Email:
2. Các mơn học tiên quyết
Lập trình cơ sở, tốn A1
3. Các môn học kế tiếp
Cơ sở dữ liệu, Cấu trúc dữ liệu, mạng máy tính


LỜI NĨI ĐẦU

Tốn rời rạc là một nhánh của tốn học nghiên cứu các đối tượng rời rạc và được
xem là cơ sở toán học của ngành khoa học máy tính. Tốn rời rạc khơng chỉ cung cấp
cho sinh viên những kiến thức cơ bản để có thể ứng dụng nó trong việc giải quyết các
bài tốn về các cấu trúc rời rạc bắt nguồn từ tập hợp các đối tượng, ví dụ như tổ hợp,
quan hệ, đồ thị…Mà cịn giúp sinh viên có điều kiện hiểu rõ hơn bản chất của việc lưu
trữ và xử lý thông tin trong máy tính cũng là một q trình rời rạc.
Bài giảng này được phân bổ thành 4 chương với các nội dung chính như sau:
Chương 1: Các kiến thức cơ sở. Trình bày những kiến thức về logic mệnh đề,
khái niệm và cách đánh giá độ phức tạp của thuật toán, quy nạp tốn học và đệ quy trong
chương trình.
Chương 2: Lý thuyết tổ hợp. Trình bày những kiến thức về phương pháp đếm,
giải tích tổ hợp, bài tốn tồn tại, các thuật toán giải quyết bài toán liệt kê.
Chương 3: Lý thuyết đồ thị. Trình bày những kiến thức cơ sở về đồ thị như các
khái niệm, đường đi trên đồ thị và các ứng dụng của đồ thị trong thực tế.
Chương 4: Đại số Boole. Trình bày những kiến thức về Đại số Boole và các
phương pháp cực tiểu hóa mạch hữu hiệu.
Bài giảng được biên soạn với mong muốn chuyển tải những kiến thức cơ bản nhất,
trọng tâm nhất của bộ mơn Tốn rời rạc đến với các bạn sinh viên quan tâm. Rất mong
được nhận được các ý kiến đóng góp xây dựng để bài giảng được hoàn thiện hơn ở
những lần cải biên sau.
Nguyễn Thị Anh Đào
Bộ môn CMU - Khoa ĐTQT
Đà Nẵng, 2016


PHÂN BỔ THỜI GIAN GIẢNG DẠY
GIỜ THỨ

NỘI DUNG


1-3

CHƯƠNG 1: Logic toán và các quy tắc suy luận cơ bản.

4-6

CHƯƠNG 1: Đánh giá độ phức tạp của thuật toán.

7-9

CHƯƠNG 1: Quy nạp tốn học và giải thuật đệ quy trong
lập trình

10-12

CHƯƠNG 2: Các nguyên lý đếm, giải tích tổ hợp.

13-15

CHƯƠNG 2: Hệ thức truy hồi

16-18

CHƯƠNG 2: Bài toán tồn tại + Ôn tập

19- 21

CHƯƠNG 3: Các khái niệm, biểu diễn đồ thị và duyệt đồ
thị


22-24

CHƯƠNG 3: Khái niệm về đường đi, chu trình Euler và
Hamilton

25-27

CHƯƠNG 3: Các bài tốn tối ưu trên đồ thị.

28- 30

CHƯƠNG 4: Đại số Boole, biểu diễn các hàm Boole

31-33

CHƯƠNG 4: Mạch tổ hợp và cực tiểu hóa mạch + Ơn tập

TRANG


Tập bài giảng: Toán rời rạc

MỤC LỤC
Chương 1 CÁC KIẾN THỨC CƠ SỞ ................................................................... 5
A.

MỤC TIÊU CHƯƠNG ............................................................................. 5

B.


NỘI DUNG CHƯƠNG HỌC ................................................................... 5
1.1.

Logic mệnh đề.................................................................................... 5

1.1.1. Các phép toán logic ........................................................................ 6
1.1.2. Các luật tương đương logic .......................................................... 11
1.1.3. Logic vị từ .................................................................................... 14
1.2.

Thuật toán ........................................................................................ 16

1.2.1. Khái niệm ..................................................................................... 16
1.2.2. Đánh giá độ phức tạp của thuật toán ............................................ 17
1.3.

Quy nạp toán học và đệ quy............................................................. 20

1.3.1. Quy nạp toán học .......................................................................... 20
1.3.2. Giải thuật đệ quy .......................................................................... 22
C.

TÀI LIỆU THAM KHẢO ....................................................................... 25

D.

BÀI TẬP CHƯƠNG 1 ............................................................................ 26

Chương 2 LÝ THUYẾT TỔ HỢP ....................................................................... 29
A.


MỤC TIÊU CHƯƠNG ........................................................................... 29

B.

NỘI DUNG CHƯƠNG HỌC ................................................................. 29
2.1.

Tập hợp ............................................................................................ 29

2.1.1. Các khái niệm cơ bản ................................................................... 29
2.1.2. Các phép toán tập hợp .................................................................. 30
2.2.

Những nguyên lý đếm cơ bản .......................................................... 32

2.2.1. Nguyên lý cộng ............................................................................ 32
2.2.2. Nguyên lý nhân ............................................................................ 34
2.2.3. Nguyên lý bù trừ........................................................................... 35
2.3.

Giải tích tổ hợp ................................................................................ 36

2.3.1. Chỉnh hợp (không lặp) ................................................................. 36
2.3.2. Chỉnh hợp lặp ............................................................................... 37
2.3.3. Tổ hợp .......................................................................................... 38
GV: Nguyễn Thị Anh Đào

Trang 1



Tập bài giảng: Toán rời rạc

2.3.4. Hoán vị lặp ................................................................................... 39
2.3.5. Tổ hợp lặp..................................................................................... 40
2.4.

Hệ thức truy hồi ............................................................................... 42

2.4.1. Mở đầu.......................................................................................... 42
2.4.2. Giải hệ thức truy hồi bằng phương pháp lặp ................................ 44
2.4.3. Giải hệ thức truy hồi bằng cách sử dụng phương trình đặc trưng 44
2.5.

Bài tốn tồn tại ................................................................................. 47

2.5.1. Phương pháp phản chứng ............................................................. 47
2.5.2. Nguyên lý chuồng bồ câu ............................................................. 47
2.6.

Bài toán liệt kê ................................................................................. 50

2.6.1. Phát biểu bài toán ......................................................................... 50
2.6.2. Phương pháp sinh ......................................................................... 50
2.6.3. Phương pháp quay lui ................................................................... 54
C.

TÀI LIỆU THAM KHẢO ....................................................................... 58

D.


BÀI TẬP CHƯƠNG 2 ............................................................................ 59

Chương 3 LÝ THUYẾT ĐỒ THỊ ......................................................................... 63
A.

MỤC TIÊU CHƯƠNG ........................................................................... 63

B.

NỘI DUNG CHƯƠNG HỌC ................................................................. 63
3.1.

Các khái niệm .................................................................................. 64

3.1.1. Các định nghĩa .............................................................................. 64
3.1.2. Đường đi, chu trình và đồ thị liên thơng ...................................... 69
3.1.2.1. Đường đi và chu trình............................................................ 69
3.1.2.2. Đồ thị liên thông .................................................................... 70
3.1.3. Đồ thị phẳng – Sự đồng phân ....................................................... 71
3.1.3.1. Đồ thị phẳng .......................................................................... 71
3.1.3.2. Đồng phân ............................................................................. 73
3.2.

Biểu diễn đồ thị ................................................................................ 75

3.2.1. Dùng ma trận kề ........................................................................... 75
3.2.2. Dùng danh sách kề (danh sách cạnh) ........................................... 77
3.2.3. Đồ thị đẳng cấu............................................................................. 78
GV: Nguyễn Thị Anh Đào


Trang 2


Tập bài giảng: Toán rời rạc

3.3.

Các phương pháp duyệt đồ thị ......................................................... 79

3.3.1. Duyệt đồ thị theo chiều sâu(Depth First Search) ......................... 79
3.3.2. Duyệt đồ thị theo chiều rộng (Breadth First Search) ................... 81
3.4.

Đồ thị Euler và Hamilton ................................................................. 82

3.4.1. Đồ thị Euler .................................................................................. 82
3.4.2. Đồ thị Hamilton ............................................................................ 86
3.5.

Các thuật tốn tối ưu trên đồ thị....................................................... 89

3.5.1. Tìm đường đi ngắn nhất (Dijkstra) ............................................... 89
3.5.2. Tìm cây khung nhỏ nhất (Prim) ................................................... 91
C.

TÀI LIỆU THAM KHẢO ....................................................................... 95

D.


BÀI TẬP CHƯƠNG 3 ............................................................................ 95

Chương 4 THIẾT KẾ MẠCH TỔ HỢP .............................................................. 99
A.

MỤC TIÊU CHƯƠNG ........................................................................... 99

B.

NỘI DUNG CHƯƠNG ........................................................................... 99
4.1.

Đại số Boole ...................................................................................100

4.1.1. Định nghĩa đại số Boole ............................................................. 100
4.1.2. Các ví dụ .....................................................................................100
4.2.

Biểu diễn hàm Boole ......................................................................101

4.2.1. Định nghĩa ..................................................................................101
4.2.2. Các ví dụ .....................................................................................101
4.2.3. Các hằng đẳng thức của đại số Boole ........................................103
4.2.4. Biểu diễn hàm Boole ..................................................................105
4.2.5. Khai triển tổng các tích .............................................................. 106
4.2.6. Tính đầy đủ .................................................................................108
4.3.

Mạch tổ hợp ...................................................................................110


4.3.1. Các cổng logic ............................................................................110
4.3.1.1. Cổng NOT (bộ đảo) ............................................................. 110
4.3.1.2. Cổng AND ...........................................................................110
4.3.1.3. Cổng OR ..............................................................................110
4.3.2. Tổ hợp các cổng .........................................................................111
GV: Nguyễn Thị Anh Đào

Trang 3


Tập bài giảng: Toán rời rạc

4.3.3. Bộ cộng.......................................................................................111
4.3.4. Cực tiểu hóa mạch ......................................................................114
4.3.4.1. Bản đồ Karnaugh .................................................................115
4.3.4.2. Phương pháp Quine- McCluskey ........................................118
4.4.

Ứng dụng mạch tổ hợp...................................................................120

4.4.1. Mạch biểu quyết theo đa số ........................................................120
4.4.2. Mạch điều khiển nhiều công tắc .................................................122
C.

TÀI LIỆU THAM KHẢO .....................................................................124

D.

BÀI TẬP CHƯƠNG 4 ..........................................................................125


GV: Nguyễn Thị Anh Đào

Trang 4


Tập bài giảng: Toán rời rạc

Chương 1
CÁC KIẾN THỨC CƠ SỞ
A. MỤC TIÊU CHƯƠNG
1. VỀ KIẾN THỨC:
Cung cấp cho sinh viên những kiến thức về:
 Mệnh đề và logic mệnh đề;
 Các quy tắc suy luận để xác định một suy diễn đúng hay sai;
 Khái niệm thuật toán và cách đánh giá độ phức tạp của thuật toán;
 Quy nạp tốn học và đệ quy trong lập trình.
2. VỀ KỸ NĂNG:
Sau khi học xong chương này sinh viên có thể vận dụng các luật đại số mệnh đề
để chứng minh và rút gọn một biểu thức mệnh đề. Bên cạnh đó, sinh viên có thể đánh
giá một thuật tốn có độ phức tạp là thấp hay cao để từ đó có những giải thuật tốt hơn.
Ngồi ra sinh viên có thể vận dụng những kiến thức vào thực tế để giải quyết các bài
toán sử dụng giải thuật đệ quy.
B.

NỘI DUNG CHƯƠNG HỌC
1.1. Logic mệnh đề
Logic là gì? Là một nhánh của triết học và toán học, nghiên cứu về nguyên tắc,

phương pháp và tiêu chuẩn hình thức cho sự hợp lệ của suy luận và kiến thức.
Ứng dụng của logic:

o Trong các suy luận toán học.
o Trong khoa học máy tính: thiết kế vi mạch, xây dựng chương trình, kiểm chứng
chương trình, trí tuệ nhân tạo.
Mệnh đề: là một phát biểu, một câu trần thuật, chỉ nhận 1 trong 2 giá trị hoặc đúng
hoặc sai.
Một số ví dụ về mệnh đề:
o Ví dụ sau là mệnh đề.
GV: Nguyễn Thị Anh Đào

Trang 5


Tập bài giảng: Toán rời rạc

 2 + 3 = 6 (nhận giá trị sai)
 Thành phố Đà Nẵng giáp với tỉnh Quảng Nam (nhận giá trị đúng)
o Ví dụ sau không là mệnh đề.
 Hôm nay là thứ mấy?
 Ôi đẹp quá!
 X + 3 = 4 (x không rõ giá trị)
Việc xác định đúng sai của một mệnh đề khơng phải là nhiệm vụ của logic.
Câu có chứa thời gian chỉ là mệnh đề khi và chỉ khi thời gian đã được xác định.
Một số quy ước:
o p, q, r,… dùng để ký hiệu một mệnh đề hoặc một biến mệnh đề.
o Giá trị chân lý đúng của 1 mệnh đề là True(1), sai là False(0)
o Bảng chân trị: dùng để biểu diễn mối quan hệ giữa các giá trị chân lý giữa các
mệnh đề.
1.1.1. Các phép toán logic
1.1.1.1. Phép phủ định
Cho mệnh đề p, phép phủ định của mệnh đề p ký hiệu là p (đọc là phủ của p hoặc

không p). Chân trị của mệnh đề p được xác định theo bảng chân trị sau:
p

p

0

1

1

0

Ví dụ:
o p: 4 là số nguyên tố. Đây là một mệnh đề có giá trị sai
o p: 4 khơng phải là số nguyên tố. Đây là một mệnh đề có giá trị đúng.
1.1.1.2. Phép hội
Cho 2 mệnh đề p,q, phép hội của 2 mệnh đề p, q được ký hiệu là p  q ( đọc là p
hội q hoặc p và q). Chân trị của p  q là 1 khi và chỉ khi cả p và q đều có chân trị 1,
trong các trường hợp khác p  q có chân trị 0. Phép hội giữa p và q được xác định bởi
bảng chân trị sau:
GV: Nguyễn Thị Anh Đào

Trang 6


Tập bài giảng: Tốn rời rạc

p


q

pq

0

0

0

0

1

0

1

0

0

1

1

1

Ví dụ:
Cho 3 mệnh đề:

o p: 5 > 3
o q: 4 là số nguyên tố
o r: -3 < -2
thì mệnh đề:
o p  q có chân trị là 0 (vì p có chân trị 1, q có chân trị 0)
o p  r có chân trị là 1 (vì p có chân trị 1, r có chân trị 1)
1.1.1.3. Phép tuyển
Cho 2 mệnh đề p, q, phép tuyển của 2 mệnh đề p và q, ký hiệu là p  q (đọc là p
tuyển q hoặc p hay q). Chân trị của p  q là 0 khi và chỉ khi cả p và q đều nhận chân trị
là 0, các trường hợp còn lại đều nhận chân trị 1. Phép tuyển giữa p  q được xác định
bởi bảng chân trị sau :
p

q

pq

0

0

0

0

1

1

1


0

1

1

1

1

Ví dụ:
Cho 2 mệnh đề như sau:
o p: 5 > 3
o q: 4 là một số nguyên tố
o r: 2 < -2
GV: Nguyễn Thị Anh Đào

Trang 7


Tập bài giảng: Tốn rời rạc

Thì mệnh đề:
o p  q có chân trị là 1 (vì p có chân trị 1, q có chân trị 0)
o q  r có chân trị là 0 (vì q và r đều có chân trị là 0)
1.1.1.4. Phép tuyển loại
Giả sử p và q là hai mệnh đề thì mệnh đề “hoặc p hoặc q ” được gọi là tuyển loại
của 2 mệnh đề đó. Ký hiệu p  q. Ta có bảng chân trị như sau:
p


q

pq

1

1

0

0

1

1

1

0

1

0

0

0

Ví dụ:

Xét ví dụ mệnh đề sau: “Hoặc là điểm của tôi được hơn 4.0 hoặc tơi sẽ bị học lại
mơn này”. Trong đó:
P: Điểm của tôi được hơn 4.0.
Q: Tôi bị học lại môn này.
Khi đó mệnh đề như trên chính là : p  q.
1.1.1.5. Phép kéo theo
Cho 2 mệnh đề p, q, mệnh đề “nếu p thì q” được ký hiệu là p → q (đọc là p kéo
theo q). Để xác định chân trị cho mệnh đề p → q ta xem bảng chân trị sau:
p

q

p→q

0

0

1

0

1

1

1

0


0

1

1

1

Ví dụ:
Xét ví dụ mệnh đề sau: “Nếu tơi có 1 tỷ đồng thì tơi mua xe hơi”
Ta có các trường hợp như sau:
o Tơi có 1 tỷ đồng, và tôi mua xe hơi: mệnh đề hiển nhiên là đúng.
GV: Nguyễn Thị Anh Đào

Trang 8


Tập bài giảng: Tốn rời rạc

o Tơi khơng có 1 tỷ đồng, tôi không mua xe hơi: mệnh đề vẫn đúng.
o Tơi khơng có 1 tỷ đồng, nhưng tơi vẫn mua xe hơi: mệnh đề vẫn đúng.
o Tơi có 1 tỷ đồng, nhưng tôi không mua xe hơi: mệnh đề sai.
* Mệnh đề kéo theo chỉ sai khi “mệnh đề nếu” có chân trị 1 nhưng “mệnh đề thì”
có chân trị 0.
* Phép kéo theo trong logic tổng quát hơn quan hệ nhân quả trong ngơn ngữ tự
nhiên.
Ví dụ: Nếu hơm nay trời mưa thì 2+3 =5 (mệnh đề đúng dù trời có mưa hoặc khơng
mưa)
1.1.1.6. Phép tương đương
Cho 2 mệnh đề p, q mệnh đề “nếu p thì q và ngược lại” được ký hiệu là p ↔ q (đọc

là p khi và chỉ khi q, p nếu và chỉ nếu q, p là điều kiện cần và đủ để có q). Cả hai chiều
p → q và q → p đều đúng nên nếu p đúng thì q cũng đúng và ngược lại. Ta có bảng
chân trị như sau:
p

q

p↔q

0

0

1

0

1

0

1

0

0

1

1


1

1.1.1.7. Mệnh đề phức hợp
Các mệnh đề phức hợp được tạo ra từ các mệnh đề sơ cấp bằng các phép toán
logic, việc xác định chân trị của các mệnh đề này dựa trên chân trị của mệnh đề sơ cấp
cũng nhờ vào các phép toán logic. Chúng ta quan tâm đến việc xác định chân trị cho
mệnh đề phức hợp hơn là các mệnh đề sơ cấp.
Biểu thức logic chính là các mệnh đề phức hợp có giá trị là True (1) hoặc False
(0). Trong đại số ta có các biểu thức đại số được xây dựng từ các toán hạng (các hằng
số, các biến) và các toán tử theo một thứ tự nào đó. Trong biểu thức mệnh đề ta cũng có
các biểu thức logic được xây dựng từ:
o Các mệnh đề hoặc các giá trị hằng (chân trị)
GV: Nguyễn Thị Anh Đào

Trang 9


Tập bài giảng: Toán rời rạc

o Các biến mệnh đề
o Các phép toán logic và cả các dấu () để chỉ rõ thứ tự thực hiện của các phép
toán logic.
* Thứ tự ưu tiên của các phép toán trong biểu thức logic:
  : phép phủ định
  ,  : phép hội và phép tuyển
 →, ↔: phép kéo theo, tương đương
 Ghi chú: các phép toán trên cùng một dịng có độ ưu tiên ngang nhau, các phép
tốn có độ ưu tiên ngang nhau được thực hiện từ trái sang phải, các phép toán trong dấu
ngoặc ‘(…)’ được thực hiện trước các phép tốn bên ngồi dấu ngoặc.

Ví dụ: E, F là các biểu thức logic
 E = ((q  p) → (p  r) )  1
 F = p  (q → r)
 Trong 2 biểu thức E, F trên thì p, q, r là các biến mệnh đề.
Bảng chân trị của một biểu thức logic là bảng liệt kê các chân trị của biểu thức
dựa trên các trường hợp chân trị của các biến mệnh đề của biểu thức, mỗi biến mệnh đề
sẽ có 2 trường hợp chân trị nên nếu có n biến mệnh đề sẽ có 2n trường hợp chân trị cho
mỗi biểu thức logic.
Ví dụ: Với biểu thức logic E = p  q ta có bảng chân trị như sau:
p

q

p

p  q

0

0

1

0

0

1

1


1

1

0

0

0

1

1

0

0

Hai biểu thức E và F theo các biến mệnh đề nào đó được gọi là tương đương logic
khi và chỉ khi E và F có cùng chân trị trong mọi trường hợp chân trị của bộ biến mệnh
đề. Ký hiệu: E  F (đọc là E tương đương F)
Ví dụ: Xét 2 biểu thức E = p  q và F = p → q
GV: Nguyễn Thị Anh Đào

Trang 10


Tập bài giảng: Toán rời rạc


Lập bảng chân trị như sau:
p

q

p

p  q

p→q

0

0

1

1

1

0

1

1

1

1


1

0

0

0

0

1

1

0

1

1

Theo như bảng chân trị trên ta thấy E và F là 2 biểu thức tương đương
1.1.2. Các luật tương đương logic
Các luật logic là cơ sở để ta thực hiện các biến đổi trên một biểu thức logic để có
được một biểu thức logic mới tương đương logic với biểu thức logic có trước. Mỗi luật
logic cho ta một khẳng định về sự tương đương của 2 biểu thức logic. Ta sẽ sử dụng các
quy tắc thay thế và các luật logic đã biết để thực hiện các phép biến đổi tương đương
trên các biểu thức logic thường gặp như sau:
Các biểu thức tương đương
p1p

p0p
ppp
ppp
p00
p11
pqqp
pqqp
p  (q  r)  (p  q)  r
p  (q  r)  (p  q)  r
p  (q  r)  (p  q)  ( p  r)
p  (q  r)  (p  q)  (p  r)
pp
GV: Nguyễn Thị Anh Đào

Tên gọi
Luật đồng nhất

Luật lũy đẳng

Luật nuốt

Luật giao hoán

Luật kết hợp

Luật phân bố
Phủ định của phủ định
Trang 11



Tập bài giảng: Toán rời rạc

(p  q)   p  q
 (p  q)  p   q
p p0
pp1
p  (p  q)  p
p  (p  q)  p

Qui tắc De Morgan

Luật về phần tử bù

Luật hấp thụ

p→qpq

Luật hàm ý

p↔ q  (p → q)  (q → p)

Luật tương đương

Trên đây là những luật cơ bản nhất có thể sử dụng để biến đổi các biểu thức logic
thành các biểu thức tương đương với nó. Tất nhiên cịn nhiều luật nữa chưa được nêu ra
đây.
Ví dụ 1: Chứng minh p → q và q → p là 2 biểu thức tương đương
Giải:
 Biến đổi biểu thức thứ nhất
p→ q   p  q (luật hàm ý) (1)

 Biến đổi biểu thức thứ hai
q →  p   ( q)   p (luật hàm ý)
 q   p (phủ định của phủ định)
  p  q (luật giao hoán)(2)
Từ (1) và (2) suy ra được 2 biểu thức p → q và  q →  p là tương đương nhau.
Ví dụ 2: Chứng minh p ↔ q và (p ˄ q)  ( p ˄  q) là tương đương nhau.
Giải:
 Biến đổi biểu thức thứ nhất
p ↔ q  (p → q) ˄ (q → p) (luật tương đương)
 ( p  q) ˄ ( q  p) (luật hàm ý)
 (( p  q) ˄  q)  (( p  q) ˄ p) (luật phân bổ)
 ( p ˄  q)  (q ˄  q)  ( p ˄ p)  (p ˄ q) (luật phân bổ)
GV: Nguyễn Thị Anh Đào

Trang 12


Tập bài giảng: Toán rời rạc

 ( p ˄  q)  0  0 (p ˄ q) (luật về phần tử bù)
 ( p ˄  q)  (p ˄ q) (luật đồng nhất)
 (p ˄ q)  ( p ˄  q) (luật giao hoán)
Vậy hai biểu thức p ↔ q và (p ˄ q)  ( p ˄  q) là tương đương nhau.
1.1.2.1. Sự giản ước
Mệnh đề g là một giản ước của mệnh đề f nếu như g  f và g có ít các phép toán
logic hơn f nhờ các quy luật của hàm logic.
Ví dụ: Chứng minh p là giản ước của mệnh đề p ˄ (p  q) (không dùng bảng chân
trị)
Giải: p ˄ (p  q) = (p  0) ˄ (p  q) = p  (0 ˄ q) = p
Vậy p là giản ước của p ˄ (p  q)

1.1.2.2. Đối ngẫu
Trong một mệnh đề phức hợp, ta thay ˄ bởi , 1 bởi 0 hoặc ngược lại thì ta cũng
được một mệnh đề phức hợp tương đương.
Ví dụ:
 Mệnh đề p ˄ 1  p là đối ngẫu với mệnh đề p  0  p
 2 qui tắc của luật De Morgan cũng là hai mệnh đề đối ngẫu.

GV: Nguyễn Thị Anh Đào

Trang 13


Tập bài giảng: Toán rời rạc

1.1.3. Logic vị từ
1.1.3.1. Vị từ
Là một hàm mệnh đề chứa các biến mà chân trị của phát biểu này phụ thuộc vào
các biến.
Ví dụ: “x > 3”, “y là số nguyên tố”
Gọi p(x) là vị từ chứa biến x, trong đó x khơng phải là biến logic mà x thuộc một
miền giá trị U nào đó (cịn gọi là tập vũ trụ).
Khi cho x lấy giá trị cụ thể xo U thì khi đó p(xo) là một mệnh đề.
Ví dụ:cho P(x): “x lớn hơn 3, x là số thực” (câu này không là mệnh đề) phát biểu
này gồm 2 phần:
-

Biến x

-


Tính chất của biến x: lớn hơn 3

Câu này sẽ cho ta mệnh đề ứng với mỗi giá trị cụ thể của x.
Với x = 1 thì P(1): “1 > 3” chân trị False.
Với x = 5 thì P(5): “5 > 3” chân trị True.
1.1.3.2. Ký hiệu phổ quát
Ký hiệu phổ quát (hay còn gọi lượng từ với mọi) của P(x) ký hiệu là xP(x) là
một mệnh đề “P(x) đúng với mọi phần tử x thuộc trường đang xét”.
Ví dụ: Cho P(x) = x > x - 1. Xác định giá trị chân lý của mệnh đề xP(x), trong
không gian các số thực.
Ta biết rằng vì P(x) đúng với mọi số thực x nên xP(x) là đúng.
1.1.3.3. Ký hiệu tồn tại
Ký hiệu tồn tại (lượng từ tồn tại) của hàm mệnh đề P(x) (được ký hiệu là xP(x))
là một mệnh đề “Tồn tại một phần tử x trong khơng gian sao cho P(x) đúng”.
Ví dụ: cho P(x) là hàm mệnh đề “x > 3”. Tìm giá trị chân lý của mệnh đề xP(x)
trong khơng gian các số thực.
Ta có P(4) là mệnh đề “4 > 3” nên mệnh đề xP(x) là đúng.

GV: Nguyễn Thị Anh Đào

Trang 14


Tập bài giảng: Toán rời rạc

xP(x)

Mệnh đề đúng khi và chỉ khi P(x) Mệnh đề sai nếu có một giá
đúng với mọi giá trị của x.


xP(x)

trị của x làm P(x) sai.

Mệnh đề đúng khi và chỉ khi tồn Mệnh đề sai khi và chỉ khi
tại một giá trị của x để P(x) đúng

P(x) sai với mọi x

1.1.3.4. Thứ tự các lượng từ
 Thứ tự các lượng từ là quan trọng, trừ khi các lượng từ đều là  hoặc .
 Đọc từ trái sang phải, áp dụng từ trong ra ngồi.
Ví dụ:
xy P(x,y)  yxP(x,y)
xy P(x,y)  yxP(x,y)
xyP(x,y)yxP(x,y)
1.1.3.5. Các quy luật khác
 xP(x)  x P(x)
 xP(x)  x P(x)
 [xP(x)]  [xQ(x)]  x[P(x)  Q(x)]
 [xP(x)]  [xQ(x)] x[P(x)  Q(x)]
 [xP(x)]  [xQ(x)]  x[P(x)  Q(x)]
 x[P(x)  Q(x)]  [xP(x)]  [xQ(x)]
1.1.3.6. Cách chứng minh liên quan đến ký tự định lượng
a) Chứng minh x P(x) với x U
Xem một phần tử bất kỳ c  U và chứng minh P(c) đúng
b) x P(x) với x  U
Tìm ra một phần tử c  U và chứng minh P(c) đúng
c) Một số ví dụ
 Cho phát biểu như sau: “Nếu mọi người có chiều cao dưới 1,5m hoặc dưới 18

tuổi thì khơng được lái xe máy trên 50cc”. Biến đổi phát biểu trên thành biểu thức logic:
Đặt:
P(x): x cao dưới 1,5m
GV: Nguyễn Thị Anh Đào

Trang 15


Tập bài giảng: Toán rời rạc

Q(x): x trên 18 tuổi
R(x): x được lái xe máy trên 50cc.
Ta có biểu thức như sau:
x[P(x)]  x[Q(x)] → R(x)
 Cho phát biểu sau: “Nếu có một sinh viên năm 4 nào chưa học tốn rời rạc thì
sinh viên đó khơng thuộc khoa tin”. Biến đổi phát biểu trên thành biểu thức logic:
Đặt:
P(x): x là sinh viên năm 4
Q(x): x đã học toán rời rạc
R(x): x khơng là sinh viên khoa tin
Ta có biểu thức như sau:
x[P(x)  Q(x)] → R(x)
1.2. Thuật toán
1.2.1. Khái niệm
Thuật toán là một dãy thao tác trên các đối tượng sao cho sau một số hữu hạn bước
thực hiện thì đạt được mục tiêu đã xác định từ trước. Các đặc trưng của thuật toán:
 Đầu vào: Thuật toán nhận dữ liệu vào từ một tập nào đó.
 Đầu ra: Với mỗi tập các dữ liệu đầu vào, thuật toán đưa ra các dữ liệu tương ứng
với lời giải của bài tốn.
 Tính xác định: Các bước của thuật tốn được mơ tả chính xác.

 Tính hữu hạn: Thuật toán cần phải đưa được đầu ra sau một số hữu hạn (có thể
rất lớn) bước với mọi đầu vào.
 Tính hiệu quả: Mỗi bước của thuật tốn cần phải thực hiện một cách chính xác
trong một khoảng thời gian hữu hạn
 Tính tổng qt: Thuật tốn có thể áp dụng để giải mọi bài tốn có dạng đã cho,
chứ không chỉ cho một tập đặc biệt các giá trị đầu vào

GV: Nguyễn Thị Anh Đào

Trang 16


Tập bài giảng: Toán rời rạc

1.2.2. Đánh giá độ phức tạp của thuật toán
Để đánh giá hiệu quả của một chương trình thì ta cần phải phân tích hiệu quả của
thuật tốn.
Sau khi cài đặt thuật tốn, thì một loạt các yêu cầu đề ra như sau:
o Tính đúng đắn của thuật tốn (thơng thường sử dụng thử cho nhiều bộ dữ liệu
đầu vào cụ thể để xem thuật toán có cho kết quả như mong đợi khơng). Thử để
xem thuật tốn có cho kết quả đúng khơng ? Chứ khơng thể chứng minh là thuật
tốn đúng)
o Tính đơn giản: Chương trình phải thoả : dễ sử dụng, dễ cập nhật, dễ hiểu.
o Tính hiệu quả: Chi phí thực hiện thuật tốn càng ít thì thuật tốn càng tốt.
 Chi phí về khơng gian (dung lượng bộ nhớ):dung lượng càng nhỏ thì thuật
tốn càng tốt.
 Chi phí về thời gian: thời gian thực hiện thuật toán trên máy phụ thuộc vào
cơng nghệ, phụ thuộc vào ngơn ngữ lập trình mà ta sử dụng và phụ thuộc vào
số lượng phép toán mà ta sử dụng.
Trong phần này ta chỉ quan tâm đến chi phí về thời gian tính tốn.

Phân tích chi phí về thời gian thực hiện thuật tốn khơng phụ thuộc vào máy tính
và cơng nghệ mà chỉ quan tâm đến số phép toán của thuật toán, số lượng phép tốn phụ
thuộc vào dữ liệu đầu vào. Khi phân tích thuật tốn chủ yếu là tập trung phân tích phép
tốn tích cực (là phép tốn mà số lượng thực hiện nó trong thuật tốn thực hiện khơng
ít hơn các phép tốn khác) từ đó suy ra được độ phức tạp của thuật tốn (độ phức tạp
tính tốn của thuật tốn).
Khi phân tích độ phức tạp tính tốn của thuật tốn thì phân tích 3 trường hợp (thuận
lợi nhất, trung bình và xấu nhất) nhiều khi trường hợp trung bình rất phức tạp nên thông
thường chủ yếu là trường hợp xấu nhất.
Để ước lượng độ phức tạp của một thuật toán thường dùng khái niệm bậc Big-O
Khái niệm Big-O
Độ tăng của các hàm thường được mô tả bằng cách dùng một khái niệm đặc biệt
được định nghĩa như sau :

GV: Nguyễn Thị Anh Đào

Trang 17


Tập bài giảng: Toán rời rạc

Cho f và g là hai hàm 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)) 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.
Ta có thể nói f(n) = O(g(n)) nghĩa là tốc độ tăng của f(n) khi tiến đến vô cùng
không vượt quá tốc độ tăng của g(n). Khi n lớn, g(n) cho ta hình dung được mức lớn của
f(n). g(n) là thước đo độ lớn của f(n).
Dưới đây là các thuật ngữ dùng cho độ phức tạp của một thuật toán
Độ phức tạp


Thuật ngữ

O(1)

Độ phức tạp hằng số

O(logn)

Độ phức tạp logarit
Độ phức tạp tuyến tính

O(n)

Độ phức tạp nlogn

O(nlogn)
O(nb)

Độ phức tạp đa thức

O(bn) b>1

Độ phức tạp hàm mũ

O(n !)

Độ phức tạp giai thừa

Bảng dưới đây so sánh thời gian máy tính được dùng bởi một thuật tốn với những

kích thước đầu vào khác nhau (dấu * để chỉ khoảng thời gian lớn hơn 100100 năm) :
Kích thước

Thời gian thực hiện

bài toán
N

Logn

n

nlogn

n2

2n

n!

10

3.10-9s

10-8s

3.10-8s

10-7s


10-6s

3.10-3s

102

7.10-9s

10-7s

7.10-7s

10-5s

4.1013năm *

103

1,0.10-8s 10-6s

1,0.10-5s

10-3s

*

*

104


1,3.10-8s 10-5s

1.10-4s

10-1s

*

*

105

1,7.10-8s 10-4s

2.10-3s

10s

*

*

106

2.10-8s

2.10-2s

17 phút


*

*

GV: Nguyễn Thị Anh Đào

10-3s

Trang 18


Tập bài giảng: Tốn rời rạc

Ngồi khái niệm Big-O dùng để đánh giá độ phức tạp của một thuật toán cịn có
khái niệm Big-Ω và Big-ʘ. Tuy nhiên chúng ta sẽ khơng tìm hiểu 2 khái niệm này trong
phạm vi bài giảng này.
Các bước đánh giá độ phức tạp của một thuật toán
Quy tắc tổng
Nếu T1(n) = O(f(n)), và T2(n) = O(g(n))
thì T1(n) + T2(n) =O (max{f(n) , g(n)})
Giả sử thuật toán P gồm 2 thủ tục là P1 và P2 và
P1 có thời gian thực hiện T1(n) = O(f(n))
P2 có thời gian thực hiện T2(n) = O(g(n))
Thì thuật tốn P có thời gian thực hiện là T1(n) + T2(n) = O(max{f(n),g(n)})
Tính thời gian thực hiện trong ngơn ngữ lập trình
Quy định :
 Câu lệnh đơn : các câu lệnh như gán, đọc, viết, so sánh, có thời gian thực
hiện là O(1)
 Câu lệnh ghép S = S1 = S2 …=Sp : tính thời gian thực hiện theo quy tắc
tính tổng

 Lệnh rẽ nhánh If <điều kiện > S1 else S2 : tính thời gian thực hiện là
O(max{f1(n), f2(n)}). Lệnh lựa chọn Case cũng tính tương tự
 Lệnh vịng lặp While <điều kiện> {S} tính thời gian thực hiện là (số lần
lặp)*f(n)
 Vịng lặp for tương tự while.
Ví dụ: cho dãy s1, s2, …,sn . xắp xếp dãy đó theo thứ tự tăng dần
Đầu vào: dãy bất kỳ s1, s2, …,sn
Đầu ra: s1, s2, …,sn sao cho si<=sj với 0B1: Nếu n=1 thì dừng thuật tốn
B2: Max_index :=1
GV: Nguyễn Thị Anh Đào

Trang 19


Tập bài giảng: Toán rời rạc

B3: với i := 2 đến n thực hiện B4
B4: Nếu si>smax_index thì max_index := i
B5: sn  smax_index
B6: Gọi lại thuật toán ứng với dãy s1,…,sn-1.
Phép tốn tích cực là phép so sánh
nếu n=1 thì a1=0
nếu n>1 thì thực hiện bước 3 &4
số phép so sánh là :n-1 phép so sánh
Thực hiện B6 là an-1. vậy an=n-1 + an-1.
Giải:
an=n-1 + an-1=(n - 1) + (n - 2) + an-2=(n-1) + (n-2) +…+ (n - (n - 1))a1=(n 1)n/2.=O(n2).
1.3. Quy nạp toán học và đệ quy
1.3.1. Quy nạp toán học

Quy nạp toán học là một phương pháp chứng minh thường được sử dụng để chứng
minh các mệnh đề dạng nP(n) trong đó n là một số nguyên dương tùy ý
Quá trình chứng minh P(n) đúng n nguyên dương gồm 2 bước như sau:
 Bước cơ sở: Chỉ ra mệnh đề P(1) là đúng
 Bước quy nạp: Giả sử P(n) đúng, chứng minh P(n)  P(n + 1) đúng n là số
nguyên dương. P(n) gọi là giả thiết quy nạp.
Ví dụ 1: Bằng quy nạp tốn học hãy chứng minh tổng của n số nguyên dương lẻ
đầu tiên là n2.
Giải: Gọi P(n) là mệnh đề “tổng n số nguyên dương lẻ đầu tiên là n2”.
Bước cơ sở: P(1) = 1 = 12 , P(1) đúng.
Bước quy nạp: Giả sử P(n) đúng, tức là với mọi n nguyên dương lẻ, ta có
1 + 3 + 5 + … + ( 2n – 1 ) = n2
Ta phải chỉ ra rằng P(n + 1) là đúng. Tức là:
GV: Nguyễn Thị Anh Đào

Trang 20


Tập bài giảng: Toán rời rạc

1 + 3 + 5 + … + ( 2n – 1 ) + ( 2n + 1 ) = (n + 1)2
Thật vậy: Từ giả thiết P(n ) đúng ta có:
VT = 1 + 3 + 5 + … + ( 2n – 1 ) + ( 2n + 1 )
= n2 + ( 2n + 1 )
= (n + 1)2
Vậy P( n )  P( n + 1) là đúng với mọi n nguyên dương, và P(1) đúng nên theo
nguyên lý quy nạp thì P(n) đúng với mọi n ngun dương.
Ví dụ 2: Dùng quy nạp chứng minh rằng nếu tập S là một tập có n phần tử thì S có
2n tập con.
Giải: Gọi P(n) là mệnh đề “ Tập có n phần tử thì có 2n tập con”.

Bước cơ sở: P(0) là đúng vì tập rỗng có 20 = 1 tập con là chính nó
Bước quy nạp: Giả sử P(n) là đúng, tức là tập có n phần tử có 2n tập con. Ta cần
chứng minh P(n + 1) cũng đúng.
Thật vậy: Giả sử T là tập hợp có (n + 1) phần tử, S là tập hợp có n phần tử. Khi
đó, T = S  {α}, với α là phần tử thuộc T và không thuộc S.
Ứng với mỗi tập con X của S ta có thể có được 2 tập con của T là X và X  {α}.
Mà theo giả thiết là S có 2n tập con, với mỗi tập con đó lại có 2 cách tạo nên tập con
của T, nên T có 2.2n = 2n + 1 tập con. Vậy theo nguyên lý quy nạp thì P(n) đúng.
Ví dụ 3: Dùng quy nạp chứng minh rằng 1 + 2 + 22 + …+ 2n = 2n+1 - 1 với mọi n
nguyên không âm.
Giải: Gọi P(n) là mệnh đề “1 + 2 + 22 + …+ 2n = 2n+1 – 1 n ≥ 0, nZ.”
Bước cơ sở: P(0) = 20 = 1 = 20+1 – 1 là đúng
Bước quy nạp: Giả sử P(n) đúng, cần chứng minh P(n + 1) là đúng
Ta có P(n + 1) = 1 + 2 + 22 + …+ 2n + 2n+1
= 2n+1 – 1 + 2n+1
= 2.2n+1 – 1
= 2n+2 – 1.
Điều này chứng minh được P(n + 1) đúng n ≥ 0, nZ. Nghĩa là P(n) đúng n ≥
0, nZ.
GV: Nguyễn Thị Anh Đào

Trang 21


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

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