Tải bản đầy đủ (.doc) (23 trang)

Giáo trình Toán rời rạc Chương 1

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 (190.25 KB, 23 trang )

TRƯỜ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
1
LỜ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ên Internet
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 đủ cho cô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ới nhữ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 tin là không thể thiếu
được.
Đ
Có khá nhiều tài liệu về đề tài này
1
để 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ến việ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 sinh viê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 đây là 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ần phả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 để minh hoạ 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ương trì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ới ngô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.
2
QUI ƯỚC VỀ VIẾT TẮT VÀ KÍ HIỆU.
ie id est Có nghóa là:
eg exam gratia Ví dụ như:
qed quod erat demonstrandum Đó là điều phải chứng minh.
3
Chương I
CÁC KIẾN THỨC CƠ SỞ.
I. Lô gích mệnh đề:
o Mệnh đề.
Một phát biểu (statement) được gọi là một mệnh đề (proposition) nếu phát
biểu này có thể được lượng giá là đúng (TRUE) hoặc sai (FALSE); chúng ta
không xét đến các phát biểu có thể vừa đúng vừa sai, hoặc không thể xác
đònh tính đúng sai. Tính đúng sai của một phát biểu không phải do từ 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ệnh
Chức cảm xúc
Chứ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ệnh
lệnh không thể cho phép ta xác đònh tính đúng sai mà đơn thuần chỉ là một
câ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ình
yê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ển của con
người xác nhận
2
. Tính chân lí - do đó - không phụ thuộc vào ngôn ngữ 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 logic
mệ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).
4
o 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ác

chữ 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ặc
trong 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ác
trườ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ùng
toá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 Q P AND Q P OR Q P XOR Q P

Q
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 1
Các toán tử (operator) AND, OR, XOR,

là các toán tử hai ngôi (binary
operator), ie: cần đến hai toán hạng (operand). Phép toán NOT là phép toán
một ngôi(unary operator):
P NOT P
0 1

1 0
Lưu ý rằng hai mệnh đề P và Q là phủ đònh lẫn nhau nếu P đúng thì Q phải
sai (và ngược lại). Ví dụ : Hai mệnh đề sau đây là phủ đònh lẫn nhau:
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!).
5
Trong kỹ thuật các phép toán trên có thể dùng để biểu diễn sơ đồ các mạch
điện:
Hình 1: Mạch điện
hiện thực cho phép
toán logich L = A
AND B với mỗi công
tắc lấy giá trò 1 nếu
cô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ả hai công
tắc A và B đều đóng.
Hình 2: Mạch điện
hiện thực cho phép
toán logich L = A OR
B . Ta thấy đèn L
sáng lên khi một
trong hai công tắc
trong 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ên
cá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ủa cá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ết lạ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ép
toá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.
6
 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:
X= A and B OR NOT C and D OR (E and F) (**)
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)
o 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:
f(A,B,C)=A AND (B OR C) (1)
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)
0 0 0 0
0
0 0
0
0 0 1 1
0
0 0
0
0 1 0 1
0

0 0
0
0 1 1 1
0
0 0
0
7
1 0 0 0
0
0 0
0
1 0 1 1
1
0 1
1
1 1 0 1
1
1 0
1
1 1 1 1
1
1 1
1
Theo bảng chân trò trên, với mỗi bộ giá trò (A,B,C) chúng ta thấy giá trò ở
các hàng tương ứng trong hai cột thứ 5 và thứ 7 là như nhau, vì vậy hai biểu
thức (1) và (2) là tương đương lôgich.
Ví dụ 2: Xét hai biểu thức lôgích.
f(X,Y): X

Y

g(X,Y): Y OR (NOT X)
Cùng với cách làm như trên ta có thể kiểm chứng f(X,Y) và g(X,Y) là tương
đương lôgich.
Kí hiệu:
Khi hai biểu thức lôgich f và g là tương đương ta ghi: f

g
Khái niệm tương đương lôgich là rất quan trọng trong kỹ thuật máy tính vì nó liên
quan đến việc tối ưu hoá chương trình máy tính (phần mềm) cũng như đơn giản hoá
các mạch điện tử (phần cứng). Trong ví dụ 1 biểu thức (1) rõ ràng là đơn giản hơn
biểu thức (2) còn trong ví dụ 2 sự tương đương lôgích cho phép chúng ta thay mọi
biểu thức chứa toán tử

thành biểu thức chỉ chứa hai toán tử OR và NOT, nghóa
là giảm bớt được một dạng toán tử. Chúng ta còn cần xây dựng những công cụ
mạnh hơn để thực hiện các quá trình đơn giản các biểu thức lôgich này và sẽ được
trình bày trong các chương sau.
o 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ững
mệ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ợp việ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.
8
Tí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 được
tí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àm
3
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ích
cá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ọi số,
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ỉ ra mộ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ận
tí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ột trườ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:
NOT (

x, P(x)) tương đương với (

x,NOT P(x))
NOT (

x,P(x)) tương đương với (

x, NOT P(x))
3
Về khái niệm hàm xin xem tiếp trong phần II của chương này.
9

×