Tập Bài Giảng Môn Học Toán Rời Rạc.pdf

135 0 0
Tài liệu đã được kiểm tra trùng lặp
Tập Bài Giảng Môn Học Toán Rời Rạc.pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trang 1

TRƯỜNG ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN

Khoa: Công Nghệ Thông Tin Bậc đào tạo: Đại học – Cao đẳng

Đà Nẵng, tháng 01 năm 2022

Trang 2

1.Thông tin về giảng viên:

− Họ và tên: Lưu Văn Hiền − Chức danh, học hàm, học vị: Thạc sĩ

− Thời gian, đ điểm làm việc:ịa Khoa CNTT - Trường ĐH Duy Tân − Điện thoại: 01229500029

− Email: js.luuhien@gmail.com

2 Các môn học tiên quyết

Lập trình cơ sở, Toán cao cấp 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

Trang 3

LỜI NÓI ĐẦU

Toán rời rạc là một nhánh quan trọng của toá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 Toá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 toá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 quá trình rời rạc

Bài giảng này được phân bổ thành chương với các nội dung chính như sau:5 Chương 1: Các kiến thức cơ sở: Logic, tập hợp trình bày những kiến thức về logic mệnh đề, quy nạp toán học và đệ quy trong chương trình Ngoài ra, trong chương này cũng nhắc lại các kiến thức về tập hợp và các phép toán trên tập hợp

Chương 2: Thuật toán, số nguyên và ma trận trình bày những kiến thức về thuật toán, độ phức tạp của thuật toán, số nguyên và thuật toán cho các phép tính số nguyên, ma trận và các thuận toán nhân ma trận, chuyển vị và lũy thừa các ma trận

Chương 3: Bài toán đếm và xác suất rời rạc trình bày những kiến thức về phương pháp đếm, giải tích tổ hợp, xác suất rời rạc, bài toán tồn tại, các thuật toán giải quyết bài toán liệt kê

Chương 4: 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 5: Đạ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 Toá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.

Lưu Văn Hiền

Đà Nẵng, 2022

Trang 4

GV: LƯU VĂN HIỀNTRANG 4

5 Bài toán tồn tại 69

6 Bài toán liệt kê 71

Trang 5

GV: LƯU VĂN HIỀNTRANG 5

7 Đồ thị đẳng cấu 97

8 Đồ thị Euler 101

9 Đồ thị Hamilton 105

10 Tìm đường đi ngắn nhất (Dijkstra) 108

11 Tìm cây khung nhỏ nhất (Prim) 110

Chương 5 THIẾT KẾ MẠCH TỔ HỢP 117

1 Đại số Boole 118

2 Biểu diễn hàm Boole 119

3 Mạch tổ hợp 128

Trang 6

GV: LƯU VĂN HIỀNTRANG 6

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 biết cách áp dụng các cấu trúc rời rạc trong lưu trữ, truyền thông và thao tác dữ liệu

B NỘI DUNG CHƯƠNG HỌC

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 đề

▪ 2 + 3 = 6 (nhận giá trị sai)

Trang 7

GV: LƯU VĂN HIỀNTRANG 7 ▪ 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 đề

2 Các phép toán logic 2.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:

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 2.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:

Trang 8

GV: LƯU VĂN HIỀNTRANG 8

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) 2.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

Trang 9

GV: LƯU VĂN HIỀNTRANG 9 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) 2.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:

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 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:

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 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

Trang 10

GV: LƯU VĂN HIỀNTRANG 10 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ó

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ị

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ị) 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

Trang 11

GV: LƯU VĂN HIỀNTRANG 11 * 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 toá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 toán bên ngoà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ó 2 trường hợp chân trị cho mỗi n

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 =   q và F = p → q p Lập bảng chân trị như sau:

Trang 12

GV: LƯU VĂN HIỀNTRANG 12

Theo như bảng chân trị trên ta thấy E và F là 2 biểu thức tương đương 3. 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 Tên gọi

Trang 13

GV: LƯU VĂN HIỀNTRANG 13

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    (luật giao p q 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)

Trang 14

GV: LƯU VĂN HIỀNTRANG 14 Vậy hai biểu thức p ↔ q và (p ˄ q) (   p ˄  q) là tương đương nhau 3.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)

3.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.

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

Trang 66

GV: LƯU VĂN HIỀNTRANG 74 o Xét tổ hợp chập 3 của tập X = {1, 2, 3, 4, 5} Tổ hợp đầu là (1, 2, 3) Tổ hợp tiếp theo là (1, 2, 4) Tổ hợp tiếp theo là (1, 2, 5) … Tổ hợp cuối cùng là (3, 4, 5) Ta có được nhận xét là thành phần thứ i trong tổ hợp không thể vượt quá n – k + i Giá trị này gọi là giá trị cực đại của thành phần thứ i Ta tìm m = max {i | s < n i – k + i}

1) Khởi tạo dãy xuất phát: Gán si= i với mọi i = 1, 2, …, k 2) Đưa ra kết quả của tổ hợp đang có s.

3) Nếu thỏa điều kiện kết thúc: s1 = n - k + 1 Thuật toán kết thúc, ngược lại thì chuyển sang bước 4 4) Tìm m thỏa: m = max {i | s < n i – r + i} Đặt sm: = sm + 1

s : = s + 1 i = m + 1, m + 2, , r ii-1  Quay lại bước 2

Ví dụ 3: Liệt kê hoán vị Xét bài toán liệt kê tất cả hoán vị của n phần tử {1, 2, 3,

, n} Mỗi hoán vị sẽ được biểu diễn như là một bộ có thứ tự gồm n thành phần a = (a1, a2, , a… n) Như vậy hoán vị đầu tiên là (1, 2, …, n) và hoán vị cuối cùng là (n, n – 1, …, 1)

Giả sử ta phải tìm hoán vị của x = {1, 2, 3} Các hoán vị có thể được liệt kê theo thứ tự từ điển như: 123, 132, 213, 231, …,321 Giả sử a = (a1, a , 2 …, a ) là hoán vị n đang có và chưa phải cuối cùng Khi đó hoán vị kế tiếp sẽ được sinh bằng cách thực hiện các quy tắc sau:

o Tìm từ phải qua trái hoán vị đang có chỉ số j đầu tiên thỏa mãn aj < a j+1

Trang 67

GV: LƯU VĂN HIỀNTRANG 75 o Tìm aklà số nhỏ nhất còn lớn hơn aj, trong các số ở bên phải aj

3) Nếu thỏa điều kiện kết thúc s = (n, n – 1, …, 1) Thuật toán kết thúc, ngược lại sang bước 4 4) Tìm m là chỉ số lớn nhất thỏa sm < sm+1 Tìm k là chỉ số lớn nhất thỏa sm < s k Hoán vị sm và s k

Sắp xếp lại sm+ 1, sm + 2, …, sn theo thứ tự tăng dần Quay lại bước 2

Nhận xét: Phương pháp sinh không có tính phổ dụng: không phải cấu hình kế tiếp nào cũng được sinh một cách đơn giản từ cấu hình hiện tại, mặt khác, cấu hình ban đầu không phải dễ tìm ra vì ngay cả sự tồn tại của một cấu hình nhiều khi vẫn còn là nghi vấn Vì vậy, thông thường thuật toán sinh chỉ có thể xây dựng được những bài toán liệt kê tổ hợp đơn giản Sau đây chúng ta sẽ tìm hiểu phương pháp phổ dụng hơn để giải những bài toán liệt kê phức tạp

6.3. Phương pháp quay lui

Ý tưởng chính của thuật toán này là xây dựng dần các thành phần của cấu hình bằng cách thử tất cả các khả năng Giả thiết cấu hình cần được mô tả bằng một bộ gồm n thành phần x , x , , x12n Giả sử đã xác định được i 1 − thành phần x1, x , , x Ta 2i-1 xác định thành phần thứ i bằng cách duyệt tất cả khả năng có thể đề cử cho nó (đánh số các khả năng từ 1 đến ni) Với mỗi khả năng j, kiểm tra xem khả năng j có chấp nhận được không Có thể xảy ra 2 trường hợp:

− Nếu chấp nhận j thì xác định xitheo j, sau đó nếu i = n, thì ta được một cấu hình, còn trái lại ta tiến hành xác định xi+1

Trang 68

GV: LƯU VĂN HIỀNTRANG 76 − Nếu thử tất cả khả năng mà không khả năng nào được chấp nhận thì quay lại

bước trước để xác định lại xi−1

Điều quan trọng của thuật toán là phải ghi nhớ, tại mỗi bước đã đi qua, những khả năng đã thử để tránh trùng lặp Rõ ràng những thông tin này cần được lưu trữ theo cơ cấu ngăn xếp (stack vào sau ra trước) Vì thế thủ tục đệ qui rất phù hợp với thuật - toán này Bước xác định xi có thể diễn tả qua thủ tục

Phần quan trọng nhất trong thủ tục trên là việc đưa ra được một danh sách các khả năng đề cử và việc xác định giá trị của biểu thức logic <chấp nhận j> Thông thường giá trị này ngoài việc phụ thuộc j còn phụ thuộc vào khả năng được chọn ở các bước trước Vì thế cần ghi nhớ trạng thái mới của quá trình tìm kiếm sau khi <xác định xi theo j> và trả lại trạng thái cũ sau lời gọi Try(i+1) Các trạng thái này được ghi nhận nhờ một số biến toàn cục (global), gọi là biến trạng thái

Sau khi xây dựng thủ tục đệ qui Try, chương trình chính giải bài toán liệt kê có dạng :

{ Init; Try(1); }

trong đó Init là thủ tục khởi tạo các giá trị ban đầu (nhập các giá trị tham số của bài toán, khởi gán các biến trạng thái, biến đếm )

Ví dụ 1: Liệt kê các dãy nhị phân có độ dài n

Trang 69

GV: LƯU VĂN HIỀNTRANG 77 Ta biểu diễn dãy nhị phân dưới dạng x1, x , x2n, trong đó xi {0,1} Thủ tục Try(i) xác định xi {0,1} Các giá trị này được mặc nhiên chấp nhận mà không cần phải thoả mãn điều kiện gì (vì thế bài toán không cần biến trạng thái)

Ví dụ 2: Liệt kê các hoán vị của {1,2, , n}

Biểu diễn hoán vị dưới dạng x1, x , x , 2ntrong đó xi  {1, ., n} và x x2, i  jvới i  j Các giá trị j chạy từ 1 đến n được lần lượt đề cử cho xi và j được chấp nhận nếu nó chưa được dùng Vì thế cần ghi nhớ đối với mỗi giá trị j xem nó đã được dùng hay chưa Điều này được thực hiện nhờ dãy biến logic b[j], trong đó b[j] = True nếu j chưa được dùng Các biến này cần phải được gán giá trị true trong thủ tục Init Sau khi gán j cho xi cần gán false cho b[j] và gán lại true khi thực hiện xong thủ tục Result hay Try(i+1)

Ví dụ 3: Tổ hợp chập r từ n phần tử

Xét bài toán liệt kê tất cả tổ hợp chập từ phần tửr n {1, 2, , n} Mỗi tổ hợp sẽ được biểu diễn như là dãy [x1, x , , x2r ] với x < x < < x12r Như vậy các giá trị đề cử cho x là từi xi-1 + 1 đến n − r + i Để điều này đúng cho cả trường hợp i = 1 ta thêm vào x 0với x0 = 0.

Ngày đăng: 26/04/2024, 16:28

Tài liệu cùng người dùng

Tài liệu liên quan