Giáo trình Toán rời rạc
Trang 1TRƯỜNG CAO ĐẲNG SƯ PHẠM BẾN TRE.
TỔ TIN HỌC
GIÁO TRÌNH TOÁN RỜI RẠC
VÀ ỨNG DỤNG.
Vương Đức Bình.Tài liệu lưu hành nội bộ
2003-2004
Trang 2LỜI MỞ
ối với người làm công nghệ thông tin thì ngoại trừ những kỹ năng cần thiết về sửdụng máy tính như sử dụng những phần mềm, những dịch vụ phổ biến trênInternet cho công việc thường ngày, còn phải có một hiểu biết khá đầy đủ vềnhững lĩnh vực toán học có liên quan nhằm có thể tiếp cận sâu sắc hơn các quá trình xử líthông tin Nếu người sử dụng máy tính thông thường trong các văn phòng, chỉ cần một khoáhọc “mì ăn liền” nhằm hoàn thiện kỹ năng sử dụng một số ứng dụng nào đó là tạm đủ chocông việc, người làm công nghệ thông tin cần có một nền tảng lí luận về thông tin và xử líthông tin đầy đủ để có thể chủ động tự đồng bộ được, đối phó được (và góp phần!) vớinhững thay đổi chóng mặt về phần cứng lẫn phần mềm của ngành công nghệ thông tin Dođó một hiểu biết tương đối về những ngành toán học có liên quan đến công nghệ thông tinlà không thể thiếu được
Đ
Có khá nhiều tài liệu về đề tài này1 để sinh viên có thể tham khảo nhưng các tài liệu đóhoặc khó kiếm hoặc nhanh chóng dẫn người mới tìm hiểu vào quá sâu của vấn đề khiếnviệc tiếp cận môn học gặp khó khăn Vì vậy giáo trình này được soạn ra nhằm giúp sinhviên mới tìm hiểu khoa học này tiếp cận vấn đề dễ dàng và có hệ thống hơn Mặt khác đâylà một tài liệu dạng hỗ trợ học tập (nên cần phải) hết sức cô đặc vì vậy sinh viên cũng cầnphải đọc thêm các tài liệu khác của thư viện
Tài liệu này tốt hơn hết là được giảng song song với việc học một ngôn ngữ lập trình để các
ví dụ về giải thuật có thể được hiểu rõ ràng hơn Tuy nhiên có khả năng người học chưađược học cụ thể một ngôn ngữ lập trình nên tác giả sẽ chỉ dùng mã giả tựa-Pascal để minhhoạ các giải thuật Sau này - khi cần – người học sẽ chuyển các giải thuật đó thành chươngtrình trong một ngôn ngữ cụ thể (dĩ nhiên phải có sự điều chỉnh đôi chút cho phù hợp vớingôn ngữ được dùng)
Vương Đức Bình
1 Có thể đọc các tài liệu sau đây:
1 Mathamatics for computer science (Tom Leighton – Massachusetts Institute of Technology).
2 Toán rời rạc (Nguyễn Đức Nghĩa – Nguyễn Tô Thành NXB Giáo Dục 1997)
3 Discrete Mathematics and its applications (Rosen K H Có bản dịch của Phạm Văn Thiều – Đặng Hữu Thịnh - NXB Khoa học và kỹ thuật 1998)
4 Lý thuyết Ôtômat hữu hạn và thuật toán (Phan Đình Diệu – NXB ĐHTHCN – Hà nội – 1977).
5 Symbolic Logic and Mechanical Theorem Proving – CHIN-LIANG CHANG & RICHARD C T LEE.
6 Lý thuyết đồ thị – PTS Nguyễn Cam & PTS Chu Đức Khánh – NXB Tp Hồ Chí Minh – 1999.
Trang 3QUI ƯỚC VỀ VIẾT TẮT VÀ KÍ HIỆU.
Trang 4Chương I
CÁC KIẾN THỨC CƠ SỞ.
I Lô gích mệnh đề:
ngữ mà do ý nghĩa của phát biểu mà có Chúng ta cũng biết một câu nói,
một phát biểu có thể chứa trong nó đến ba chức ngôn ngữ:
Chức mệnh lệnhChức cảm xúcChức miêu tả
Vì vậy phát biểu: “Anh phải đến đó trước 6 giờ!” nếu xét về chức mệnhlệnh không thể cho phép ta xác định tính đúng sai mà đơn thuần chỉ là mộtcâu ra lệnh, buộc phải thực hiện một yêu cầu! Tương tự, phát biểu “Tìnhyêu đẹp như hoa hồng buổi sớm” thuần tuý chỉ mang tính cảm xúc - nó chỉđem lại một cảm xúc mơ hồ êm dịu nào đó - không đem lại một giá trịchân lí đúng hay sai; nhưng phát biểu “5 < 7” hoàn toàn là một miêu tả vềquan hệ giữa hai số, tính đúng sai của nó do lịch sử hoạt động thực tiểncủa con người xác nhận2 Tính chân lí - do đó - không phụ thuộc vào ngônngữ mang phát biểu Ví dụ các phát biểu sau:
I am studying logic
J’ étudie la logique
Ich studiere Logik
Tôi học môn lô gích
Hoc(Tôi, Lôgich)Là năm phát biểu khác nhau, nhưng chỉ là cùng một mệnh đề
Môn học nghiên cứu về các quan hệ giữa các mệnh đề gọi là môn logicmệnh đề (propositional logic)
2 “Hoạt động thực tiển của con người đã làm cho ý thức của con người lập di lập lại hàng nghìn lần những cách thức lôgích khác nhau đặng làm cho những cách thức này có thể có những ý nghĩa của công lí” – (Lênin).
Trang 52 Các phép toán lô gích và phép toán bit.
Để dễ dàng trong các suy luận chúng ta sẽ kí hiệu các mệnh đề bằng cácchữ cái hoa Ví dụ:
P: Tuyết có màu trắng
Q: Đường là một hydrocarbon
Nếu một mệnh đề P là đúng thì ta nói P có giá trị chân lí là TRUE (hoặctrong phần lớn các trường hợp sau sẽ được ghi giá trị là 1) Nếu một mệnhđề P là sai thì ta nói P có giá trị chân lí là FALSE (hoặc trong phần lớn cáctrường hợp sau sẽ được ghi giá trị là 0)
Với các qui ước đó về ghi giá trị chân lí của các mệnh đề, chúng ta có thểđịnh nghĩa một số phép toán mệnh đề như sau:
Phép toán VÀ (dùng toán tử AND hoặc ^), phép toán HOẶC (dùng toán tử
OR hoặc v), phép toán HOẶC LOẠI (eXclusive OR - dùng toán tử XOR),phép KÉO THEO (dùng toán tử ) và phép phủ định (negation – dùngtoán tử NOT) Bảng chân trị cho các phép toán nói trên ghi trong bảng sauđây:
P: Năm 2002 là năm nhuận
Q: Năm 2002 không phải năm nhuận
Nhưng hai mệnh đề sau đây không phải là hai mệnh đề phủ định lẫn nhau:
R: Số hàng tồn kho lớn hơn 300 đơn vị
S: Số hàng tồn kho bằng đúng 300 đơn vị
Mà chỉ là hai mệnh đề tương phản (Vì sao? Hãy tự nghĩ ra thêm một ví dụkhác!)
Trang 6Trong kỹ thuật các phép toán trên có thể dùng để biểu diễn sơ đồ cácmạch điện:
Hình 1: Mạch điệnhiện thực cho phéptoán logich L = AAND B với mỗi côngtắc lấy giá trị 1 nếucông tắc đó đóng vàlấy giá trị 0 nếu công tắc đó mở Ta thấy đèn L chỉ sáng lên khi cả haicông tắc A và B đều đóng
Hình 2: Mạch điệnhiện thực cho phéptoán logich L = A OR
B Ta thấy đèn Lsáng lên khi mộttrong hai công tắctrong trạng tháiđóng
Có thể thấy rằng các phép toán lôgich AND, OR, XOR, NOT nói trên tác động lêncác mệnh đề để cho kết quả cũng là một mệnh đề Nói cách khác các phép toán đócó tính chất “đóng kín” trên tập hợp các mệnh đề Cũng giống như trong đại số,điều đó dẫn chúng ta đến khả năng xây dựng các biểu thức mệnh đề (hay hàm củacác mệnh đề), ie: Hàm mà các tham biến là các mệnh đề, ví dụ:
X= (A and B ) OR (NOT C and D) OR (E and F) (*)
Trong ví dụ trên biến X là hàm của các biến A,B,C,D,E,F và có thể viếtlại dưới dạng:
X=f(A,B,C,D,E,F)=(A and B ) OR (NOT C and D) OR (E and F) (*)
Vế phải của phương trình (*) chính là một biểu thức mệnh đề
Độ ưu tiên của toán tử:
Trong một biểu thức mệnh đề gồm nhiều toán hạng và toán tử, các phéptoán được thực hiện theo thứ tự ưu tiên như sau:
Toán tử () trong cùng nếu có sẽ được thực hiện trước
Trang 7 Nếu không có toán tử () thì thứ tự ưu tiên thực hiện là: NOT > AND > OR>
Trên một dãy không có cặp () các toán tử cùng độ ưu tiên thì phép toán bên trái được thực hiện trước
Như vậy phương trình (*) nói trên nếu được viết lại:
thì sẽ được thực hiện theo thứ tự sau:
(E and F)
A and B
NOT C
NOT C and D
(A and B) OR (NOT C and D)
(A and B) OR (NOT C and D) OR (E and F) Tuy nhiên cần lưu ý trong một số ngôn ngữ lập trình – chẳng hạn ngôn ngữ PASCAL - việc bỏ bớt các toán tử () như trong biểu thức (**) là không được phép mà phải viết tường minh như biểu thức (*) Trong trình bày trên, thay vì ghi các giá trị TRUE hoặc FALSE trong bảng chân trị chúng ta đã dùng các kí hiêu 1 hoặc 0 để thay thế, điều này cho phép nghĩ đến các phép toán logich NOT, AND,OR, XOR có thể được mở rộng trên tập hợp các số được biểu diễn trong hệ nhị phân (các phép toán bit) Để đảm bảo tính hệ thống của giáo trình, đề nghị sinh viên tham khảo về vấn đề này trong chương II (phần số nguyên) 3 Tương đương lô gích Hai biểu thức logich f(X,Y,Z, ) và g(X,Y,Z, ) gọi là tương đương lôgich nếu chúng nhận được cùng một giá trị ứng với mỗi bộ giá trị có thể có của (X,Y,Z, )
Ví dụ 1: Xét hai biểu thức lôgich:
g(A,B,C)=(A AND B) OR (A AND C) (2)
Việc chứng minh f và g là tương đương lôgich có thể được thực hiện “thô” nhờ vào việc thiết lập bảng chân trị như sau:
A B C B OR C A AND (B OR C) A AND B A AND C (A AND B) OR (A AND C)
Trang 8Ví dụ 2: Xét hai biểu thức lôgích.
4 Vị ngữ và lượng từ
Trong lôgich mệnh đề chúng ta xây dựng nên các biểu thức lôgich bằng nhữngmệnh đề Các phép toán mệnh đề xử lí các mệnh đề như những “nguyên tử” vàbỏ qua cấu trúc toàn thể của quá trình suy luận Tuy nhiên, có nhiều trường hợpviệc diễn đạt các ý tưởng không thể thực hiện một cách đơn giản như vậy Ví dụdiễn đạt sau đây:
P: Mọi người đều chết
Q: Socrate là người
R: Socrate phải chết
Tính đúng sai của mệnh đề R chỉ có thể được xác lập trong khung quan hệ cấu
trúc với hai mệnh đề được phát biểu trước đó Trong ví dụ này tính đúng đắn của
R được dẫn xuất từ tính đúng đắn của P và Q và bản thân cấu trúc của suy luận.
Xét ví dụ vui trong chuyện dân gian:
P: Vợ mình là con người ta
Q: Con mình do vợ đẻ ra
R: Suy đi nghĩ lại chẳng bà con chi
Trang 9Tính đúng sai của mệnh đề cuối cùng đặt ra nhiều vấn đề phải suy nghĩ!Để vượt qua khó khăn đó, hãy xét tiếp một số ví dụ:
- Xem phát biểu P : “x lớn hơn 3” Phát biểu này chưa thể xác định đượctính đúng sai trừ khi biết rõ giá trị hoặc tập giá trị của x Khi đó phát biểu
P đúng hay sai phụ thuộc vào x Có thể nói P là một hàm3 theo biến x:P(x) Một khi biến x được thay bằng một giá trị cụ thể (ví dụ x=7) thì khiđó phát biểu P(x) trở thành P(7): “7 lớn hơn 3” là một mệnh đề
- Xem hai phát biểu: “Mọi số nguyên đều có thể phân tích được thành tíchcác số nguyên tố” và “Ai cũng chết” Hai phát biểu này đều mang một
yếu tố có tính chất định lượng “Mọi số nguyên” “Mọi người” Để kiểm tra
tính đúng dắn của phát biểu này hoặc phải kiểm tra tất cả trường hợp (mọisố, mọi người) hoặc phải chỉ ra được một (và cũng chỉ cần một mà thôi)trường hợp không thoả mãn
- Xem phát biểu: “Có ít nhất một trường hợp a bằng 7” Phát biểu này
mang một yếu tố có tính chất định lượng “Có ít nhất một” Khác với phát
biểu thứ hai, để xác định tính đúng sai của phát biểu này chỉ cần chỉ ramột trường hợp giá trị của a thoả mãn (a=7) là đủ
Loại phát biểu như trong ba ví dụ trên được gọi là các vị từ Việc xác nhậntính đúng sai của các vị từ luôn luôn cần đến các lượng tử (quantifier):
Lượng tử phổ dụng (universal quantifier): Với mọi – kí hiệu: Lượng tử tồn tại (existential quantifier): Tồn tại ít nhất một – kí hiệu:
Vậy:
Phát biểu: “Ai cũng chết” có thể được viết lại:
x, P(x) trong đó P(x) là “x phải chết”
Phát biểu: “Có ít nhất một trường hợp a bằng 7” có thể được viết lại:
a, Q(a) trong đó Q(a) là “a=7”
Một khi vị từ đi kèm theo lượng tử nó trở thành một mệnh đề nên có thểáp dụng các phép toán mệnh đề như vừa nghiên cứu trên Tuy nhiên phủđịnh của sự phổ biến một tính chất nào đó chính là sự tồn tại ít nhất mộttrường hợp ngược lại Và phủ định của sự tồn tại ít nhất một trường hợp cótính chất nào đó chính là sự phổ biến của trường hợp ngược lại
Từ đó ta có hai tương đương logic sau:
Trang 10Ví dụ:
Phủ định của:
) x
* t ) x ( : 0 ,
Chính là:
) x
* t ) x ( : 0 ,
Các vấn đề liên quan khác về lôgich vị từ sẽ còn được trình bày tiếp trong chương III: SUY LUẬN TOÁN HỌC
II Tập hợp và hàm:
5 Khái niệm tập hợp
“Tập hợp” là một khái niệm ban đầu của toán học, không được định nghĩa (vàcũng không thể định nghĩa được)4 Có thể quan niệm tập hợp như một sự gomgóp các đối tượng có chung một tính chất nào đó Các đối tượng chứa trong tập
hợp gọi là các phần tử của tập hợp Có thể biểu diễn tập hợp bằng giản đồ Venn Giản đồ Venn là một đường cong phẳng khép kín không tự cắt Giản đồ
Venn chia mặt phẳng ra làm hai vùng: vùng bên trong chứa các phần tử củatập hợp, vùng bên ngoài chứa các phần tử không thuộc tập hợp
con người vậy ông là cây cối hay là đất đá? Báo Tuổi Trẻ đã thừa cơ diễn giải câu nói này thành:”Thủ tướng
Malaysia Mahathir Mohamed đã phát biểu: “Ông Ariel Sharon – thủ tướng Israel – là đồ thú vật” “ Một
trường hợp sử dụng lôgich thật hay và cũng thật “ác liệt”!
B là phần tử của tập hợp A khôngphải là phần tử của tập hợp
Trang 11(Tập vũ trụ U chứa tất cả các tập đang xét, vì vậy một phần tử không thuộc vềmột tập hợp đang xét chắc chắn phải thuộc về U, ie: trong mọi trường hợp phầntử này được xác định một cách đầy đủ (well-defined)).
Cũng có thể biểu diễn tập hợp bằng cách liệt kê các phần tử của nó nhưtrong ví dụ sau:
A=4 , 5 , A , Z } Tập A có các phần tử 4,5,A,Z
Cách này chỉ có thể thực hiện đốivới các tập có số phần tử hữu hạn (và ítphần tử)
Để biểu diễn tập hợp thuận lợi hơn thường ta dùng cách mô tả:
A=x / P ( x ) Tập A gồm các phần tử x thoả mãn tính chất P
Ví dụ : A=x/ (x 4).(x2 25) 0
Để nói rằng x là một phần tử của tập A ta ghi: x A
Để nói rằng x không là một phần tử của tập A ta ghi: x A
Trong ví dụ (*) trên đây ta có: 4 A , 5 A , 5 A , A
Ta chấp nhận sự tồn tại một tập hợp không có phần tử nào cả, gọi là tậphợp rỗng và được kí hiệu:
Tập hợp con:
Giản đồ Venn:
Trang 12Khái niệm tập hợp con cũng dẫn tới khái niệm hai tập hợp đồng nhất (haynói đơn giản là “bằng nhau”) như sau:
đn
Ví dụ:
Cho các tập hợp A=a ; b ; c ; 4 ; 7 B= a; 5; 8; c; 7; b; 4; 12; 15
C= x| x là số nguyên thoả phương trình (x-4).(x-7)=0
Ta có : A B và C A nhưng A C và B C
Định lí:
Với mọi tập hợp A, B ta có: i) A
ii) A Aiii) (A B) and (B C) (A C)
6 Các phép toán tập hợp
Định nghĩa: Cho các tập hợp A, B và X ta định nghĩa các phép toán hội (
), giao (), hiệu (\) của hai tập hợp A, B như sau:
X=AB ( x: (xX) (x A) or (x B))X=AB ( x :(xX) (x A) and ( x B))
Trang 13vii) A(BC)=(AB)(AC) A(BC)=(AB)(AC)
Chứng minh các tính chất trên xem như bài tập.Tính chất i) gọi là tính giao hoán – một phép toán thoả mãn tính chất này thì khilàm toán ta không cần quan tâm đến vị trí của hai toán hạng trong biểu thức liên quan
Tính chất vi) gọi là tính kết hợp – một phép toán thoả mãn tính chất này thì khi làmtoán ta không cần quan tâm đến thứ tự thực hiện các phép toán; ie: ưu tiên thực hiện nhómnào trước “cũng vậy” Thường thường nếu phép toán thoả mãn tính chất này ta không cầnquan tâm đến việc phân phối các cặp dấu ngoặc nữa, eg: thay vì viết A(BC) thì viết A
BC “cũng không chết ai”
Tính chất vii) gọi là tính phân phối
Tích Descartes của hai tập hợp:
Định nghĩa: Cho hai tập hợp A và B đều khác tập hợp rỗng Tích Descartes của
A và B, kí hiệu AxB, là tập gồm tất cả các cặp phần tử (x,y) với x A và
Có thể tổng quát hoá định nghĩa trên như sau:
Định nghĩa: Cho n tập khác rỗng Ai , tích Descartes của n tập đó, được kí hiệuvà định nghĩa như sau:
Trang 141 i
i i n
i 2 1
i (x ,x , ,x , ,x ) i 1,n: x A
Nếu n lớn hơn 3 thì định nghĩa trên không thể có một biểu diễn hình học được.Trường hợp đặc biệt, khi tất cả Ai là đồng nhất bằng A thì ta ghi tích trên là : An
7 Ánh xạ và các khái niệm liên quan:
Khái niệm ánh xạ: Cho hai tập hợp A và B, nếu có một qui tắc f liên kết một
phần tử a A với một phần tử b B thì ta sẽ kí hiệu: b=f(a)
Nếu có qui tắc f thoả mãn điều kiện với mỗi phần tử a của A có và có duy nhất
một phần tử b của B liên kết với a thì ta nói f là một ánh xạ từ A đến B Khi đó ta
nói A là tập xác định của ánh xạ f B là tập hợp đến của ánh xạ f và b là ảnh của
a qua f Người ta cũng dùng thuật ngữ “Hàm” để gọi ánh xạ Tuy nhiên thôngthường thuật ngữ hàm6 được dùng cho các ánh xạ mà tập xác định và tập hợpđến là các tập hợp số mà thôi Một cách hình thức ta có định nghĩa sau:
Định nghĩa: Cho hai tập hợp A, B và một qui tắc f liên kết các phần tử
của tập hợp A với các phần tử của tập hợp B:
f song ánh (f đơn ánh) and (f toàn ánh)
Ví dụ: Xét qui tắc f(x)=3x+2 định nghĩa trên tập hợp R các số thực, ta
thấy:
f là một ánh xạ
hơn nữa f là đơn ánh
hơn nữa f là toàn ánh
6 Cũng cần phân biệt thuật ngữ “Hàm” hay dùng trong các ngôn ngữ lập trình Chắc do xuất phát từ tiếng Anh “Function” hoặc tiếng Pháp “Fonction” mà thuật ngữ “Hàm” được dùng thống nhất cả trong toán học lẫn trong công việc lập trình! Tuy nhiên trong các chương trình nguồn của máy tính nên dùng thuật ngữ “Chức năng” để dịch từ “Function” thì xác đáng hơn