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... Khái niệm thuật toán: Mô tả thuật toán tìm phần tử
Trang 1CHƯƠ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
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 = zCá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
Trang 2- 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ý:
TF
FT
- 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ý:
TTFF
TFTF
TFFF
- 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ý:
TT
TF
TT
Trang 3TF
TF
- 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
Ở đâ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ý:
TTFF
TFTF
FTTF
- 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ý:
Trang 4TFTF
TFTT
- 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
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ý:
TTFF
TFTF
TFFT
- 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⇔(p→q)∧(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: ¬
Trang 5Ư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
01
11
01
00
01
01
01
10
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
Trang 6FT
TT
FF
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.
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.
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.
Bảng chân lý đối với p ⊕ q và ¬(p ↔ q).
5.3 Bảng tương đương logic:
Trang 7Luậ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ụ 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
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:
Trang 8“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 đó
cho P(x) là đúng”
Lượng từ tồn tại của P(x) được ký hiệu là: ∃xP (x).
Lượng từ tồn tại ∃xP (x) 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 ∃xP (x) với không gian là tập các số
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: a∈A.
Để 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: a∉A.
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ử.
Trang 9Tậ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 A⊆B để chỉ A là tập con của B.
Chúng ta thấy rằng A⊆ B nếu và chỉ nếu lượng từ
)
x ∈ → ∈
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}
=> A⊆B.
- 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ì x∈S là đú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 b∈B sao cho b∉A thì tập A được gọi là tập con thực sự của tập B Ký hiệu A⊂B
- 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|.
A A
Trang 10Luật nuốt
A A A
A A A
A B B A
)(
)(
)(
)(
)(
C A B A C B A
C A B A C B A
A
C B A C B A C B
)(
)(
)(
Luật phân phối
A B B A
A B B A
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
|b){(a,B
Tổng quát:
An}
anA2^ ^
a2A1^
a1 |an) ,a2,{(a1,
An
x
x A2
x
Trang 11- 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)
Viết hàm lấy phần nguyên của một số thực:
function floor (x: real): integer
(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:
Trang 12a Đơ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'
3 Biểu diễn hàm (Đồ thị của hàm):
Trang 13BÀ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:
Trang 149 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
Trang 15j 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 = x2” 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?
Trang 1617 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 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?
Trang 1722 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ýƎ ∀ ∀ Ǝ
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ếukhô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:
Trang 182 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
Trang 1917, 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
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
Trang 20CHƯƠ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:
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:
- 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
Trang 212/ 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
- 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
Trang 22Nhập: dãy số a1, a2, , anXuấ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 đồ
Trang 233 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.
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
chứ không phải chỉ áp dụng được cho một số trường hợp đặc biệt nào đó
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 a1, a2, , an 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
Trang 24- 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 a1, và nếu x = a1 thì lời giải là vị trí của a1(tức là 1) Khi x ≠ a1, ta tiếp tục so sánh x với a2 Nếu x = a2, thì lời giải
là vị trí của a2 (tức là 2) Khi x ≠ a2, ta tiếp tục so sánh x với a3 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
i := i + 1;
if i ≤ n then location := ielse 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 a1, a2, , an 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ê a1, a2, … an với a1 < a2 < … < an, ta bắt đầu bằng việc so sánh x với số hạng am ở giữa của dãy, với = +2
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
Trang 25đượ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.
if x>am then i = m+1else j = m
end
if x = ai then location = ielse 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
Trang 26Thuật toán:
Procedure Ma_tran_doi_xung;
Beginfor i := 1 to n-1 dofor j := i + 1 to n do
if Aij ≠ Aij then Kết xuất "False", và dừng thuật toán
Kết xuất "True"
End;
b Thuật toán nhân hai ma trận:
BÀI 2: ĐỘ PHỨC TẠP TÍNH TOÁN
- Đánh giá tính thực tiễn của hàm chính là việc phân tích độ tăng của hàm thời gian
b Khái niệm O lớn (big O):
i Định nghĩa:
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
- Cặp C và k không phải là duy nhất
- Hai hàm f và g là cùng bậc nếu f là O(g) và g là O(f)
- Nếu f(x) là O(g(x)) và |g(x)|<|h(x)| thì f(x) là O(h(x)) Do đó khi dùng khái niệm O-lớn, hàm g(x) trong quan hệ f(x) là O(g(x)) được chọn là nhỏ nhất có thể được (đôi khi lấy từ tập các hàm sơ cấp, như cac hàm có dạng xn với n là số nguyên dương)
2 Cho ước lượng của hàm giai thừa và hàm logarit của hàm giai thừa
Giải: n! là O(nn) và logn! là O(nlogn)
Trang 27• Yêu cầu đối với một thuật toán: đúng đắn và hiệu quả.
• Hiệu quả của một thuật toán: thời gian giải bài toán theo thuật toán đang xét với giá trị đầu vào có kích thước xác định, và dung lượng bộ nhớ đòi hỏi để thực hiện thuật toán với giá trị đầu vào có kích thước xác định
• Phân tích thời gian cần thiết để giải bài toán có kích thước đặc biệt nào đó có liên quan đến phức tạp thời gian của thuật toán
• Phân tích bộ nhớ cần thiết của máy tính liên quan với độ phức tạp không gian của thuật toán
• Độ phức tạp không gian liên quan đến cấu truc dữ liệu nên không xét ở đây Chúng ta chỉ tập trung xem xét độ phức tạp thời gian
• Độ phức tạp thời gian của một thuật toán có thể biểu diễn qua số các phép toán được dùng bởi thuật toán đó với giá trị đầu vào có kích thước xác định
Trang 28O(1) Độ phức tạp hằng sốO(logn) Độ phức tạp logaritO(n) Độ phức tạp tuyến tính
O(nb) Độ phức tạp đa thứcO(bn) b>1 Độ phức tạp hàm mũO(n!) Độ phức tạp giai thừa
elsereturn (n*dqgt(n-1));
Trang 29Lời gọi hàm dqgt(3) sẽ kiểm tra điều kiện if, do điều kiện if không thoả mãn nên câu lệnh sau else được gọi thực hiện 3*dqgt(3-1) Để tính biểu thức 3*dqgt(3-1), hệ thống gọi tới hàm dqgt(2) (*) Tương tự như trên việc gọi hàm dqgt(2) sẽ kiểm tra điều kiện if, do điều kiện if vẫn chưa thoả mãn nên câu lệnh sau else được gọi thực hiện 2*dqgt(2-1) Để tính biểu thức 2*dqgt(2-1), hệ thống gọi tới hàm dqgt(1)(**).
Tương tự như trên việc gọi hàm dqgt(1) sẽ kiểm tra điều kiện if, với n = 1 thoả mãn điều kiện if nên giá trị 1 được trả về cho lời gọi hàm dqgt(1), (**) đã được tính
Điều đó dẫn tới biểu thức 2*dqgt(1) có giá trị là 2*1, sau khi biểu thức này được tính lời gọi hàm dqgt(2) trả về kết quả 2, (*) đã được tính
Sau khi dqgt(2) nhận kết quả 2 thì biểu thức 3*dqgt(2) có kết quả là 3*2 = 6 Đây chính là kết quả của lời gọi hàm dqgt(3)
2 Khái niệm đệ quy:
• Hàm cho phép từ một điểm trong thân hàm gọi tới chính hàm đó gọi là hàm đệ quy
• Khi hàm gọi đệ quy đến chính nó thì mỗi lần gọi, máy sẽ tạo ra một tập các biến cục bộ mới hoàn toàn độc lập với các tập biến (cục bộ) đã được tạo ra trong các lần gọi trước
3 Cách dùng đệ quy:
a Dạng bài toán sử dụng đệ quy:
Dạng bài toán sử dụng đệ quy có hai đặc điểm sau:
o Bài toán giả quyết được trong trường hợp riêng ứng với giá trị đặc biệt của tham số Trường hợp suy biến
o Trong trường họp tổng quát, bài toán có thể quy về bài toán cùng dạng nhưng tham số thì
bị thay đổi và sau một số hữu hạn các bước biến đệ quy sẽ dẫn tới trường hợp suy biến
}
4 Ví dụ minh hoạ:
Cách tìm USCLN của hai số theo phương pháp đệ quy như sau:
- Trường hợp suy biến:
USCLN(a,b) = a nếu a = b
- Trường hợp tổng quát:
USCLN(a,b) = USCLN(a-b,b) nếu a>b
Trang 30USCLN(a,b) = USCLN(a,b-a) nếu a<b
Với định nghĩa trên ta có thể viết hàm đệ quy tính USC(a,b) như sau:int USCLN(int a, int b)
{
if (a == b)return a;
else
if (a > b)return (USCLN(a-b,b));
elsereturn (USCLN(a,b-a));
}
5 Khử đệ quy:
Trang 31CÂU HỎI ÔN TẬP VÀ BÀI TẬP CUỐI CHƯƠNG
Đã bổ sung
Bài 1: Lập thuật toán tính tổng tất cả các số nguyên trong một danh sách các số cho trước
Bài 2: Liệt kê các bước cần tiến hành để tìm số 2 trong danh sách sau 1, 2, 5, 9, 13 khi dùng
a Thuật toán tìm kiếm tuyến tính
b Thuật toán tìm kiếm nhị phân
Bài 3: Mô tả thuật toán tìm phần tử nhỏ thứ nhất và phần tử nhỏ thứ hai trong một bảng liệt kê các số
nguyên Số phép so sánh cần dùng trong thuật toán là bao nhiêu
Bài 4: Mô tả thuật toán chèn một số nguyên x vào vị trí thích hợp trong dãy n số nguyên đã được sắp xếp
theo thứ tự giảm dần
Bài 5: Mô tả thuật toán xác định tất cả các vị trí xuất hiện của một số nguyên trong một bảng liệt kê các
số nguyên được sắp xếp theo thứ tự giảm dần Hỏi có bao nhiêu phép so sánh được dùng trong thuật toán đó
Bài 6: Viết thuật toán sắp 4 số hạng đầu tiên của một dãy có chiều dài tuỳ ý theo thứ tự tăng dần Chứng
minh rằng thuật toán này có độ phức tạp theo thời gian là O(1) được tính qua số các phép so sánh được
sử dụng
Bài 7: Giả sử một phần tử đã biết có mặt trong 4 số hạng đầu tiên của một bảng liệt lê gồm 32 số hạng
Hỏi thuật toán tìm kiếm tuyến tính hay thuật toán tìm kiếm nhị phân tìm ra vị trí của phần tử đó nhanh hơn
Bài 8: Hãy định nghĩa đệ quy của dãy {an} với n =1, 2, nếu
a an = 4n -2
b an = 2n +2
c an = n(n+1)
d an = n2
Bài 9: Cho F(n) là tổng của n số nguyên dương đầu tiên.
Hãy đưa ra định nghĩa đệ quy của hàm F(n)
Bài 10: Hãy biểu diễn thuật toán tìm kiếm tuyến tính như một thủ tục đệ quy
CHƯƠNG 3 LÝ THUYẾT ĐẾM
BÀI 1: NGUYÊN LÝ ĐẾM CƠ BẢN
1 Giới thiệu bài toán:
• Bài toán 1: Có bao nhiêu tập tin trong một thư mục được đặt với phần tên gồm 8 ký tự Mỗi ký tự có thể là một chữ cái hoặc một chữ số, ký tự đầu tiên phải là một chữ cái
• Bài toán 2: Có bao nhiêu cách để đánh số nhà trong một dãy phố gồm hai chữ cái và một chữ số theo sau
Trang 32• …
2 Nguyên lý đếm:
2.1 Nguyên lý cộng (quy tắc cộng):
a Nguyên lý:
Giả sử có hai công việc Việc thứ nhất có thể làm bằng n1 cách, việc thứ hai có thể làm bằng n2
cách và nếu hai việc này không thể thực hiện đồng thời, khi đó sẽ có n1 + n2 cách làm một trong hai việc đó
c Phát biểu dưới dạng tập hợp:
Nếu A1, A2, A3, ….,An là các tập hợp rời nhau Ai ∩ Aj = Ø, khi đó số các phần tử của các tập hợp này bằng tổng số các phần tử của các tập thành phần:
|A1 U A2 U A3 U … U An| = |A1| + | A2| + … + |An|
2.2 Nguyên lý nhân (Quy tắc nhân):
a Nguyên lý:
Giả sử có một nhiệm vụ nào đó được tách ra làm hai việc Việc thứ nhất có thể làm bằng n1
cách, việc thứ hai có thể làm bằng n2 cách sau khi việc thứ nhất đã được làm, khi đó sẽ có n1 x
n2 cách làm nhiệm vụ này
ii Ví dụ 2: Có bao nhiêu xâu nhị phân có độ dài bằng 7?
Giải: Bit thứ nhất của xâu có thể chọn bằng 2 cách, bit thứ 2 có thể chọn bằng 2 cách, , bit thứ 7 có thể chọn bằng 2 cách Nguyên lý nhân chỉ ra rằng có 27 cách chọn các bit của xâu nhị phân, do đó có 27 xâu nhị phân
iii Ví dụ 3: Đếm số tập con của một tập hữu hạn
Giải: Giữa các tập con của S và dãy nhị phân có độ dài |S| có sự tương ứng một – một Cụ thể là, một tập con của S được gán với dãy nhị phân có số 1 ở vị trí thứ i nếu phần tử thứ i trong dãy thuộc tập con này, và là 0 trong trường hợp ngược lại
c Phát biểu dưới dạng tập hợp:
Nếu A1, A2, A3, ….,An là các tập hợp hữu hạn, khi đó số phần tử của tích Đề-các của các tập hợp này bằng tích của các phần tử của các tập thành phần:
|A1 x A2 x A3 x … x An| = |A1| x | A2| x … x |An|
Trang 332.3 Bài toán đếm kết hợp cả hai nguyên lý:
Mỗi người sử dụng hệ thống máy tính đều có mật khẩu dài từ 6 đến 8 ký tự, trong đó mỗi ký tự là một chữ hoa hay chữ số Mỗi mật khẩu phải chứa ít nhất một chữ số Hỏi có bao nhhiêu mật khẩu?
Giải:
P: tổng số mật khẩu
P6: số mật khẩu có độ dài 6 ký tự
P7: số mật khẩu có độ dài 7 ký tự
P8: số mật khẩu có độ dài 8 ký tự
Giả sử có hai công việc Việc thứ nhất có thể làm bằng n1 cách, việc thứ hai có thể làm bằng n2
cách và hai việc này thực hiện đồng thời ở n3 cách, khi đó sẽ có n1 + n2 – n3 cách làm một trong hai việc đó
Việc thứ hai: xây dựng xâu nhị phân có độ dài 8 bit kết thúc bằng 2 bit 00, có thể làm bằng 26 =
3.3 Phát biểu dưới dạng tập hợp:
Nếu A1, A2 là các tập hợp và A1 ∩ A2≠Ø, khi đó số các phần tử của các tập hợp này bằng tổng số các phần tử của các tập thành phần:
|A1 U A2| = |A1| + | A2| - |A1∩ A2|
BÀI 2: NGUYÊN LÝ DIRICHLETE
1 Mở đầu:
Trang 34Giả sử có một đàn chim bồ câu bay vào chuồng Nếu số chim nhiều hơn số ngăn chuồng thì ít nhất trong một ngăn có nhiều hơn một con chim.
Giả sử không tồn tại hộp nào chứa nhiều hơn một đồ vật
Khi đó tổng số đồ vật có trong k chiếc hộp nhỏ hơn hoặc bằng k
Điều đó mâu thuẫn với giả thuyết có k+1 đồ vật
Vậy phải tồn tại một chiếc hộp có nhiều hơn một đồ vật
Nguyên lý trên được gọi là nguyên lý Dirichlet
b Ví dụ:
i Ví dụ 1: Trong bất kỳ một nhóm 367 người thể nào cũng có ít nhất hai người trùng ngày sinh vì một năm có nhiều nhất là 366 ngày
ii Ví dụ 2: Trong một lớp có 65 sinh viên thể nào cũng có hai sinh viên cùng quê
3 Nguyên lý Dirichlet tổng quát:
i Ví dụ 1: Trong 100 người có ít nhất 100/12 = 9 có cùng tháng sinh
ii Ví dụ 2: Cần bao nhiêu mã vùng nếu theo quy định cách đánh số máy điện thoại của thành phố Hà nội hiện nay (NXXXXXX) để đảm bảo 25 triệu máy điện thoại không bị trùng nhau
Giải: Hiện nay có 9 x 106 = 9.000.000 số điện thoại
Theo nguyên lý Direchlet trong số 25 triệu máy điện thoại có ít nhất
⌈25000000/9000000⌉ = 3 có cùng số Để đảm bảo mỗi máy có một số cần có ít nhất 3 mã vùng
iii Ví dụ 3: Trong một tháng có 30 ngày, một đội bóng thi đấu ít nhất mỗi ngày một trận Tổng số trận đấu trong tháng đó mà đội bóng đã chơi là 45 trận Hãy chỉ ra rằng có những ngày liên tiếp đội bóng đó chơi cả thảy 14 trận
BÀI 3: CHỈNH HỢP VÀ TỔ HỢP
Trang 351 Chỉnh hợp:
a Định nghĩa:
Cho X là một tập hợp gồm n phần tử, và r là một số nguyên dương nhỏ hơn hoặc bằng n Mỗi
phép chọn r phần tử phân biệt của X theo một thứ tự nào đó sẽ cho ta một chỉnh hợp n chọn r ( chỉnh hợp chập r của n) Nói cách khác, ta có thể xem một chỉnh hợp như là một dãy hay một bộ gồm r phần tử phân biệt được chọn từ n phần tử cho trước
b Công thức tính số chỉnh hợp:
Số các chỉnh hợp n chọn r (chỉnh hợp chập r của n ) là
A(n,r) = n(n-1)(n-2) (n-r+1)
Chứng minh: Mỗi chỉnh hợp của n phần tử chọn r tương ứng với một phép chọn ra r phần tử
phân biệt gồm r bước chọn liên tiếp nhau, và ở mỗi bước ta chọn một phần tử Phần tử thứ nhất của chỉnh hợp có thể được chọn theo n cách vì có n phần tử trong tập hợp Ðối với phần tử thứ 2
ta chỉ có n-1 cách chọn (vì ở lần thứ 2 ta phải loại ra phần tử đã chọn ở lần thứ nhất trong việc chọn) Cứ tiếp tục như thế, đến phần tử thứ r ta có n-r+1 cách chọn Do đó, theo nguyên lý nhân,
ta có số chỉnh hợp n chọn r là
n(n-1)(n-2) (n-r+1)
• Ghi chú:
1- Trường hợp r = 0, ta định nghĩa A(n,0) = 1
2- Người ta còn ký hiệu số chỉnh hợp bởi Ar
n.3- Ký hiệu giai thừa: Ðể tiện việc trình bày cũng như biến đổi và tính toán ta sẽ sử dụng ký hiệu n! (đọc là "n giai thừa") được định nghĩa như sau:
0! = 1n! = (n-1)! n (n lớn hơn 0)
Từ công thức ta thấy rằng
)!
(
!r)
A(n,
r n
n
−
=Ðặt biệt ta có A(n,n) = n!, tức là số hoán vị của n phần tử bằng n!
• Ví dụ: Số trường hợp lấy 4 người của một lớp gồm 10 người vào 4 vị trí (có thứ tự) đại diện cho
Trang 36chọn r ( tổ hợp chập r của n) Nói cách khác, ta có thể xem một tổ hợp n chọn r như là một tập hợp con gồm r phần tử của một tập hợp có n phần tử.
Ví dụ: Cho tập hợp S = {1, 2, 3, 4} Ta có tập S' = {1, 3, 4} là một tổ hợp 4 chọn 3 (tổ hợp chập 3 của 4)
Số các tổ hợp n chọn r được ký hiệu là C(n,r) Ví dụ : C(4,2) = 6 vì ta có thể liệt kê ra tất cả các
tập hợp con 2 phần tử của một tập hợp có 4 phần tử và thấy có tất cả là 6 tập con Sau đây là công thức để tính C(n,r)
b Công thức:
Số các tổ hợp n chọn r , với n và r là các số nguyên thỏa 0 ≤ r ≤ n, là
Chứng minh: Ta sẽ tính số tổ hợp thông qua việc thiết lập công thức liên hệ giữa C(n,r) và A(n,r)
Các chỉnh hợp n chọn r thể đạt được bằng cách lấy một tổ hợp n chọn r (hay tập con r phần tử của tập hợp n phần tử cho trước) rồi sau đó chọn một hoán vị của r phần tử trong tổ hợp Từ đó, theo qui tắc nhân, ta có
A(n,r) = C(n,r) A(r,r) = C(n,r) r!
Suy ra :
• Ghi chú: Số tổ hợp n chọn r C(n,r) còn được ký hiệu bởi
• Ví dụ: Số danh sách không kể thứ tự trước sau gồm 5 người của một lớp học gồm 10 người là
y x
0
),()
(
Chứng minh: Ta có thể khai triển tích của n thừa số trong biểu thức
(x+y)n = (x+y) (x+y) (x+y)
thành tổng của 2n số hạng có dạng t1t2…tn trong đó ti = x hay ti = y, với mọi i từ 1 tới n Với mỗi j
<= n (j không âm) ta gộp các số hạng trong đó có đúng j thừa số bằng y, và như thế các số hạng này bằng xn-jyj Số các số hạng này chính là số cách chọn j phần phần tử chỉ số trong tập các chỉ số {1, 2, …, n} để xác lập các thừa số trong số hạng t1t2…tn sẽ được chọn bằng y Ðó chính là số tổ hợp n chọn j Từ đó ta suy ra công thức cần chứng minh
b Hệ quả 1:
Cho n là một số nguyên không âm tùy ý Ta có:
Trang 37
• Cho n và r là 2 số nguyên không âm và r <= n Ta có:
Trang 38BÀI 4: CHỈNH HỢP VÀ TỔ HỢP SUY RỘNG
1 Hoán vị lặp:
o Trong các phần trên ta đã biết một hoán vị của n phần tử là một chỉnh hợp chập n của n phần tử đó
và số hoán vị là n! Tuy nhiên trong nhiều bài toán ta có thể gặp tình huống xét sự sắp xếp của một danh sách các phần tử mà trong đó có thể có các phần tử bằng nhau
o Chẳng hạn như trong ví dụ sau đây:
Ví dụ: Hãy tính xem có bao nhiêu cách sắp xếp khác nhau của 6 mẫu tự trong từ PEPPER.
Giải: Trước hết ta nhận xét rằng từ mỗi cách sắp xếp 6 mẫu tự đã cho, nếu ta phân biệt 3 mẫu tự P (tức là ta đánh chỉ số cho các mẫu tự P và xem chúng khác nhau) thì ta sẽ có 3! = 6 cách sắp xếp khác nhau Ví dụ 6 cách sắp xếp sau:
ta có:
(2!).(3!).(Số cách sắp xếp của các mẫu tự trong từ PEPPER)
= (Số hoán vị của 6 phần tử P1, E1, P2, P3, E2, R)
Giả sử n và k là 2 số nguyên dương sao cho n = 2k Chứng minh rằng n!/ 2k là một số nguyên
Giải: Xét n ký hiệu x1, x1, x2, x2, , xk, xk Theo định lý trên ta có số hoán vị của n ký hiệu
này là
n! / (2! 2! 2!) = n!/ 2kSuy ra rằng n!/ 2k là một số nguyên
2 Chỉnh hợp lặp:
Định lý 2:
Trang 39Số các chỉnh hợp lặp chập r từ tập n phần tử bằng nr.
3 Tổ hợp lặp:
a Bài toán:
i Ví dụ 1: Giả sử trong một đĩa có 3 loại quả gồm táo, cam, lê và mỗi loại có ít nhất 4 quả Tính
số cách lấy 4 quả từ đĩa này nếu giả sử rằng thứ tự các loại quả được chọn là không quan trọng,
và các quả thuộc cùng 1 loại là không phân biệt
ii Ví dụ 2: Có bao nhiêu cách chọn 5 tờ giấy bạc từ một két đựng tiền gồm những tờ 1 đồng, 2 đồng, 5 đồng, 10 đồng, 20 đồng, 50 đồng, 100 đồng Giả sử thứ tự mà các tờ tiền được chọn ra
là không quan trọng, các tờ tiền cùng loại là không phân biệt và mỗi loại có ít nhất 5 tờ
b Định lý:
Số tổ hợp lặp chập r từ tập n phần tử bằng
C(n + r – 1,r)
c Ví dụ:
i Ví dụ 1: Một cửa hàng bích quy có 4 loại khác nhau Có bao nhiêu cách chọn 6 hộp bánh? Giải
sử là ta chỉ quan tâm tới loại bánh mà không quan tâm tới hộp bánh cụ thể nào và thứ tự chọn chúng
ii Ví dụ 2: Phương trình x2+x2+x3 = 11
Có bao nhiêu nghiệm không âm?
BÀI 5: SINH CÁC HOÁN VỊ CHỈNH HỢP VÀ TỔ HỢP
1 Sinh các hoán vị:
a Đặt vấn đề:
o Mọi tập n phần tử đều có thể tương ứng một - một với tập {1,2, …, n}
o Việc liệt kê các hoán vị của một tập bất kỳ gồm n phần tử có thể thực hiện bằng cách sinh ra các hoán vị của tập n số nguyên dương nhỏ nhất {1,2, …, n}, sau đó thay thế các số nguyên này bằng các phần tử tương ứng của chúng
o Phương pháp liệt kê các hoán vị của tập {1,2, …, n} theo thứ tự từ điển như sau: Hoán vị
a1a2…an được gọi là đi trước (nhỏ hơn) hoán vị b1b2…bn nếu với k nào đó (1<=k<=n), a1 = b1,
a2 = b2, … ak-1 = bk-1, ak<bk
b Thuật toán xây dựng hoán vị kế tiếp:
Thuật toán sinh các hoán vị của tập {1,2, …, n} dựa trên thủ tục xây dựng hoán vị kế tiếp, theo thứ tự từ điển, của hoán vị cho trước a1a2…an Bây giờ chúng ta sẽ chỉ rõ cách xây dựng hoán vị kế tiếp này
o Đầu tiên ta giả sử an-1 <an Rõ ràng nếu đổi chỗ an-1 và an cho nhau thì sẽ nhận được hoán vị đi sau (lớn hơn) hoán vị đã cho, và không thể có một hoán vị nào khác lớn hơn hoán vị xuất phát
mà lại bé hơn hoán vị nhận được bằng cách đổi chỗ an-1 và an cho nhau Nếu an-1>an thì không thể nhận được hoán vị lớn hơn bằng cách đổi chỗ của hai số hạng này trong hoán vị Bây giờ ta xem xét ba số Nếu an-2 < an-1 thì có thể sắp lại ba số cuối cùng để có thể nhận một hoán vị mới
Trang 40liền sau hoán vị xuất phát Đặt số nhỏ hơn trong hai số an-1 và an vào vị trí n-2, sau đó đặt số nguyên còn lại và số an-2 vào hai vị trí cuối cùng theo thứ tự tăng dần.
o Nếu an-2 > an-1 (và an-1>an), khi đó không thể nhận được hoán vị lớn hơn bằng cách đổi chỗ ba số hạng cuối cùng của hoán vị
c Thuật toán tổng quát sinh hoán vị liền sau:
Phương pháp tổng quát tạo hoán vị liền sau (theo thứ tự từ điển) của hoán vị cho trước a1a2…an
như sau:
1- Tìm các số nguyên aj và aj+1 sao cho aj<aj+1 và aj+1>aj+2>aj+3>…>an (tức là tìm cặp số nguyên liền kề đầu tiên tính từ bên phải sang bên trái của hoán vị mà số trước nhỏ hơn số sau).2- Sau đó, để nhận được hoán vị liền sau ta đặt vào vị thí thứ j số nguyên nhỏ nhất trong các
số lớn hơn aj của tập aj+1,aj+2,aj+3,…,an, rồi liệt kê theo thứ tư tăng dần của các số còn lại aj,aj+1,
o Nếu có thể liệt kê tất cả các xâu nhị phân ra được thì ta sẽ nhận được tất cả các tập con
b Thuật toán sinh ra tất cả các tổ hợp:
Mặt khác xâu nhị phân có độ dài n cũng là khai triển nhị phân của một số nguyên nằm giữa 0 và
2n-1 Khi đó 2n xâu nhị phân có thể kiệt kê theo thứ tự tăng dần của số nguyên trong biểu diễn nhị phân của chúng
1- Chúng ta sẽ bắt đầu từ xâu nhị phân bé nhất 00…0 (n số không)
2- Tìm xâu liền sau ta tìm vị trí đầu tiên tính từ phải qua trái mà ở đó là số 0
3- Thay tất cả số 1 ở bên phải số này bằng 0 và đặt số 1 vào chính vị trí này
4- Lặp lại bước 3 cho đến khi tất cả các phần tử của dãy bằng 1
c Thuật toán sinh ra tổ hợp chập r của n phần tử:
Phần này trình bày thuật toán tạo các tổ hợp chập r từ n phần tử {1,2,…,n} Mỗi tổ hợp chập r có thể biểu diễn bằng một xâu tăng Khi đó có thể liệt kê các tổ hợp theo thứ tự từ điển Có thể xây dựng tổ hợp liền sau tổ hợp a1a2…ar bằng cách sau
1- Tìm phần tử đầu tiên ai trong dãy đã cho kể từ phải qua trái sao cho ai<> n-r+1
2- Thay ai bằng ai+1, và aj bằng aj+j-i+1 với j = i+1, i+2, …,r
BÀI TẬP CUỐI CHƯƠNG Bài 1: Trong một lớp có 45 sinh viên nam và 55 sinh viên nữ
a Có bao nhiêu cách chọn hai đại diện một là sinh viên nam và một là sinh viên nữ