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

giao trinh toan roi rac ppsx

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 (725.04 KB, 121 trang )

CHƯƠNG 1. LÝ THUYẾT CƠ SỞ
BÀI 1: LOGIC VÀ MỆNH ĐỀ
1. Mở đầu:
- Các quy tắc của logic cho ý nghĩa chính xác của các mệnh đề. Các quy tắc này dùng được sử dụng
để phân biệt giữa các lập luận toán học đúng hoặc không đúng.
- Các quy tắc của logic đóng vai trò quan trọng trong suy luận toán học và nhiều ứng dụng trong
lĩnh vực tin học như: thiết kế các mạng trong máy tính, xây dựng các chương trình máy tính, kiểm
tra tính đúng đắn của các chương trình và nhiều ứng dụng khác.
2. Mệnh đề:
• Khái niệm:
Một mệnh đề là một câu trần thuật đúng hoặc sai, chứ không thể vừa đúng vừa sai.
• Ví dụ:
+ Ví dụ 1: Xét các câu sau:
1. Hà nội là thủ đô của Việt nam
2. Việt trì là một thành phố biển.
3. 1 + 1 = 2
4. 2 + 4 = 5
Các câu 1 và 3 là đúng, trong khi các câu 2 và 4 là sai và như vậy cả 4 câu trên là các mệnh đề.
+ Ví dụ 2: Xét các câu sau:
1. Hôm nay là thứ mấy?
2. Vấn đề này cần được xem xét cẩn thận.
3. x + 1 = 2
4. x + y = z
Các câu 1 và 2 không phải là mệnh đề vì chúng không phải là câu trần thuật. Còn các câu 3 và
4 không phải là mệnh đề vì chúng chẳng đúng cũng chẳng sai bởi các biến trong các câu đó
còn chưa được gán cho giá trị cụ thể nào.
Từ các câu loại này có thể tạo thành các mệnh đề bằng nhiều cách khác nhau (xem phần sau
của chương này).
• Phân loại mệnh đề:
- Mệnh đề đơn (sơ cấp): Là những mệnh đề chỉ có một câu.
- Mệnh đề phức hợp: Là những mệnh đề được kết hợp từ nhiều mệnh đề.


• Quy ước:
- Các mệnh đề và các biến được ký hiệu bởi các chữ cái như: p,q,r,s,
- Giá trị chân lý của một mệnh đề là đúng và sẽ được ký hiệu là T nếu đó là một mệnh đề đúng,
và là sai và được ký hiệu là F, nếu đó là một mệnh đề sai.
- Một bảng chân lý trình bày mối quan hệ giữa các giá trị chân lý của các mệnh đề. Bảng giá trị
chân lý đặc biệt có ý nghĩa trong việc xác định giá trị chân lý của các mệnh đề được tạo ra từ
các mệnh đề đơn giản hơn.
3. Các định nghĩa phép toán mệnh đề:
Phép toán mệnh đề là phương pháp tạo ra các mệnh đề mới từ các mệnh đề đã có – Geogre Boole
“Các định luật của tư duy”.
+ Định nghĩa 1: Giả sử p là một mệnh đề. Câu “không phải là p” là một mệnh đề, được gọi là phủ
định của p. Phủ định của p được ký hiệu là ¬p (hoặc
p
)
- Bảng chân lý:
p ¬p
T
F
F
T
- Ví dụ: Tìm phủ định của mệnh đề: “Hôm nay là chủ nhật”.
Phủ định của mệnh đề trên là: “Hôm nay không phải là chủ nhật”.
Phủ định của một mệnh đề cũng có thể được xem như là kết quả tác dụng của toán tử phủ
định lên một mệnh đề. Toán tử phủ định xây dựng một mệnh mới từ mệnh đề đơn hiện có.
+ Định nghĩa 2: Giả sử p và q là hai mệnh đề. Mệnh đề “p và q” được ký hiệu bởi p ^ q là đúng khi
cả p và q là đúng, còn sai trong các trường hợp còn lại. Mệnh đề p ^ q được gọi là hội của p và q.
- Bảng chân lý:
p Q p^q
T
T

F
F
T
F
T
F
T
F
F
F
- Ví dụ: Giả sử p là mệnh đề “Hôm nay là chủ nhật” và q là mệnh đề “Hôm nay trời mưa”. Tìm
hội của các mệnh đề p và q.
Giải: Hội của hai mệnh đề p ^ q là mệnh đề “Hôm nay là chủ nhật và trời mưa”. Mệnh đề
này là đúng vào hôm chủ nhật trời mưa và là sai vào bất kỳ ngày nào không phải là chủ
nhật và vào ngày chủ nhật nhưng trời không mưa.
+ Định nghĩa 3: Giả sử p và q là hai mệnh đề. Mệnh đề “p hoặc q”, được ký hiệu là p ۷ q, là mệnh
sai khi cả p và q đều sai, và đúng trong các trường hợp còn lại (có nghĩa là hoặc q là đúng, hoặc
q là đúng, hoặc cả p và q cùng đúng). Mệnh đề p ۷ q được gọi là tuyển của p và q.
- Bảng chân lý:
p Q p v q
T
T
T
F
T
T
F
F
T
F

T
F
- Ví dụ 1: Giả sử p là mệnh đề “Hôm nay là chủ nhật” và q là mệnh đề “Hôm nay trời mưa”.
Tìm tuyển của các mệnh đề p và q.
Giải: Tuyển của p và q (p ۷ q) là mệnh đề: “Hôm nay là chủ nhật hoặc hôm nay trời mưa”.
Mệnh đề này đúng vào bất kỳ ngày nào là chủ nhật hoặc ngày trời mưa (kể cả ngày chủ
nhật có mưa). Nó chỉ sai khi ngày đó không phải là ngày chủ nhật và trời không mưa.
- Ví dụ 2: Giả sử p là mệnh đề “Các sinh viên đã học giải tích có thể theo học lớp này.” và q là
mệnh đề “Các sinh viên đã học đại số có thể theo học lớp này.”. Tìm tuyển của các mệnh đề p
và q.
Giải: Tuyển của p và q (p ۷ q) là mệnh đề: “Các sinh viên đã học giải tích hoặc đại số có
thể theo học lớp này.”
Mệnh đề trên còn có thể hiểu:
“Các sinh viên đã học giải tích hoặc đại số,
nhưng không phải cả hai môn, đều có thể theo học lớp này.”
Ở đây, người ta muốn nói rằng
+ Định nghĩa 4: Giả sử p và q là hai mệnh đề. Mệnh đề tuyển loại trừ của p và q, ký hiệu là p

q là
một mệnh đề chỉ đúng khi một trong hai mệnh đề p và q là đúng và sai trong mọi trường hợp còn
lại (mệnh đề p

q chỉ đúng trong trường hợp p hoặc q là đúng).
- Bảng chân lý:
p Q p

q
T
T
F

F
T
F
T
F
F
T
T
F
- Ví dụ: Giả sử p là mệnh đề “Tôi sẽ mua một chiếc máy tính để bàn.” và q là mệnh đề “Tôi sẽ
mua một chiếc máy tính sách tay.”. Tìm tuyển loại trừ của các mệnh đề p và q.
Giải: Mệnh đề tuyển loại trừ của p và q (p

q) là mệnh đề: “Tôi sẽ mua một chiếc máy
tính để bàn hoặc sách tay.”.
Mệnh đề trên có nghĩa là:
“Tôi sẽ mua một chiếc máy tính để bàn hoặc sách tay
nhưng không phải mua cả hai.”
+ Định nghĩa 5: Giả sử p và q là hai mệnh đề. Mệnh đề kéo theo “p → q” là một mệnh đề chỉ sai khi
p đúng và q sai, còn đúng trong mọi trường hợp còn lại.
Trong phép kéo theo nói trên p được gọi là giả thuyết còn q được gọi là kết luận.
- Bảng chân lý:
p q p → q
T
T
F
F
T
F
T

F
T
F
T
T
- Ví dụ: Giả sử p là mệnh đề “Hôm nay là thứ ba.” và q là mệnh đề “Hôm nay học toán rời rạc.”.
Tìm mệnh đề p kéo theo q.
Giải: Mệnh đề kéo theo của mệnh đề p và q là mệnh đề: “Nếu hôm nay là thứ ba, thì chúng
ta sẽ học toán rời rạc.”
Mệnh đề kéo theo trên rõ ràng là chỉ sai khi hôm nay là thứ ba mà chúng ta không học toán
rời rạc.
• Phép kéo theo xuất hiện ở nhiều chỗ trong các suy luận toán học, nên có rất nhiều thuật ngữ
được dùng để diễn đạt p → q. Dưới đây là một số ví dụ:
o “Nếu p thì q”
o “p kéo theo q”
o “p là điều kiện đủ của q”
o “q là điều kiện cần của p”.
o Trong ngôn ngữ lập trình kép theo được thể hiện trong câu lệnh lập trình nếu p thì S (if p
then S) trong đó p là mệnh đề còn S là một đợn chương trình (gồm một hoặc nhiều câu lệnh
cần được thực hiện).
• Có một số phép kéo theo liên quan có thể được tạo từ p → q:
o q → p: được gọi là mệnh đề đảo của mệnh đề p → q.
o ¬q → ¬p: được gọi là mệnh đề phản đảo của mệnh đề p → q.
+ Định nghĩa 6: Cho p và q là hai mệnh đề. Mệnh đề tương đương “p ↔ q” là một mệnh đề chỉ đúng
khi p và q có cùng giá trị chân lý và sai trong mọi trường hợp còn lại.
- Bảng chân lý:
p Q p ↔ q
T
T
F

F
T
F
T
F
T
F
F
T
- Chú ý: Mệnh đề tương đương p ↔ q là đúng chỉ khi hai mệnh đề kéo theo p → q và q → p đều
đúng (
p) (q q) (p q p ←∧→⇔↔
). Vì thế mệnh đề tương đương p ↔ q còn được phát biểu: “p
nếu và chỉ nếu q” hay “p là cần và đủ đối với q”.
+ Độ ưu tiên của các toán tử logic:
Ưu tiên mức 1: ()
Ưu tiên mức 2: ¬.
Ưu tiên mức 3: ^, ۷.
Ưu tiên mức 4: →, ↔.
4. Các phép toán logic và các phép toán bit:
4.1 Khái niệm:
o Biểu diễn thông tin dưới dạng nhị phân (bit): 0 – không có năng lượng, 1 – có năng lượng.
o Biểu diễn giá trị chân lý: 1- đúng, 0 – sai.
o Biến Boole chỉ nhận giá trị đúng hoặc sai.
4.2 Phép toán bit:
Các phép toán bit trong máy tính tương ứng với các liên từ logic: ^, ۷,

tương ứng là AND,
OR và XOR.
Bảng chân lý của các phép toán bit:

OR 0 1 AND 0 1 XOR 0 1
0
1
0
1
1
1
0
1
0
0
0
1
0
1
0
1
1
0
4.3 Định nghĩa:
Một xâu bit (hoặc xâu nhị phân) là dãy không hoặc nhiều bit. Chiều dài của xâu là số các bit trong
xâu đó.
4.4 Ví dụ:
Tìm AND, OR, XOR đối với hai xâu: 01101 10110 và 11000 11101.
01101 10110
11000 11101
__________
OR bit 11101 11111
AND bit 01000 10100
XOR bit 10101 01011

5. Sự tương đương của các mệnh đề:
Tương đương mệnh đề có nghĩa là các mệnh đề khác nhau nhưng có cùng giá trị chân lý. Trong
các lập luận thường thay thế các mệnh đề phức hợp bởi các mệnh đề tương đương đơn giản hơn.
5.1 Định nghĩa 1(Phân loại mệnh đề phức hợp theo giá trị chân lý):
o Một mệnh đề phức hợp mà luôn đúng với bất kỳ giá trị chân lý của các mệnh đề thành phần
của nó được gọi là hằng đúng.
o Một mệnh đề mà luôn luôn sai được gọi là mâu thuẫn.
o Một mệnh đề không phải là hằng đúng, cũng không phải là mâu thuẫn được gọi là tiếp liên.
o Ví dụ: Cho mệnh đề p. Xét bảng chân lý của các mệnh đề p ۷ ¬p và p ^ ¬p.
Mệnh đề p ۷ ¬p luôn cho giá trị đúng với mọi giá trị của p do đó nó hằng đúng, mệnh đề p ^
¬p luôn cho giá trị sai với mọi p do đó nó là một mâu thuẫn.
P ¬p p ۷ ¬p p ^ ¬p
T
F
F
T
T
T
F
F
5.2 Định nghĩa 2 (Tương đương logic):
Các mệnh đề p và q được gọi là tương đương logic nếu p ↔ q là hằng đúng.
Ký hiệu p

q để chỉ p và q là tương đương logic.
(Để xác định hai mệnh đề có tương đương hay không ta dùng bảng chân lý.)
•Ví dụ 1: Chứng minh rằng ¬(p ۷ q) và ¬p ^ ¬q là tương đương logic.
p q ¬p ¬q p ۷ q ¬(p ۷ q) ¬p ^ ¬q
T T F F T F F
T F F T T F F

F T T F T F F
F F T T F T T
Bảng chân lý đối với ¬(p ۷ q) và ¬p ^ ¬q.
•Ví du 2: Chứng mimh rằng p → q và ¬p ۷ q là tương đương logic.
p q ¬p p → q ¬p ۷ q
T T F T T
T F F F F
F T T T T
F F T T T
Bảng chân lý đối với rằng p → q và ¬p ۷ q.
•Ví du 3: Chứng mimh rằng p

q và ¬(p ↔ q) là tương đương logic.
p q p → q p ← q p ↔ q ¬(p ↔ q) p

q
T T T T T F F
T F F T F T T
F T T F F T T
F F T T T F F
Bảng chân lý đối với p

q và ¬(p ↔ q).
5.3 Bảng tương đương logic:
TƯƠNG ĐƯƠNG TÊN GỌI
p ^ T <=> p
p ۷ F <=> p
Luật đồng nhất
p ۷ T <=> T
p ^ F <=> F

Luật nuốt
p ۷ p <=> p
p ^ p <=> p
Luật lũy đẳng
¬p(¬q) <=> p
Luật phủ định kép
p ۷ q <=> q ۷ p
p ^ q <=> q ^ p
Luật giao hoán
p ۷ q ۷ r <=> (p ۷ q) ۷ r <=> p ۷ (q ۷ r)
p ^ q ^ r <=> (p ^ q) ^ r <=> p ^ (q ^ r)
Luật kết hợp
p ۷ (q ^ r) <=> (p ۷ q) ^ (p ۷ r)
p ^ (q ۷ r) <=> (p ^ q) ۷ (p ^ r)
Luật phân phối
¬(p ^ q) <=> ¬p ۷ ¬q
¬(p ۷ q) <=> ¬p ^ ¬q
Luật De Morgan
p ۷ ¬p <=> T
p ^ ¬q <=> F
(p → q) <=> (¬p ۷ q)
Luật DeMorgan mở rộng
(Bảng tương đương logic).
Ví dụ 1: Chứng minh rằng ¬(p ۷ (¬p ^ q)) và ¬p ^ ¬q là tương đương.
Biến đổi vế trái theo bảng tương đương logic.
Ví dụ 2: Chứng minh rằng (p ^ q) → (p ۷ q) là hằng đúng.
o Mệnh đề (p ^ q) → (p ۷ q) là hằng đúng khi mệnh đề luôn đúng với bất kỳ giá trị chân lý
nào của các mệnh đề thành phần. Điều đó có nghĩa là mệnh đề tương đương logic với T.
o Sử dụng phép biến đổi tương đương (p → q)


(¬p ۷ q).
6. Vị ngữ và lượng từ:
6.1 Vị ngữ:
o Xét các câu: “x > 3 – x lớn hơn 3”; “ x = y + 3”; …
o Hàm mệnh đề là một câu gồm 2 phần: phần chủ ngữ - biến, phần vị ngữ cho biết một tính chất
mà chủ ngữ có thể có.
o Gọi x1, x2, …, xn là các biến. Hàm mệnh đề P(x1, x2, …, xn) có giá trị phụ thuộc vào x1, x2,
…, xn xác định một mệnh đề, P được gọi là vị ngữ.
Ví dụ 1: Cho câu P(x): “x > 3”. Xác định giá trị chân lý của P(4) và P(2).
Giải: Mệnh đề P(4) nhận được khi thay x = 4 vào câu “x > 3”. Do đó P(4) tức là câu “4 > 3”
là đúng. Còn mệnh đề P(2) tức là câu “2 > 3” là sai.
Ví dụ 2: Cho câu Q(x,y): “x = y + 3”. Xác định giá trị chân lý của Q(1,2) và Q(3,0).
Giải: Mệnh đề Q(1,2) nhận được khi thay x = 1 và y =2 vào câu “x = y + 3”. Do đó mệnh đề
Q(1,2) là mệnh đề “1 = 2+3” là sai. Còn mệnh đề Q(3,0) là mệnh đề “3 = 0 + 3” là đúng.
6.2 Lượng từ:
Cách biến hàm mệnh đề thành các mệnh đề được gọi là sự lượng hoá. Có hai loại lượng hoá (còn
gọi là lượng từ) là lượng từ phổ dụng (luợng từ “với mọi”) và lượng từ tồn tại.
a. Định nghĩa 1: Lượng từ với mọi của P(x) là mệnh đề “P(x) đúng với mọi giá trị của x trong
không gian”.
Lượng từ với mọi của P(x) được ký hiệu là:

x P(x).
Mệnh đề

x P(x) cũng được diễn đạt như:
“Đối với mọi x P(x)”
Ví dụ: Diễn đạt câu:
“Tất cả sinh viên ở lớp này đều đã học giải tích”
như một lượng từ với mọi.
Giải: Cho P(x) là ký hiệu câu: “x đã học giải tích”.

Khi đó câu “Tất cả sinh viên ở lớp này đều đã học giải tích”có thể được viết

x P(x), ở
đây không gian gồm tất cả sinh viên trong lớp học đó.
b. Định nghĩa 2: Lượng từ tồn tại của P(x) là mệnh đề “Tồn tại một phần tử trong không gian sao
cho P(x) là đúng”.
Lượng từ tồn tại của P(x) được ký hiệu là:
)(xxP∃
.
Lượng từ tồn tại
)(xxP∃
cũng được diễn đạt như sau:
“Tồn tại x sao cho P(x)”.
“Tồn tại ít nhất một x sao cho P(x)”.
“Đối với một x nào đó P(x)”.
Ví dụ: Cho P(x) là câu “x > 3”. Tìm giá trị chân lý của
)(xxP∃
với không gian là tập các số
thực.
Giải: Vì “x > 3” là đúng với x = 4, nên lượng tử tồn tại của P(x) là đúng.
BÀI 2: TẬP HỢP
1. Một số khái niệm cơ bản:
a. Khái niệm:
Các đối tượng trong một tập hợp cũng được gọi là phần tử của tập hợp đó. Tập hợp được nói
là chứa các phần tử của nó.
b. Cách mô tả tập hợp:
 Cách 1: Mô tả tập hợp bằng cách liệt kê các phần tử của tập hợp nếu có thể. Ký hiệu tập
hợp T = {phần tử thứ 1, phần tử thứ 2, …}.
Ví dụ 1: Tập các nguyên âm, V = {a, e, i, o, u}. Tập các số nguyên dương lẻ nhỏ hơn 10, O
= {1, 3, 5, 7, 9}.

 Cách 2: Mô tả tập hợp bằng cách chỉ rõ các thuộc tính đặc trưng của các phần tử của tập
hợp đó. Ví dụ mô tả tập hợp các số nguyên dương lẻ nhỏ hơn 10, O = {x | x là số nguyên
dương lẻ nhỏ hơn 10}. R = {x | x là số thực}.
 Cách 3: Mô tả tập hợp bằng hình vẽ hay giản đồ Venn (do nhà toán học người Anh John
Venn đưa ra lần đầu tiên vào năm 1881).
c. Quy ước:
 Để biểu diễn một phần tử a thuộc một tập hợp A ta ký hiệu:
Aa ∈
.
 Để biểu diễn một phần tử a không thuộc một tập hợp A ta ký hiệu:
Aa ∉
.
 Tập hợp không chứa một phần tử nào được gọi là tập rỗng và được ký hiệu là Ø. Ví dụ tập
hợp các số lẻ chia hết cho 2.
d. Định nghĩa 2:
Hai tập hợp là bằng nhau nếu và chỉ nếu chúng có cùng phần tử.
Ví dụ: Các tập {1, 3, 5}, {5, 3, 1} và {1, 3, 3, 5, 5, 5} là bằng nhau vì chúng có cùng các phần
tử.
Trật tự các phần tử trong mô tả tập hợp và phần tử được liệt kê nhiều lần là không quan trọng.
( Xem lại định nghĩa )
e. Định nghĩa 3:
Tập A được gọi là tập con của tập B nếu và chỉ nếu mỗi phần tử của A đều là một phần tử của
B. Chúng ta dùng ký hiệu
BA ⊆
để chỉ A là tập con của B.
Chúng ta thấy rằng
BA ⊆
nếu và chỉ nếu lượng từ
)( BxAxx ∈→∈∀
là đúng.

Ví dụ: A = {x | x là số nguyên dương lẻ nhỏ hơn 10}
B = {x | x là số nguyên dương nhỏ hơn 10}
=>
BA ⊆
.
- Tập rỗng là tập con của mọi tập hợp (cần chứng minh mệnh đề “nếu
∅∈x
thì
Sx


đúng”. Mệnh đề này luôn đúng vì
∅∈x
luôn sai).
- Mọi tập hợp đều là tập con của chính nó.
- Nếu tập A là con của tập B và tồn tại
Bb

sao cho
Ab

thì tập A được gọi là tập con
thực sự của tập B. Ký hiệu
BA ⊂
.
- Hai tập hợp A và B được gọi là bằng nhau nếu tập A là con của tập B và ngược lại.
- Các tập cũng có thể có các phần tử là các tập hợp khác.
f. Định nghĩa 4:
Cho S là một tập hợp. Nếu có chính xác n phần tử phân biệt trong S, với n là số nguyên không
âm thì ta nói rằng S là một tập hữu hạn và n là bản số của S. Bản số của S được ký hiệu là |S|.

2. Phép toán trên tập hợp:
a. Định nghĩa 1 (Phép hợp):
B}xA x|{x ∈∨∈=∪ BA
b. Định nghĩa 2 (Phép giao):
B}xA x|{x ∈∧∈=∩ BA
c. Định nghĩa 3:
Hai tập hợp được gọi là rời nhau nếu giao của chúng bằng rỗng.
d. Định nghĩa 4 (Phép trừ):
A – B =
B}xA x|{x ∉∧∈
e. Định nghĩa 4 (Phần bù):
A}x|{xA ∉=
f. Các hằng đẳng thức tập hợp:
Cho U là không gian.
HẰNG ĐẲNG THỨC TÊN GỌI
AUA
AA
=∩
=∅∪
Luật đồng nhất
∅=∅∩
=∪
A
UUA
Luật nuốt
AAA
AAA
=∩
=∪
Luật lũy đẳng

AA =
Luật bù
ABBA
ABBA
∩=∩
∪=∪
Luật giao hoán
)()()(
)()()(
CABACBA
CABACBA
∩∪∩=∪∩
∪∩∪=∩∪
Luật kết hợp
CBACBACBA
CBACBACBA
∩∩=∩∩=∩∩
∪∪=∪∪=∪∪
)()(
)()(
Luật phân phối
ABBA
ABBA
∪=∩
∩=∪
Luật De Morgan
g. Tích Đề các.
i. Định nghĩa 1:
Gọi dãy (bộ) sắp thứ tự (a
1

, a
2
, …, a
n
) là một tập hợp sắp thứ tự, có a
1
là phần tử thứ
nhất, a
2
là phần tử thứ 2, … và a
n
là phần tử thứ n.
Hai dãy (bộ) sắp thứ tự là bằng nhau nếu và chỉ nếu các phần tử tương ứng của chúng
là bằng nhau.
ii. Định nghĩa 2:
Cho A và B là hai tập hợp. Tích đề các của A và B được ký hiệu là AxB là tập hợp của
tất cả các cặp (a,b) với
A

a

B

b
. Từ đó:
B}b A a|b){(a, BA x ∈∧∈=
Tổng quát:
An}anA2^ ^a2A1^a1 |an) , a2, {(a1, An x x A2 x A1 ∈∈∈…=…
BÀI 3: ÁNH XẠ VÀ HÀM
1. Định nghĩa:

a. Định nghĩa:
Cho A và B là hai tập hợp. Một hàm f từ A đến B là sự gán chính xác một phần tử của B cho
mỗi phần tử của A. Ta viết f(a) = b nếu b là phần tử duy nhất của B được gán bởi hàm f cho
phần tử a của A. Ký hiệu
BA :f →
.
- A: được gọi là miền xác định của hàm f.
- B: được gọi là miền giá trị của hàm f.
- Nếu f(a) = b ta nói b là ảnh của a và a là nghịch ảnh của b. Ký hiệu f
-1
(b) = a.
- Tập hợp tất cả các ảnh của các phần tử thuộc A được gọi là ảnh của A qua hàm f.
A}a |{f(a) f(A) ∈=
.
- Hàm f từ A đến B còn được gọi là ánh xạ từ A đến B.
b. Ví dụ:
Ví dụ 1:
Giả sử f : Z → Z, f : x → x
2
.
 Miền xác định: tập hợp các số nguyên.
 Miền giá trị: tập hợp tất cả các số nguyên không âm là số chính phương.
Ví dụ 2:
Viết hàm lấy phần nguyên của một số thực:
function floor (x: real): integer
 Miền xác định: tập các số thực
 Miền giá trị: tập các số nguyên.
c. Hàm hợp:
Cho 2 hàm
f : X → Y

g : Y → Z
Ánh xạ hợp h của f và g là ánh xạ từ X vào Z xác định bởi:
h : X → Z
x → h(x) = g(f(x))
Ta viết h = g o f.
d. Tính chất:
Cho 2 hàm
f : X → Y
g : X → Y
Khi đó: f + g : X → Y và f.g : X → Y được xác định như sau:
(f + g)(x) = f(x) + g(x) và (f.g)(x) = f(x).g(x).
2. Các hàm đơn ánh và toàn ánh:
a. Đơn ánh:
Hàm f : X → Y được gọi là một đơn ánh khi các ảnh của 2 phần tử khác nhau tùy ý thì khác
nhau, nghĩa là với mọi x và x' thuộc X ta có:
x ≠ x' => f(x) ≠ f(x')
hay f(x) = f(x') => x = x'
b. Toàn ánh:
Hàm f : X → Y được gọi là một toàn ánh khi mọi phần tử của Y đều là ảnh của ít nhất một
phần tử x thuộc X, nghĩa là
f(X) = Y.
c. Song ánh:
Hàm f : X → Y được gọi là một song ánh khi nó vừa là đơn ánh vừa là toàn ánh. Khi ấy với
mỗi
Yy∈
, có duy nhất phần tử
Xx ∈
sao cho f(x) = y. Như thế phép tương ứng liên kết y với
x sẽ cho ta một hàm từ Y vào X. Ta gọi hàm này là hàm ngược của f và ký hiệu là f
-1

. Vậy ta
có:
f
-1
: Y → X, xác định bởi f
-1
(y) = x, với f(x) = y.
d. Ví dụ:
Ví dụ 1:
Hàm f : Z → N xác định bởi f(n) = n
2
+1 không phải là một đơn ánh vì f(-1) = f(1) = 2
mà -1 ≠ 1.
Ví dụ 2:
Hàm f : N → N xác định bởi f(n) = n
2
+1 là một đơn ánh vì ta có thể thấy rằng với
mọi n và n' thuộc N ta có: nếu f(n) = f(n') thì n = n'.
Ví dụ 3:
Cho a và b là 2 số thực tùy ý và a ≠ 0. Hàm f : R → R xác định bởi f(x) = a.x+b là
một song ánh vì với mọi số thực y thì phương trình ax + b = y có nghiệm thực x duy
nhất là x = (y-b) / a. Từ đó ta cũng có ánh xạ ngược được xác định bởi f-1(y) = (y-b) /
a.
3. Biểu diễn hàm (Đồ thị của hàm):
a. Định nghĩa:
Cho hàm f: A → B. Đồ thị của hàm f là tập các cặp sẵp thứ tự:
b} f(a) A vàa|b){(a, =∈
.
b. Ví dụ:
Ví dụ 1:

Vẽ đồ thị hàm f(n) = 2n + 1.
Ví dụ 2:
Vẽ đồ thị hàm f(x) = x
2
BÀI TẬP CHƯƠNG I
Bài 1: Logic và mệnh đề
1. Dùng bảng chân lý để chứng minh luật giao hoán:
a. p V q q V p⇔
b. p q q p⇔ʌ ʌ
2. Dùng bảng chân lý để chứng minh luật kết hợp:
a. (p V q) V r p V (q V r)⇔
b. (p q) r p (q r)⇔ʌ ʌ ʌ ʌ
3. Dùng bảng chân lý để chứng minh luật phân phối:
p (q V r) (p q) V (p r)⇔ʌ ʌ ʌ
4. Dùng bảng chân lý để chứng minh tương đương:
¬ (p q) ¬ p V ¬ q⇔ʌ
5. Dùng bảng chân lý để chứng minh các mệnh đề kéo theo sau là hằng đúng:
a. (p q) → pʌ
b. p → (p V q)
c. ¬ p → (p → q)
d. (p q) → (p → q) ʌ
e. ¬ (p → q) → p
f. ¬ (p → q) → ¬ q
6. Bằng cách dùng bảng chân lý chứng minh rằng các mệnh đề kéo theo sau là hằng đúng:
a. [¬q (p V q)ʌ ] → q
b. [(p → q) (q → r)ʌ ] → (p → r)
c. [p (p → q)ʌ ] → q
d. [(p V q) (p → r) (q → r)ʌ ʌ ] → r
7. Cho P(x) là câu “x học ở lớp hơn 5 giờ mỗi ngày trong tuần”, ở đây không gian là tập
hợp các sinh viên. Hãy diễn đạt các lượng từ sau thành câu thông thường:

a. x P(x)Ǝ
b. x P(x)∀
c. x ¬P(x)Ǝ
d. x ¬P(x)∀
8. Cho P(x, y) là câu “x đã học môn y”, với không gian của x là tập hợp tất cả sinh viên
trong lớp bạn, và không gian của y là tập hợp tập hợp tất cả các môn tin học ở trường bạn.
Hãy diễn đạt các lượng từ sau thành câu thông thường:
a. x y P(x, y)Ǝ Ǝ
b. x y P(x, y)∀Ǝ
c. x y P(x, y)∀ Ǝ
d. y x P(x, y)∀Ǝ
e. y x P(x, y)∀ Ǝ
f. x y P(x, y)∀ ∀
9. Cho P(x) và câu “x nói được tiếng Nga” và Q(x) là câu “x biết ngôn ngữ C
++
”. Hãy diễn
đạt các câu sau bằng cách dùng P(x), Q(x), các lượng từ và các liên từ logic. Cho không
gian đối với các lượng từ là tập hợp tất cả sinh viên ở trường bạn:
a. Có một sinh viên ở trường bạn nói được tiếng Nga và biết C
++
.
b. Có một sinh viên ở trường bạn nói được tiếng Nga và không biết C
++
.
c. Mọi sinh viên ở trường bạn đều nói được tiếng Nga hoặc biết C
++
.
d. Không có một sinh viên nào ở trường bạn nói được tiếng Nga hoặc biết C
++
.

10. Cho Q(x) là câu “x đã là người tham gia cuộc thi y”. Hãy diễn đạt các câu sau bằng cách
dùng Q(x, y), các lượng từ và các liên từ logic. Cho không gian của x là tập hợp tất cả sinh
viên của trường bạn, còn không gian của y là tập hợp tất cả các cuộc thi trên truyền hình.
a. Có một sinh viên ở trường bạn đã tham gia cuộc thi trên truyền hình.
b. Không có một sinh viên nào ở trường bạn đã tham gia cuộc thi trên truyền hình.
c. Có một sinh viên ở trường bạn đã tham gia cuộc thi Jeopardy và Wheel of Fortune trên
truyền hình.
d. Mọi cuộc thi trên truyền hình đều có một sinh viên ở trường bạn tham gia.
e. Ít nhất có hai sinh viên ở trường bạn đã tham gia cuộc thi Jeopardy trên truyền hình.
11. Cho L(x, y) là một câu “x yêu y”, với không gian của cả x và y là tập hợp mọi người trên
thế giới. Hãy dùng các lượng từ để diễn đạt các câu sau:
a. Mọi người đều yêu Jerry
b. Mọi người đều yêu một ai đó
c. Có một người mà tất cả mọi người đều yêu
d. Không có ai yêu tất cả mọi người
e. Có một người mà Lydia không yêu
f. Có một người mà không ai yêu
g. Có đúng một người mà tất cả mọi người đều yêu
h. Có đúng hai người mà Lynn yêu
i. Mọi người đều yêu chính mình
j. Có một người nào đó không yêu ai ngoài chính mình
12. Cho F(x, y) là câu “x có thể lừa gạt y”, với không gian là tập hợp mọi người trên thế giới.
Hãy dùng các lượng từ để diễn đạt các câu sau:
a. Mọi người đều có thể lừa gạt Fred
b. Evelyn có thể lừa gạt được mọi người
c. Mọi người đều có thể lừa gạt được ai đó
d. Không có ai có thể lừa gạt được tất cả mọi người
e. Mọi người đều có thể bị lừa gạt bởi ai đó
f. Không ai có thể lừa gạt được cả Fred lẫn Jerry
g. Nancy có thể lừa được chính xác hai người

h. Có chính xác một người mà ai cũng lừa gạt được
i. Không ai có thể lừa gạt được chính mình
j. Có một người nào đó có thể lừa gạt được chính xác một người trừ bản thân mình.
13. Dùng các lượng từ để diễn đạt các câu sau:
a. Tất cả các sinh viên tin học đều cần phải học môn toán học rời rạc
b. Có một sinh viên ở lớp này đã có máy vi tính
c. Tất cả các sinh viên ở lớp này đã học ít nhất một môn tin học
d. Có một sinh viên ở lớp này đã học ít nhất một môn tin học
e. Mỗi sinh viên ở lớp này ở một nhà trong ký túc xá
f. Có một sinh viên ở lớp này đã ở tất cả các phòng của ít nhất một nhà trong ký túc xá
g. Tất cả các sinh viên ở lớp này ít nhất đã ở một phòng trong tất cả các nhà trong ký túc
xá.
14. Lớp toán học rời rạc có một sinh viên ngành toán năm thứ nhất, 12 sinh viên ngành toán
năm thứ hai, 15 sinh viên tin học năm thứ hai, hai sinh viên toán năm thứ ba, hai sinh viên
tin học năm thứ ba và một sinh viên tin học năm thứ tư (năm cuối cùng). Diễn đạt các câu
sau bằng cách dùng các lượng từ rồi sau đó xác định giá trị chân lý của chúng:
a. Có một sinh viên trong lớp là sinh viên năm thứ ba
b. Mọi sinh viên trong lớp đều là sinh viên ngành tin học.
c. Có một sinh viên trong lớp không phải là sinh viên ngành toán và cũng không phải sinh
viên năm thứ ba.
d. Mọi sinh viên trong lớp hoặc là sinh viên năm thứ hai hoặc là sinh viên ngành tin.
e. Có một ngành học sao cho mỗi khóa học có một sinh viên ở lớp này học ngành đó.
15. Cho P(x) là câu “x = x
2
”. Nếu không gian là tập hợp các số nguyên, thì giá trị chân lý của
các mệnh đề sau là như thế nào?
a. P(0)
b. P(1)
c. P(2)
d. P(-1)

e. x Q(x)Ǝ
f. x P(x)∀
16. Cho Q(x, y) là câu “x + y = x - y”. Nếu không gian của hai biến là tập hợp các số nguyên,
hãy xác định giá trị chân lý của các mệnh đề sau:
a. Q(1, 1)
b. Q(2, 0)
c. y Q(1, y)∀
d. x Q(x, 2)Ǝ
e. x y Q(x, y)Ǝ Ǝ
f. x y Q(x, y)∀ Ǝ
g. y x Q(x, y)∀Ǝ
h. x y Q(x, y)∀ ∀
17. Giả sử không gian của hàm mệnh đề P(x, y) gồm các cặp số x và y với x là 1, 2 hoặc 3
và y là 1, 2 hoặc 3. Dùng các phép hội và tuyến viết các mệnh đề sau:
a. x P(x, 3)Ǝ
b. y P(1, y)∀
c. x y P(x, y)∀ ∀
d. x y P(x, y)Ǝ Ǝ
e. x y P(x, y)∀Ǝ
f. y x P(x, y)∀ Ǝ
18. Dùng các lượng từ diễn đạt phủ định các mệnh đề sau, rồi dịch các phủ định đó ra các
câu thông thường.
a. Mọi sinh viên ở lớp này đều thích môn toán.
b. Có một sinh viên trong lớp này chưa hề bao giờ nhìn thấy một chiếc máy tính.
c. Có một sinh viên trong lớp này đã học tất cả các môn toán được dạy ở trường này.
d. Có một sinh viên ở lớp này đã ở ít nhất một phòng trong tát cả các tòa nhà ở ký túc xá.
19. Cho P(x), Q(x) và R(x) là các câu “x là giáo sư”, “x là kẻ ngu dốt” và “x là kẻ vô tích sự”,
tương ứng. Bằng cách dùng các lượng từ, các liên từ logic cùng với P(x), Q(x) và R(x) diễn
đạt các câu sau với không gian là tập hợp toàn thể loài người.
a. Không có giáo sư nào là kẻ ngu dốt.

b. Mọi kẻ ngu dốt đều là vô tích sự.
c. Không có giáo sư nào là vô tích sự
d. (c) có thể suy ra từ (a) và (b) không? Nếu không, liệu có một kết luận đúng nào
không?
20. Cho P(x), Q(x) và R(x) tương ứng là các câu “x là lời giải thích rõ ràng”, “x là thỏa đáng”
và “x là một lý do”. Giả sử không gian của biến x là tập hợp toàn bộ văn bản. Dùng các
lượng từ, các liên từ logic cùng với P(x), Q(x) và R(x) diễn đạt các câu sau:
a. Tất cả các giải thích rõ ràng đều là thỏa đáng.
b. Một số lý do là không thỏa đáng.
c. Một số lý do không phải là giải thích rõ ràng.
d. (c) có thể suy ra từ (a) và (b) không? Nếu không, liệu có một kết luận đúng không?
21. Cho P(x), Q(x), R(x) và S(x) tương ứng là các câu “x là một đứa bé”, “x là logic”, “x có
khả năng cai quản một con cá sấu” và “x bị coi thường”. Giả sử không gian là tập hợp tất cả
mọi người. Hãy dùng các lượng từ, các liên từ logic cùng với P(x), Q(x), R(x) và S(x) để
diễn đạt các câu sau:
a. Những đứa bé là không logic.
b. Không ai bị coi thường nếu cai quản được cá sấu.
c. Những người không logic bị coi thường.
d. Những đứa bé không cai quản được cá sấu.
e. (d) có thể suy ra từ (a), (b) và (c) không? Nếu không, liệu có một kết luận đúng không?
22. Cho P(x), Q(x), R(x) và S(x) tương ứng là các câu sau: “x là một con vịt”, “x là một trong
số gia cầm của tôi”, “x là một viên sĩ quan” và “sẵn lòng khiêu vũ”. Dùng các lượng từ, các
liên từ logic cùng với P(x), Q(x), R(x) và S(x) để diễn đạt các câu sau:
a. Không có con vịt nào sẵn lòng khiêu vũ cả.
b. Không có viên sĩ quan nào từ chối khiêu vũ cả.
c. Toàn bộ đàn gia cầm của tôi đều là vịt.
d. Đàn gia cầm của tôi không phải là các sĩ quan.
e. (d) có thể suy ra từ (a), (b) và (c) không? Nếu không,liệu có một kết luận đúng không?
23. Chứng tỏ rằng các câu ¬ x y P(x, y) và x y ¬ P(x, y) có cùng giá trị chân lý∀ ∀Ǝ Ǝ
24. Chứng tỏ rằng x (P(x) Q(x)) và x P(x) x Q(x) có cùng giá trị chân lý∀ ∧ ∀ ∧ ∀

25. Chứng tỏ rằng x (P(x) Q(x)) và x P(x) x Q(x) có cùng giá trị chân lý∨ ∨Ǝ Ǝ Ǝ
26. Xác lập các tương đương logic sau, trong đó A là một mệnh đề không có chứa các
lượng từ.
a. ( x P(x)) A x (P(x) A)∀ ∨ ⇔ ∀ ∨
b. ( x P(x) A x (P(x) A)∨ ⇔ ∨Ǝ Ǝ
27. Xác lập các tương đương logic sau, trong đó A là một mệnh đề không có liên quan với
lượng từ nào:
a. ( x P(x)) A x (P(x) A)∀ ∧ ⇔ ∀ ∧
b. ( x P(x) A x (P(x) A)∧ ⇔ ∧Ǝ Ǝ
28. Chứng minh rằng x P(x) x Q(x) và x (P(x) Q(x)) là không tương đương∀ ∨ ∀ ∀ ∨
logic.
29. Chứng minh rằng x P(x) x Q(x) và x (P(x) Q(x)) là không tương đương∧ ∧Ǝ Ǝ Ǝ
logic.
30. Chứng minh rằng x P(x) x Q(x) và x y (P(x) Q(y)) là tương đương∀ ∨ ∀ ∀ ∀ ∨
logic. (Biến mới y được dùng để kết hợp một cách đúng đắn các lượng từ).
31. Chứng tỏ rằng:
a. x P(x) x Q(x) và x y (P(x) Q(y)) là tương đương logic.∀ ∧ ∀ ∧Ǝ Ǝ
b. x P(x) x Q(x) và x y (P(x) Q(y)) là tương đương logic.∀ ∨ ∀ ∨Ǝ Ǝ
32. !x P(x) là kí hiệu của mệnh đề “Tồn tại duy nhất một x sao cho P(x) là đúng”. NếuƎ
không gian là tập các số nguyên, hãy xác định giá trị chân lý của các lượng từ sau:
a. !x (x > 1).Ǝ
b. !x (xƎ
2
= 1).
c. !x (x + 3 = 2x).Ǝ
d. !x (x = x + 1).Ǝ
Bài 2: Tập hợp
1. Dùng các cách chỉ rõ các thuộc tính đặc trưng mô tả các tập hợp sau:
a. {0, 3, 6, 9, 12}.
b. {-3, -2, -1, 0, 1, 2, 3}.

c. {m, n, o, p}.
2. Xác định xem mỗi cặp tập hợp sau đây có bằng nhau không?
a. {1, 3, 3, 3, 5, 5, 5, 5, 5} và {5, 3, 1}.
b. {{1}} và {1, {1}}.
c. Ø và {Ø}.
3. Giả sử rằng A = {2, 4, 6}, B = {2, 6}, C = {4, 6} và D = {4, 6, 8}. Hãy
xác định các tập nào là những tập con của tập nào.
4. Xác định xem các mệnh đề sau đúng hay sai:
a. x

{x} c. {x}

{x}
b. {x}

{x} d. {x}

{{x}}
c. {Ø}

{x} e. {Ø }

{x}
5. Dùng giản đồ Ven minh hoạ mối quan hệ
A

B và B

C
6. Giả sử A, B và C là các tập hợp sau cho A


B và B

C . Chứng
minh A

C
7. Tìm hai tập hợp A, B sao cho A

B và A

B
8. Xác định bản số của các tập hợp sau:
a. {a}
b. {{a}}
c. {a, {a}}
d. {a, {a}, {a, {a}}
9. Xác định bản số của các tập hợp sau:
a. Ø
b. {Ø}
c. {Ø, {Ø}}
d. {Ø, {Ø}, {Ø, {Ø}} }
10. Tìm tập hợp luỹ thừa của các mỗi tập hợp sau:
a. {a}
b. {a, b}
c. {Ø, {Ø}}
11. Có thể kết luận rằng A = B nếu A và B là hai tập có luỹ thừa như nhau
không?
12. Mỗi tập sau có bao nhiêu phần tử
a. P({a, b, {a, b}})

b. P({Ø, a, {a}, {{a}}})
c. P(P(Ø))
13. Xác định xem mỗi tập dưới đây có là tập luỹ thừa của một tập nào đó
không?
a. Ø
b. {Ø, {a}}
c. {Ø, {a}, {Ø}, a}
d. {Ø, {a}, {b}, {a, b}}
14. Cho A = {a, b, c, d} và B = {y, z}. Tìm:
a. A x B
b. B x A
15. Nêu định nghĩa của tích Đề các A x B, trong đó A là tập hợp các môn
học được dạy bởi khoa toán của một trường đại học và B là tập hợp các giáo sư toán ở
trường đại học đó.
17, Nêu ý nghĩa của tích Đề các A x B x C trong đó A là tập hợp tất cả các tuyến bay, B và C
là hai tập hợp tất cả các thành phố ở Mỹ.
16. Cho A x B = Ø với A và B là hai tập hợp. Bạn có thể rút ra kết luận gì?
17. Cho tập hợp A. Chứng minh rằng Ø x A = A x Ø = Ø
18. Cho A = {a, b, c}, B = {x, y} và C = {0, 1}
Tìm:
a. A x B x C
b. C x B x A
c. C x A x B
d. B x B x B
19. Có bao nhiêu phần tử khác nhau trong A x B, nếu A có m phần tử và
B có n phần tử?
20. Chứng minh rằng A x B ≠ B x A khi A, B là các tập không rỗng và A ≠
B.
21. Chứng minh rằng cặp sắp thứ tự (a, b) có thể được định nghĩa qua
các tập như {{a}, {a, b}}. (Gợi ý: Trước hết hãy chứng minh {{a}, {a, b} = {{c}, {c, d} nếu và

chỉ nếu a = c và b = d).
22. Cho A là tập hợp các sinh viên sống cách xa trường trong vòng bán
kính một km và B là tập hợp các sinh viên đang trên đường tới lớp. Hãy mô tả các sinh viên
thuộc một trong các tập hợp sau:
23. Giả sử A là tập hợp các sinh viên năm thứ hai ở trường bạn và B là
tập hợp các sinh viên đang học môn toán rời rạc ở trường bạn. Hãy biểu diễn các tập sau
đây qua A và B.
a. Tập hợp các sinh viên năm thứ hai học toán rời rạc ở trường
bạn.
b. Tập hợp sinh viên năm thứ hai ở trường bạn không học toán rời
rạc.
c. Tập hợp các sinh viên ở trường bạn hoặc học toán rời rạc hoặc
đang học toán rời rạc.
d. Tập hợp các sinh viên ở trường bạn hoặc không phải là sinh
viên năm thứ hai hoặc không học toán rời rạc.
CHƯƠNG 2. THUẬT TOÁN
BÀI 1: KHÁI NIỆM THUẬT TOÁN
1. Khái niệm thuật toán:
a. Mở đầu:
- Toán học rời rạc bao gồm nhiều lớp bài toán tổng quát như: các bài số nguyên, bài toán tìm
đường đi ngắn nhất, …
- Cách giải bài toán: xây dựng mô hình dịch bài toán thành ngữ cảnh toán học. Các cấu trúc
dùng trong mô hình này là tập hợp, dãy, hàm, đồ thị, cây, …
- Giải bài toán bằng các thuật toán.
b. Định nghĩa:
Thuật toán là một thủ tục xác định dúng một số bước hữu hạn để giải một bài toán.
c. Ví dụ:
Mô tả 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.
2. Biểu diễn thuật toán:
Ðể trình bày một thuật toán hay biểu diễn một thuật toán, ta có thể sử dụng các phương pháp biểu

diễn thuật toán sau đây:
 Dùng ngôn ngữ tự nhiên.
 Dùng lưu đồ hay sơ đồ khối.
 Dùng mã giả.
a. Ngôn ngữ tự nhiên:
Sử dụng ngôn ngữ tự nhiên để liệt kê các bước thực hiện các thao tác hay công việc nào đó của
thuật toán bằng ngôn ngữ mà con người sử dụng một cách phổ thông hàng ngày.
Ngôn ngữ tự nhiên không thể hiện rõ tính cấu trúc của thuật toán nên không thuận lợi cho việc
thiết kế và cài đặt những thuật toán phức tạp.
b. Lưu đồ:
- Ngôn ngữ lưu đồ hay sơ đồ khối là một công cụ rất trực quan để diễn đạt các
thuật toán. Biểu diễn bằng lưu đồ sẽ giúp ta có được một cái nhìn tổng quan về toàn cảnh của
quá trình xử lý theo thuật toán.
- Lưu đồ là một hệ thống các nút có hình dạng khác nhau, thể hiện các chức năng
khác nhau và được nối với nhau bởi các cung. Lưu đồ được tạo thành bởi 4 thành phần chủ
yếu sau đây:
1/ Nút giới hạn: Bắt đầu hoặc kết thúc thuật toán.
Begin
End
2/ Nút nhập/xuất dữ liệu: Nhập dữ liệu hoặc xuất dữ liệu.
3/ Nút thao tác: Thực hiện một công việc nào đó.
4/ Nút điều kiện: Rẽ nhánh thực hiện.
5/ Cung: Tiến trình thực hiện.
- Hoạt động của thuật toán theo lưu đồ được bắt đầu từ nút đầu tiên. Sau khi thực
hiện các thao tác hoặc kiểm tra điều kiện ở mỗi nút thì bộ xử lý sẽ theo một cung để đến nút
khác. Quá trình thực hiện thuật toán dừng khi gặp nút kết thúc hay nút cuối.
c. Mã giả:
- Sử dụng một số qui ước của một ngôn ngữ lập trình, chẳng hạn là ngôn ngữ lập
trình PASCAL, nhất là các cấu trúc điều khiển của ngôn ngữ lập trình như các cấu trúc chọn,
các cấu trúc lặp để mô tả thuật toán.

- Mã giả còn sử dụng cả các ký hiệu toán học, các biến, và đôi khi cả cấu trúc kiểu
thủ tục. Cấu trúc thuật toán kiểu thủ tục thường được sử dụng để trình bày các thuật toán đệ
qui hay các thuật toán quá phức tạp cần phải được trình bày thành nhiều cấp độ.
- Các cấu thường được sử dụng trong mã giả dựa theo ngôn ngữ lập trình
PASCAL gồm:
1/ Cấu trúc chọn:
if (điều kiện) then (hành động)
if (điều kiện) then (hành động)
else (hành động)
2/ Cấu trúc lặp:
while (điều kiện) do (hành động)
Repeat
(hành động)
Until (điều kiện)
for (biến) := (giá trị đầu) to (giá trị cuối) do (hành động)
for (biến) := (giá trị đầu) downto (giá trị cuối) do (hành động)
3/ Cấu trúc nhảy goto. Ngoài ra người ta còn sử dụng lệnh ngắt vòng lặp break.
Ví dụ: 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:
Input/
Output
Command
If
Nhập: dãy số a1, a2, . . ., an
Xuất: max là giá trị lớn nhất trong dãy số đã cho trong input.
Biểu diễn thuật toán trên theo 3 cách
1. Sử dụng ngôn ngữ tự nhiên
• Bài toán tìm phần tử lớn nhất trong một dãy hữu hạn tương đối tầm thường. Tuy nhiên
đây là một trong những ví dụ khá tốt để minh họa cho khái niệm về thuật toán. Có nhiều vấn
đề mà trong đó đòi hỏi phải tìm số nguyên lớn nhất trong một dãy số. Chẳng hạn như việc tìm
ra một học sinh có điểm cao nhất trong một kỳ thi, hay tìm ra một nhân viên có năng suất cao

nhất trong một xí nghiệp, v.v
• Chúng ta có nhiều cách để giải bài toán này. Một cách đơn giản là dùng ngôn ngữ thông
thường để mô tả các bước cần thực hiện. Sau đây là các bước để giải bài toán trên:
1. Trước hết ta đặt cho giá trị lớn nhất tạm thời bằng số nguyên đầu tiên. (Giá trị lớn
nhất tạm thời này chính là giá trị lớn nhất ở mỗi giai đoạn của thủ tục.)
2. So sánh số nguyên kế tiếp trong dãy với giá trị lớn nhất tạm thời, và nếu nó lớn hơn
giá trị lớn nhất tạm thời thì đặt cho giá trị lớn nhất tạm thời bằng số nguyên này.
3. Lặp lại bước 2 nếu còn số nguyên trong dãy chưa được xét tới.
4. Dừng nếu không còn số nguyên nào trong dãy chưa được xét. Giá trị lớn nhất tạm
thời lúc này chính là giá trị lớn nhất trong dãy số.
2.Sử dụng lưu đồ
3. Sử dụng giả mã
1. max := a1
2. for i := 2 to n do
if max < a1 then max := a1
3. max là giá trị lớn nhất trong dãy số.
3. Tính chất của thuật toán:
Thuật toán có vai trò rất quan trọng trong khoa học máy tính. Ðể có thể lập trình giải bài toán trên
máy tính, ta cần có một thuật toán bảo đảm những tính chất nhất định. Khi mô tả một thuật toán
chúng ta cần chú ý đến các tính chất sau đây:
• Nhập (input): Mỗi thuật toán có các giá trị đầu vào (input values) từ một tập hợp xác định nào
đó.
• Xuất (output): Từ mỗi tập hợp các giá trị đầu vào, thuật toán sẽ tạo ra những giá trị đầu ra
(output values) thuộc một tập hợp nhất định nào đó, các giá trị đó chính là lời giải cho bài toán.
• Tính xác định (definiteness): Các bước trong thuật toán phải chính xác rõ ràng.
• Tính hữu hạn (finiteness): Thuật toán phải cho ra lời giải (hay kết quả) sau một số hữu hạn
bước.
• Tính hiệu quả (về thời gian): Thuật toán cần phải được thực hiện một cách chính xác và trong
một khoảng thời gian cho phép.
• Tính tổng quát. Thuật toán phải áp dụng được cho tất cả các bài toán có dạng như mong muốn,

chứ không phải chỉ áp dụng được cho một số trường hợp đặc biệt nào đó.
• Tính đúng: Thuật toán phải cho kết quả như mong muốn.
Trong các tính chất trên, 3 tính chất cơ bản của thuật toán đòi hỏi phải được thỏa mãn là tính xác
định, tính hữu hạn và tính đúng.
4. Một số ví dụ:
4.1 Thuật toán tìm kiếm:
a. Thuật toán tìm kiếm tuần tự:
- Bài toán được đặt ra là xác định xem một phần tử x có trong một dãy a
1
, a
2
, . . ., a
n
hay
không? Lời giải của bài toán này là giá trị chỉ vị trí (hay chỉ số) của một phần tử trong dãy
bằng phần tử x, hoặc là 0 nếu x không có trong dãy.
- Một thuật toán đơn giản để giải bài toán này là thuật toán tìm kiếm tuyến tính (hay còn gọi
là tìm kiếm tuần tự). Thuật toán bắt đầu bằng việc so sánh x với a
1
, và nếu x = a
1
thì lời
giải là vị trí của a
1
(tức là 1). Khi x ≠ a
1
, ta tiếp tục so sánh x với a
2
. Nếu x = a
2

, thì lời giải
là vị trí của a
2
(tức là 2). Khi x ≠ a
2
, ta tiếp tục so sánh x với a
3
. Cứ tiếp tục quá trình này:
lần lượt so sánh x với từng phần tử của dãy cho tới khi gặp một phần tử bằng x hoặc là cho
tới khi đạt đến cuối dãy. Lời giải là vị trí của phần tử trong dãy bằng x; hoặc là 0 nếu
không có phần tử nào trong dãy bằng x. Thuật toán này có thể được viết dưới dạng mã giả
như dưới đây.
Thuật toán:
Nhập : dãy a
1
, a
2
, . . ., a
n
, và phần tử x.
Xuất : vị trí của x trong dãy (chỉ số của phần tử trong dãy bằng với x), hoặc 0
Procedure Tim_kiem_tuyen_tinh;
Begin
i := 1
while ( i ≤ n and x ≠ a
i
) do
i := i + 1;
if i ≤ n then location := i
else location := 0

location là một lời giải (ví trí cần tìm).
End;
Trong thuật toán này từ "location" là một biến nguyên.
b. Thuật toán tìm kiếm nhị phân:
- Trong trường hợp dãy a
1
, a
2
, . . ., a
n
có thứ tự thì ta có thể tìm kiếm theo thuật toán tìm
kiếm nhị phân (binary search).
- Thuật toán được tiến hành bằng cách so sánh phần tử cần xác định vị trí với số hạng ở giữa
bảng liệt kê. Sau đó bảng này được tách làm hai bảng con nhỏ hơn có kích thước như
nhau, hoặc một trong hai bảng con hơn bảng con kia một số hạng. Sự tìm kiếm tiếp tục
bằng cách hạn chế tìm kiếm ở một bảng con thích hợp dựa trên sự so sánh phần tử cần xác
định vị trí với số hạng ở giữa bảng.
- Ví dụ: Để tìm kiếm số nguyên x trong bảng liệt kê a
1
, a
2
, … a
n
với a
1
< a
2
< … < a
n
, ta bắt

đầu bằng việc so sánh x với số hạng a
m
ở giữa của dãy, với






+
=
2
1n
m
. (Cần nhớ rằng
 
x

là số nguyên lớn nhất không quá x). Nếu x > a
m
, việc tìm kiếm x giới hạn ở nửa thứ hai của
dãy, gồm a
m+1
, a
m+2
, … a
n
. Nếu x không lớn hơn a
m
. thì sự tìm kiếm giới hạn trong nửa đầu

của dãy gồm a
1
, a
2
, …, a
m
.
Bây giờ sự tìm kiếm chỉ giới hạn trong bảng có không hơn n/2 phần tử. Dùng chính thủ tục
này, so sánh x với số hạng ở giữa của bảng đã được hạn chế. Sau đó lại hạn chế việc tìm
kiếm ở nửa thứ nhất hoặc nửa thứ hai của bảng. Lặp lại quá trình này cho tới khi nhận
được một bảng chỉ có một phần tử. Sau đó chỉ còn xác định phần tử này có phải là x hay
không.
Thuật toán:
Procedure Tim_kiem_nhi_phan
Begin
j = 1
i = n
while i < j
begin






+
=
2
1n
m

if x>a
m
then i = m+1
else j = m
end
if x = a
i
then location = i
else location = 0
End;
4.2 Thuật toán cho các phép tính số nguyên:
a. Thuật toán tìm USCLN
Cách tìm USCLN của hai số theo thuật toán Euclide:
USCLN(a,b) = USCLN(a mod b,b)
b. Thuật toán Euclide
int USCLN(int x, int y)
{
int r;
a = x; b = y;
while (b != 0)
{
r = a % b;
a = b;
b = r;
}
return a;
}
4.3 Các thuật toán ma trận:
a. Thuật toán kiểm tra tính đối xứng của một ma trận:
Nhập : Ma trận A cấp n.

Xuất : True nếu ma trận A là ma trận đối xứng.
False nếu A không đối xứng.

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

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