Bààii 11.. TTẬẬPP HHỢỢPP VVÀÀ ÁÁNNHH XXẠẠ 1.1. TẬP HỢP VÀ PHẦN TỬ Tập hợp và phần tử là những khái niệm toán học nguyên sơ, không thể định nghĩa mà ta chỉ có thể mô tả chúng. Có 2 cách mô tả tập hợp: Cách thứ nhất: Tất cả những đối tượng có một hoặc một vài tính chất chung nào đó tạo thành một tập hợp (đôi khi nói ngắn gọn là một tập); khi đó mỗi đối tượng là một phần tử của tập hợp đó. Thí dụ 1. Tập hợp các số nguyên dương tạo nên tập N+. N+ = {1, 2, 3, ..., n, ...}. Khi đó các số 1, 2, 3, … là các phần tử của N+. Các phần tử của N+ có 2 tính chất chung: đó là nguyên và dương. Thí dụ 2. A = {1, 3, 5, 7, ...} là tập hợp các số nguyên dương lẻ. Các phần tử của A có 3 tính chất chung là nguyên, dương và lẻ. Nếu x là phần tử của A ta viết x Î A; nếu x không phải phần tử của A thì ta viết x Ï A. Khi mô tả tập hợp theo cách này phải đạt được yêu cầu sau đây: Khi đưa ra một đối tượng bất kỳ thì các tính chất chung mà chúng ta nêu lên phải đủ để khẳng định đối tượng đó có phải là phần tử của tập hợp hay không. Trong thí dụ 2: số 15Î A ; số 16 Ï A vì 16 không có tính chất lẻ. Trong trường hợp yêu cầu trên không đạt được ta phải dùng cách khác. Cách thứ hai: Liệt kê các phần tử của tập hợp. Thí dụ 1. B = {2, 4, 5, 6, 8} Khi mô tả tập hợp theo cách này thì lại không đòi hỏi các phần tử của tập hợp phải có một tính chất nào giống nhau. Thí dụ 2. C = {0, a, Hà Nội, *}. 1.1.1. Tập hữu hạn và tập vô hạn. Số lượng phần tử của A gọi là bản số của A; ký hiệu là |A| hay N(A); đó là một số nguyên dương. Nếu |A| là một số hữu hạn thì A là tập hữu hạn, còn gọi là tập rời rạc. Toán rời rạc chỉ quan tâm đến các tập rời rạc. Nếu A không phải tập hữu hạn thì A là tập vô hạn. Thí dụ. A = {2, 4, 6, 8} là tập hữu hạn. N = {0, 1, 2, ...,n, ...}: tập các số tự nhiên là tập vô hạn. Z = {0, ±1, ± 2, ..., ± n, ...}: tập các số nguyên là tập vô hạn.
Trang 1Thí dụ 2 A {1, 3, 5, 7, } là tập hợp các số nguyên dương lẻ Các phần tử của A có 3 tính chất chung là nguyên, dương và lẻ
Nếu x là phần tử của A ta viết x A; nếu x không phải phần tử của A thì ta viết x A
Khi mô tả tập hợp theo cách này phải đạt được yêu cầu sau đây: Khi đưa ra một đối tượng bất kỳ thì các tính chất chung mà chúng ta nêu lên phải đủ để khẳng định đối tượng đó có phải là phần tử của tập hợp hay không
Trang 21.1.2 Tập rỗng
Nếu | A | 0 thì A gọi là tập rỗng, đó là tập không chứa một phần tử nào Việc đưa vào tập rỗng rất có ý nghĩa khi ta nghiên cứu về các phép toán trên tập hợp
Ta ký hiệu tập rỗng là
1.1.3 Sự bằng nhau của hai tập
Hai tập A và B gọi là bằng nhau (ta viết A B) nếu chúng bao gồm những phần tử như nhau, nghĩa là:
A bao hàm trong B hoặc A chứa trong B
B bao hàm A hay B chứa A
Tập rỗng là tập con của mọi tập A
Để hình dung quan hệ giữa hai tập người ta dùng sơ đồ Ven để biểu diễn hình học một tập, coi mỗi tập là một vòng phẳng kín, mỗi điểm bên trong là một phần
tử của tập đó Khi đó quan hệ A B được biểu thị bởi hình 1 – vòng A nằm trong vòng B
Hình 1
Trang 31.1.5 Tập vũ trụ
Tập vũ trụ ký hiệu là U, đó là tập bao hàm mọi tập khác; khi biểu diễn tập U bằng sơ đồ Ven, người ta dùng 1 hình vuông hoặc hình chữ nhật Khi đó mọi tập khác đều nằm trong hình vuông hoặc hình chữ nhật đó (Hình 2)
B
Hình 2
AC
1.1.6 Tập lũy thừa
Cho tập A, tập lũy thừa của A ký hiệu là P(A) hay A
2 là tập mọi tập con của A (bao gồm cả tập rỗng và bản thân tập A)
Thí dụ: A {1, 2, 3} thì
P(A) , {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}
Tập lũy thừa của A thường liên quan đến việc trắc nghiệm những tập con của
A để xem chúng có thỏa mãn một tính chất nào đó hay không
Sau này ta sẽ chứng minh: Nếu | A | n thì | P(A) | | 2 |A 2 n
1.2 CÁC PHÉP TOÁN TẬP HỢP
Từ hai tập A và B cho trước tạo ra một tập mới theo một cách nào đó, ta gọi
đó là phép hợp thành Mỗi phép hợp thành như thế là một phép toán tập hợp
1.2.1 Phép hợp
Hợp của 2 tập A và B, ký hiệu là A B, là tập chứa tất cả các phần tử thuộc
A hoặc thuộc B, nghĩa là:
Trang 4Nếu A B thì ta nói rằng A và B là hai tập rời nhau
Thí dụ: A {1, 3, 5, 7, 9}, B {2, 4, 6, 8} là hai tập rời nhau vì
Trang 5Hình 6
AA
Các phép toán a) và b) có thể mở rộng cho n tập; khi đó định luật De Morgan
sẽ có dạng tổng quát sau đây:
Trang 6thì S {A , A }1 2 là một phân hoạch của E
Khái niệm phân hoạch là cơ sở của “nguyên lý cộng” trong bài toán đếm mà
ta sẽ nghiên cứu ở chương sau
Ta đưa vào tập E một quan hệ R có liên quan đến 2 phần tử của E Xét 2 phần
tử a và b của E, nếu a có quan hệ R với b thì ta viết aRb; khi đó R là quan hệ 2 ngôi trên tập E
Thí dụ 1 Trên tập số thực : aRb a b là quan hệ 2 ngôi trên tập số thực
Thí dụ 2
E là tập các đường thẳng trên một mặt phẳng P nào đó
aRb a / / b là quan hệ 2 ngôi
Trang 7Thí dụ 3
E là tập các sinh viên trong 1 lớp học nào đó
aRb ”a cùng năm sinh với b” là một quan hệ 2 ngôi
Quan hệ 2 ngôi trên một tập E có thể có các tính chất sau đây:
a) Tính phản xạ:
Quan hệ R có tính chất phản xạ nếu aRa a E
Thí dụ:
- Quan hệ “cùng năm sinh” có tính phản xạ
- Quan hệ “nhỏ hơn” (a < b) không có tính phản xạ vì không thể có
a < a
b) Tính đối xứng:
Quan hệ R có tính đối xứng nếu aRb bRa
Thí dụ
- Quan hệ “cùng năm sinh” có tính đối xứng
- Quan hệ “nhỏ hơn” (a < b) không có tính đối xứng vì từ a < b không thể suy ra b < a
Trên tập các số nguyên dương N+ ta đưa vào quan hệ như sau:
aRb a và b là 2 số nguyên tố cùng nhau
Quan hệ R này không có tính bắc cầu; vì (4R5 và 5R8) không thể suy ra 4R8 vì 4 và 8 không nguyên tố cùng nhau do chúng có 2 ước chung khác 1 đó là
E là tập các cán bộ trong một cơ quan, ta đưa vào quan hệ R như sau:
aRb lương của a không cao hơn lương của b
Quan hệ R này không có tính phản xứng vì (aRb và bRa) ta chỉ suy ra lương của a = lương của b mà không thể suy ra a = b; nghĩa là a và b có thể vẫn
là hai cán bộ khác nhau của cơ quan đó
Trang 81.3.2 Các phương pháp biểu diễn quan hệ 2 ngôi
a) Phương pháp liệt kê
Theo định nghĩa thì mọi quan hệ 2 ngôi R trên tập E đều là tập con của tập tích Đề-các E E, nghĩa là luôn viết được R E E Do đó một trong những phương pháp biểu diễn R là liệt kê tất cả các phần tử của R trong E E
Thí dụ Cho E {a , a , a }1 2 3 Tìm trong E một quan hệ 2 ngôi có tính phản
xạ, đối xứng nhưng không bắc cầu
1.3.3 Quan hệ tương đương
Quan hệ 2 ngôi trên tập E gọi là quan hệ tương đương nếu nó có 3 tính chất: phản xạ, đối xứng và bắc cầu Dễ dàng thấy rằng:
- Quan hệ “cùng năm sinh” trên tập các sinh viên của một lớp là quan hệ tương đương
- Quan hệ “song song” trên tập các đường thẳng trong một mặt phẳng nào đó
là quan hệ tương đương
Trang 9- Quan hệ “a < b” trên tập số thực không phải là quan hệ tương đương
Nếu R là quan hệ tương đương thì aRb có thể viết là a b
Các lớp tương đương này rời nhau và tạo nên một phủ của E; do đó nó là một phân hoạch của E
Việc đưa vào tập E một quan hệ tương đương là một cách tìm một phân hoạch của E, nhờ đó ta có thể tìm số phần tử của E bằng cách tìm tổng số các phần tử của tất cả các lớp tương đương
1.3.4 Quan hệ thứ tự
Quan hệ 2 ngôi R trên tập E gọi là quan hệ thứ tự nếu nó có 3 tính chất: phản
xạ, phản xứng và bắc cầu Dễ dàng thấy rằng quan hệ (a b) hay (a b) là quan hệ thứ tự trên tập các số tự nhiên cũng như trên tập các số thực
a) Quan hệ thứ tự toàn phần
Cho R là một quan hệ thứ tự trên E, nếu a, b E ta đều có aRb hoặc bRa thì R gọi là quan hệ thứ tự toàn phần; khi đó mọi phần tử của E được sắp xếp theo một thứ tự xác định theo quan hệ R và E là một tập có thứ tự toàn phần
b) Quan hệ thứ tự không toàn phần
Nếu R là một quan hệ thứ tự trên E nhưng không phải là quan hệ thứ tự toàn phần thì ta nói R là quan hệ thứ tự không toàn phần
Thí dụ
- Quan hệ trên tập số thực là quan hệ thứ tự toàn phần vì với mọi số thực
a và b ta luôn có a b hoặc b a, và dó đó tập các số thực là tập có thứ tự toàn phần
- Quan hệ trên tập các véc tơ n chiều (trong không gian véc tơ n chiều n
R ) là quan hệ thứ tự không toàn phần vì n
Trang 10- Nếu f (y)1 thì y f (A)
- Nếu f (y)1 x thì x là phần tử duy nhất có ảnh là y
Nếu f là một song ánh từ A lên B thì ta viết f : A B Khi đó y B, x
duy nhất A để cho y f (x); như vậy sự tương ứng y x là một ánh xạ từ
Thí dụ Ký hiệu R là tập số thực; R là tập số thực không âm
a) f : R R cho bởi y x2 là một ánh xạ nhưng không phải là toàn ánh vì các số âm không là ảnh của bất kỳ số x nào qua ánh xạ 2
y x ; cũng không phải
là đơn ánh vì hai số x và x (với x 0) có chung một ảnh
b) f : R R cho bởi y x2 là toàn ánh nhưng không phải là đơn ánh c) f : R R cho bởi y ex là đơn ánh nhưng không phải là toàn ánh vì các số 1 không là ảnh của bất kỳ số x 0 qua ánh xạ y ex
Trang 11d) f : R R cho bởi y ax b (a 0) là song ánh (vừa là toàn ánh, vừa
là đơn ánh) Ánh xạ ngược của nó là:
Và y B, z C sao cho g(y) z
Do đó x A, z C (qua ánh xạ trung gian f) sao cho g f (x) z
Vậy có một ánh xạ từ A tới C xác định như sau:
Hợp của 2 đơn ánh là một đơn ánh
Hợp của 2 toàn ánh là một toàn ánh
Hợp của 2 song ánh là một song ánh
Cho ánh xạ f : A B và A , A1 2 là 2 tập con bất kỳ của A; B , B1 2 là 2 tập con bất kỳ của B Khi đó:
Trang 12Bài 2 BÀI TOÁN ĐẾM
2.1 PHÁT BIỂU BÀI TOÁN
Dạng tổng quát nhất của bài toán đếm có thể phát biểu ngắn gọn như sau: Cho một tập rời rạc A; tìm bản số |A| của tập A, tức là hãy đếm xem A có bao nhiêu phần tử
Khi đếm các phần tử của A phải đảm bảo nghiêm ngặt 2 nguyên tắc:
Một là: Không bỏ sót, nghĩa là phần tử nào cũng được đếm
Hai là: Không trùng lặp, nghĩa là không có phần tử nào được đếm quá một lần
Phương pháp tổng quát để giải bài toán đếm có thể diễn giải như sau: Giả sử
A là tập cần đếm, N {1, 2, 3, , n} là tập n số nguyên dương đầu tiên Nếu lập được sự tương ứng đơn trị hai chiều giữa các phần tử của A và các phần tử của N; nghĩa là tìm được một song ánh f
f : A N thì | A | n
Tuy nhiên có rất nhiều cách cho tập A khác nhau nên phương pháp nêu trên
chỉ có ý nghĩa như một định hướng tổng quát, còn trên thực tế thì người ta phải căn cứ vào hình thái cụ thể của tập A mà tìm ra một giải pháp thích hợp
Mỗi phương pháp đếm là một thuật toán, nên trước tiên ta tìm hiểu những khái niệm cơ bản về thuật toán
2.2 KHÁI NIỆM THUẬT TOÁN
2.2.1 Định nghĩa
Thuật toán giải một bài toán nào đó, có thể hiểu một cách trực quan là một dãy hữu hạn các bước chỉ rõ những thao tác toán học phải thực hiện trên các đối tượng để thu được lời giải của bài toán
Thuật toán có các đặc trưng sau:
2.2.2 Biểu diễn thuật toán
Có 3 cách biểu diễn thuật toán, mỗi cách đều có ưu nhược điểm nhất định nên tùy theo từng trường hợp ta lựa chọn sao cho thích hợp
a) Biểu diễn bằng ngôn ngữ tự nhiên, liệt kê các bước của thuật toán
Trang 13b) Biểu diễn bằng sơ đồ khối
Phương pháp này sử dụng các biểu trưng hình học quy ước để diễn đạt các bước và thao tác cần thực hiện trong thuật toán Ta quy ước có các khối sau:
Nút khởi đầu hoặc kết thúc
Nút thao tác, ghi câu lệnh cần thực hiện
Nút điều kiện, ghi rõ điều kiện cần kiểm tra trong quá trình tính toán
Cung, dùng để chỉ đường đi của thuật toán
c) Biểu diễn bằng ngôn ngữ lập trình
Để giải một bài toán bằng máy tính, người ta thường sử dụng một loại ngôn ngữ lập trình nào đó: Đó là một dãy hữu hạn các câu lệnh được viết theo một quy tắc nhất định trên ngôn ngữ lập trình mà ta sử dụng
2.2.3 Phương pháp quy nạp
Quy nạp toán học là một phương pháp hữu hiệu để chứng minh một mệnh đề toán học đúng với mọi số tự nhiên n Để thực hiện điều đó ta phải tiến hành các bước sau:
Bước 1: Chứng minh mệnh đề đúng với n 1
Bước 2: Giả sử mệnh đề đã đúng với n, ta chứng minh mệnh đề đúng với
Vậy công thức đúng với n 1
Bước 2: Giả sử công thức trên đúng với n, tức là ta có
Trang 14Như vậy đệ quy là một phương pháp xác định các đối tượng thỏa mãn một tính chất nào đó; nó bao gồm các quy tắc, trong đó một số quy tắc để xác định các đối tượng ban đầu và quy tắc còn lại dùng để xác định các đối tượng tiếp theo nhờ các đối tượng ban đầu đã được xác định
Định nghĩa Chỉnh hợp chập k của n phần tử là một nhóm gồm k phần tử lấy
trong n phần tử đã cho và sắp xếp theo một thứ tự nhất định Ở đây mỗi phần tử chỉ được lấy một lần (không lặp)
Thí dụ
Cho X {0, 1, 2, 3, 4, 5} gồm 6 phần tử
Các nhóm dưới đây 123, 213, 402, 305, … đều là các chỉnh hợp chập 3 của 6 phần tử Hai chỉnh hợp 123 và 213 có các phần tử như nhau nhưng khác nhau về thứ tự
Như vậy hai chỉnh hợp là khác nhau nếu chúng có ít nhất một phần tử khác nhau hoặc thứ tự các phần tử khác nhau Để xây dựng một chỉnh hợp ta xây dựng
Trang 15dần từ thành phần đầu tiên Thành phần đầu tiên có n cách chọn, thành phần thứ hai chỉ có (n 1) khả năng chọn, …, thành phần thứ k chỉ có (n k 1) khả năng chọn
Nếu ký hiệu số chỉnh hợp chập k của n phần tử là k
Định nghĩa Tổ hợp chập k của n phần tử là một nhóm gồm k phần tử lấy
trong n phần tử đã cho (không kể thứ tự)
Nếu ký hiệu k
n
C là số tổ hợp chập k của n phần tử thì dễ dàng thấy rằng:
C là số nguyên thì ta có nhận xét thú vị sau đây: Tích của k
số tự nhiên liên tiếp nhau luôn chia hết cho tích của k số tự nhiên đầu tiên (k!)
Thí dụ 1
Có 10 người thi đấu bóng bàn vòng tròn, hỏi có bao nhiêu trận đấu?
Cứ 2 người tạo nên 1 trận đấu, mỗi trận đấu là một tổ hợp chập 2 của 10
Vậy số trận đấu là:
2 10
10.9
1.2
trận
Trang 17Nếu ký hiệu k
n
L là số chỉnh hợp lặp chập k của n phần tử thì dễ dàng thấy rằng mỗi thành phần của nó đều có n cách lựa chọn nên ta có công thức:
Lkn nk (11) Chú ý rằng trong chỉnh hợp lặp số k không bị giới hạn bởi điều kiện k n
mà trái lại k có thể lấy giá trị lớn hơn n Chẳng hạn như với 3 chữ số 1, 2, 3 ta vẫn có thể lập được các con số hàng triệu gồm 7 chữ số:
Ta hãy xét 2 nhóm gồm 5 chữ cái: THANG và NHANH
Nếu ta hoán vị 5 chữ cái trong nhóm THANG thì sẽ được P5 5! 120 hoán vị khác nhau Nhưng khi hoán vị các chữ cái trong nhóm NHANH thì sẽ không được 120 hoán vị khác nhau; vì khi ta đổi vị trí 2 chữ N với nhau hoặc 2 chữ H với nhau thì sẽ không tạo ra một hoán vị mới
Trong các hoán vị này, chữ N lặp 2 lần, chữ H lặp 2 lần, ta gọi đó là các hoán
vị lặp Số hoán vị lặp trong trường hợp này dễ dàng tính được là:
120
30 2.2 Bây giờ ta xét trường hợp tổng quát:
Cho k phần tử khác nhau; ta ký hiệu P(n , n , , n )1 2 k là số hoán vị của k phần tử trên, trong đó phần tử thứ nhất lặp n1 lần, phần tử thứ hai lặp n2 lần, …, phần tử thứ k lặp nk lần
Ta dễ dàng chứng minh được công thức sau đây:
Hoán vị các chữ cái trong tên của dòng sông MISSISIPI, ta thấy ở đây chỉ có
4 chữ cái M, P, S, I trong đó M và P không lặp, S lặp 3 lần, I lặp 4 lần Vậy số hoán vị là:
Trang 18C 6 cách, nhưng chia thành 2 nhóm, mỗi nhóm 2 đối tượng thì lại chỉ có:
Trang 192.4.3 Tổ hợp lặp
Định nghĩa Tổ hợp lặp chập k của n phần tử là một nhóm gồm k phần tử lấy
(có thể lặp) trong n phần tử đã cho Giống như trong chỉnh hợp lặp, số k có thể lớn hơn n
Hai quả cam, ba quả quýt, bốn quả chanh có thể coi như tổ hợp lặp chập 9 của
3 phần tử ; trong đó cam lặp 2 lần, quýt lặp 3 lần, chanh lặp 4 lần
Thí dụ 2
Có bao nhiêu cách chia 10 chiếc kẹo cho 5 em bé?
Mỗi cách chia là một tổ hợp lặp chập 10 của 5 phần tử, vậy số cách chia là:
Trang 20Bài 3 CÁC NGUYÊN LÝ ĐẾM
Mỗi bài toán đếm có một cấu trúc khác nhau nên chúng ta cần phải lựa chọn phương pháp đếm phù hợp với cấu trúc của bài toán đó Một số phương pháp đếm có tính chất tổng quát cho một lớp bài toán, ta gọi nó là nguyên lý đếm Dưới đây là các nguyên lý quan trọng
X{x , x , , x }; AP(X) là tập lũy thừa của X Tìm |A|
Ta biết rằng P(X) là tập mọi tập con có thể có của X kể cả tập rỗng và bản thân tập X Ta ký hiệu Ak là tập mọi tập con gồm k phần tử của X;
Trang 21Thí dụ 2
Có bao nhiêu xâu nhị phân có độ dài 10?
Ký hiệu E {0, 1}; A là tập các xâu nhị phân có độ dài 10 thì 10
Có 8 nam và 10 nữ; có bao nhiêu cách chọn ra 6 người có cả nam và nữ?
- Nếu muốn áp dụng nguyên lý cộng ta làm như sau:
Ký hiệu Ai là tập các nhóm 6 người có cả nam và nữ; trong đó có i nam (1 i 5) thì ta có:
- Với n 3 thì A A1 A2 A3; công thức đếm sẽ là:
Trang 22Theo nguyên lý bù trừ ta có: N N1 N2 N3 nên
N (30 31 32) (15 16 17) 5 50 sinh viên
Thí dụ 2
Có bao nhiêu số nguyên dương, 1000 chia hết cho 2, 3 hoặc 5
Ký hiệu A , A , A2 3 5 là tập các số tương ứng chia hết cho 2, 3, 5 và
Trang 23là có (n k)! cách Trong (n k)! cách bỏ thư này vẫn có những thư đúng địa chỉ nên k
Trang 24k n
n n
3.5 Nguyên lý quy về đơn giản
Một trong các phương pháp đếm là quy một bài toán phức tạp thành các bài toán đơn giản hơn Điều này không phải lúc nào cũng dễ dàng vì nó thường đòi hỏi những hiểu biết sâu sắc và sự phân tích khéo léo các cấu hình phức tạp cần đếm Nguyên lý này có ý nghĩa như một định hướng tổng quát, còn cách thức cụ thể thì lại phụ thuộc vào cấu trúc của bài toán
Dưới đây ta xét một thí dụ khác để thấy tính đa dạng của nguyên lý này:
“Một người vượt cầu thang có 9 bậc theo cách lúc thì bước 1 bậc, lúc thì bước
2 bậc, lúc thì bước 3 bậc một bước Hỏi có bao nhiêu cách vượt 9 bậc cầu thang như thế? ”
Trang 25Trong bốn bước này ta chọn một bước nào đó cho 1 bậc, có 1
4
C 4 cách Sau khi chọn bước này, còn lại 3 bước, ta chọn một bước cho 3 bậc: đó là 1
i 1
cách
3.6 Nguyên lý truy hồi
Khi tính số các cấu hình tổ hợp được tạo lập từ n phần tử, thì số cấu hình tổ hợp này phụ thuộc vào n; ta ký hiệu là Tn Trong nhiều trường hợp rất khó tìm trực tiếp công thức của Tn, nhưng nhiều khi lại có thể tìm được mối liên hệ giữa n
T và Tn 1 hoặc với T , (kk n 1) Nhờ công thức này cùng với các giá trị ban đầu T , T1 2 mà ta dễ dàng tìm được Tn với bất kỳ giá trị nào của n Công thức đó gọi là công thức truy hồi
Do tính kế thừa, công thức truy hồi rất có tác dụng trong việc lập chương trình cho máy tính, đơn giản hóa đáng kể quá trình tính toán
Nếu công thức truy hồi có dạng Tn f (Tn 1 ) (hoặc Tn f (Tn 1 , Tn 2 )) thì
ta gọi đó là phương trình truy hồi cấp 1 (hoặc cấp 2) Nếu biết T1 (hoặc T1 và 2
T ) thì ta có thể tính được Tn với bất kỳ giá trị nào của n Cách tìm phương trình truy hồi, tùy theo bài toán thường rất khác nhau
Dưới đây ta xét một số thí dụ điển hình:
Thí dụ 1
Cho n đường thẳng có vị trí tổng quát trong mặt phẳng, nghĩa là không có 2
đường thẳng nào song song và cũng không có 3 đường thẳng nào đồng quy Tìm
số phần mặt phẳng Tn được tạo thành từ n đường thẳng đó
Trang 26Ta vẽ (n 1) đường thẳng có vị trí tổng quát, số phần mặt phẳng là Tn 1 Vẽ thêm đường thẳng thứ n, cắt (n 1) đường thẳng đã cho tại (n 1) giao điểm khác nhau; các giao điểm này chia đường thẳng vẽ thêm thành n phần
Mỗi phần đường thẳng nằm trong 1 phần mặt phẳng tạo nên bởi (n 1)
đường thẳng ban đầu và chia đôi phần mặt phẳng đó, nghĩa là tạo thêm n phần mặt phẳng nữa
Thí dụ 2 Bài toán họ nhà thỏ của Fibonacci (nhà toán học Ý 1170-1226)
Thả một cặp thỏ mới sinh (1 con đực, 1 con cái) lên một đảo hoang Giả sử khi được 2 tháng tuổi, chúng bắt đầu sinh sản, mỗi tháng một lứa, mỗi lứa sinh ra
1 cặp thỏ con Các cặp thỏ con cũng sinh trưởng và sinh sản theo quy tắc trên Tìm số cặp thỏ trên đảo sau n tháng, biết rằng trong thời gian nghiên cứu không
có cặp thỏ nào bị chết bệnh hoặc bị săn bắt
Giải:
Trang 27Quy luật của dãy số Fibonacci là một số hạng bất kỳ bằng tổng của hai số hạng đứng liền trước nó
Giải phương trình truy hồi Fibonacci:
Trang 29Bài 4 BÀI TOÁN LIỆT KÊ VÀ BÀI TOÁN TỒN TẠI
1.1 PHÁT BIỂU BÀI TOÁN LIỆT KÊ
Cho tập A {a , a , , a }1 2 n Từ các phần tử của A, ta tạo ra các cấu hình tổ hợp theo một quy tắc nào đó và gọi B là tập tất cả các cấu hình tổ hợp đó Bài toán đặt ra là hãy liệt kê tất cả các cấu hình tổ hợp của B Khác với bài toán đếm
là tìm số phần tử của B, trong bài toán này, ta phải lập một danh sách cấu hình chỉ rõ từng phần tử của B Rõ ràng là có nhiều cách liệt kê khác nhau, tuy nhiên chúng phải bảo đảm 2 nguyên tắc sau đây:
Một là: Không bỏ sót, nghĩa là phần tử nào cũng phải được liệt kê
Hai là: Không trùng lặp, nghĩa là không có phần tử nào được liệt kê quá một lần
Khó khăn của việc giải bài toán liệt kê là sự “bùng nổ tổ hợp” nghĩa là khi số phần tử cần liệt kê là một số lớn Thí dụ, tập B có 1 triệu phần tử, đây không phải
là con số lớn đối với các bài toán tổ hợp, và giả sử cứ 1 giây thì máy tính có thể liệt kê được 1 phần tử thì ta phải làm việc trên máy tính trong 35 ngày, mỗi ngày
8 giờ
Tuy nhiên, nếu số cấu hình tổ hợp không lớn thì cùng với máy tính, phương pháp liệt kê lại có thể giải được một số bài toán khó mà cho đến nay người ta cũng chưa tìm được phương pháp tổng quát để đếm các phần tử của B
Thí dụ như có bao nhiêu cách xếp 8 quân hậu lên 1 bàn cờ vua sao cho chúng từng đôi một không khống chế lẫn nhau (nghĩa là 2 quân hậu bất kỳ không được đứng chung 1 hàng, 1 cột hay 1 đường chéo) Hoặc có bao nhiêu cách phủ kín một bàn cờ vua bằng 32 quân đôminô
4.2 THUẬT TOÁN SINH
Thuật toán sinh là một thuật toán có thể áp dụng để giải các bài toán liệt kê các tổ hợp, thuật toán này dựa trên 2 giả thiết sau đây:
- Có thể xác định được một thứ tự toàn bộ trên tập các cấu hình tổ hợp cần liệt kê, từ đó xác định được cấu hình tổ hợp đầu tiên và cấu hình tổ hợp cuối cùng trong thứ tự đã xác định đó
- Đưa ra được một thuật toán để từ một cấu hình hiện có, tìm được cấu hình tiếp theo, nếu không tìm được cấu hình tiếp theo thì phải khẳng định được (chứng minh được) cấu hình hiện có là cấu hình cuối cùng (nghĩa là không còn một cấu hình nào khác ngoài các cấu hình đã liệt kê.)
Thí dụ Liệt kê tất cả các dãy nhị phân có độ dài n
Ta xếp các dãy này theo thứ tự tự nhiên, tức là theo thứ tự của số mà nó biểu diễn, nghĩa là dãy đầu tiên gồm n số 0 và dãy cuối cùng gồm n số 1
Như vậy dãy nhị phân được liệt kê theo thứ tự sau:
Trang 30Thuật toán sinh có những hạn chế sau:
- Trong nhiều bài toán việc tìm cấu hình ban đầu thường không phải là đơn giản, thậm chí ngay cả sự tồn tại một cấu hình như thế nhiều khi vẫn còn
là điều nghi vấn
- Mặt khác việc sắp xếp thứ tự các cấu hình nhiều khi rất phức tạp, do đó không phải một cấu hình kế tiếp nào cũng được sinh ra từ một cấu hình hiện có một cách đơn giản
Hãy xét thí dụ: Liệt kê tất cả các cách điền các chữ số nguyên dương (từ 1 đến 9) vào 9 ô vuông nhỏ trong một hình vuông lớn sao cho tổng các chữ số trên mỗi hàng, mỗi cột và mỗi đường chéo đều bằng nhau
Việc đưa ra một cấu hình đầu tiên tuy không đơn giản nhưng không đến nỗi quá khó, chẳng hạn có thể đưa ra một cấu hình như dưới đây:
Qua thí dụ trên ta thấy rằng thuật toán sinh có những hạn chế nên tính phổ dụng không cao Dưới đây ta xét một thuật toán có tính phổ dụng cao hơn
4.3 THUẬT TOÁN QUAY LUI
Ý tưởng cơ bản của thuật toán này là để xây dựng 1 cấu hình gồm n thành phần, người ta xây dựng dần các thành phần của cấu hình bằng cách thử lại tất cả các khả năng Giả sử cấu hình cần xây dựng có n thành phần là a a a1 2 n Giả thiết ở bước k ta đã xây dựng được (k 1) thành phần a a a1 2 k 1 và bây giờ xác định thành phần ak Ta duyệt tất cả các khả năng có thể đề cử cho ak và
Trang 31đánh số các khả năng ấy là i 1, 2, , nk Với mỗi khả năng i{1, 2, , n }k ta kiểm tra xem i có chấp nhận được không
Điểm mấu chốt của thuật toán này bao gồm 2 điểm chính sau đây:
Một là: Đưa ra một danh sách mọi khả năng đề cử cho i, nghĩa là không được
bỏ sót một khả năng nào
Hai là: Phải ghi nhớ tại mỗi bước đã đi qua, những khả năng nào đã được thử
để tránh trùng lặp Rõ ràng những thông tin này phải được lưu trữ theo cơ cấu
“ngăn xếp” (stack: vào sau, ra trước)
Hai yêu cầu: không bỏ sót và không trùng lặp luôn luôn là những đòi hỏi nghiêm khắc đối với bài toán đếm cũng như bài toán liệt kê
Hình 3.1 Hình 3.2 Hình 3.3
Trang 32Trên hình 3.3, cột C chỉ còn 1 ô trống là C2 để xếp hậu, khi đó ô D , D2 3 đều
bị khống chế, nên không còn ô trống nào để xếp hậu trên cột D Vậy việc chọn 4
B cũng không thể chấp nhận
Do đó việc xếp hậu tại A1 không thể chấp nhận
Do tính chất đối xứng của hình vuông nên việc xếp hậu tại A4 cũng bị loại trừ
Vậy chỉ còn lại 2 khả năng là xếp hậu tại A2 hoặc A3
- Xếp hậu tại A2 Xem hình 3.4
C
Sau khi xếp hậu ở C1 thì cũng chỉ còn 1 khả năng duy nhất để xếp hậu ở cột
D, đó là D3 (Xem hình 3.5, 3.6)
Vậy ta có được 1 cấu hình (hình 3.7)
Tương tự nếu chọn A3 cho quân hậu đầu tiên thì ta có 1 cấu hình nữa (hình 3.8)
Trang 33Hình 3.9 Cây tìm kiếm lời giải theo thuật toán quay lui
Trên hàng thứ nhất là 4 khả năng lựa chọn vị trí cho quân hậu ở cột A
Trên hàng thứ hai là các khả năng lựa chọn vị trí cho quân hậu ở cột B sau khi
vị trí của quân hậu ở cột A đã được lựa chọn (hàng 2 có 6 khả năng)
Trên hàng thứ 3 là các khả năng lựa chọn vị trí cho quân hậu ở cột C sau khi
vị trí của các quân hậu ở cột A và cột B đã được chọn Hàng 3 chỉ có 4 khả năng, nghĩa là có 2 trường hợp không lựa chọn được vị trí cho quân hậu ở cột C
Trên hàng cuối cùng là các vị trí cho quân hậu ở cột D sau khi vị trí của các quân hậu ở các cột A, B, C đã lựa chọn Chỉ có 2 trường hợp, tương ứng với 2 cách xếp 4 quân hậu thỏa mãn điều kiện của bài toán đề ra
Người ta còn có thể sử dụng “cây tìm kiếm lời giải” để liệt kê các dãy nhị phân, liệt kê các hoán vị và các tổ hợp Dưới đây ta xét một thí dụ để giải một bài toán khác
Thí dụ 2 Hãy liệt kê tất cả các con số hàng trăm gồm các chữ số khác nhau
được chọn từ tập A = {1, 3, 5, 7, 9} và tạo thành các dãy tăng (số hàng trăm < số hàng chục < số hàng đơn vị)
Ta có cây tìm kiếm lời giải dưới đây:
3
1
5 7
Trang 34Dễ dàng kiểm tra lại để thấy rằng số các con số này đúng bằng số tổ hợp 3
5
C 10
4.4 PHÁT BIỂU BÀI TOÁN TỒN TẠI
Trong các bài toán đếm và bài toán liệt kê, người ta tập trung sự chú ý vào việc đếm hoặc liệt kê các cấu hình tổ hợp thỏa mãn một số tính chất nào đó và thừa nhận sự tồn tại của các cấu hình tổ hợp đó là hiển nhiên Tuy nhiên có rất nhiều bài toán, việc chỉ ra sự tồn tại của một cấu hình thỏa mãn những tính chất cho trước là rất khó khăn Chẳng hạn, một kỳ thủ trước một tình huống cụ thể của một ván cờ, cần suy nghĩ xem liệu có một dãy các nước đi để chắc chắn thắng được đối phương hay không Nhiều khi ta không tìm được lời giải nhưng cũng không khẳng định được là không có lời giải Như vậy nội dung của bài toán tồn tại khác hẳn với các bài toán đếm và liệt kê Vấn đề đặt ra ở đây là: có hay không một cấu hình tổ hợp thỏa mãn một số tính chất cho trước? Điều này kéo theo sự khác nhau cả về phương pháp tư duy và thuật toán Bài toán tồn tại xem như được giải quyết nếu ta tìm được một cấu hình hoặc chứng minh được sự tồn tại của cấu hình Nhiều khi ta không tìm được một cách cụ thể cấu hình đó; mà chỉ nêu ra được một cách xây dựng cấu hình, hoặc là chứng minh được rằng cấu hình cần tìm là không có thì bài toán cũng coi như được giải quyết Để thấy rõ nội dung đa dạng và tính chất phức tạp của bài toán tồn tại, dưới đây ta hãy xét một
số bài toán cổ điển nổi tiếng
4.4.1 Bài toán đội hình duyệt binh của 36 sĩ quan
Có 6 đơn vị quân đội A, B, C, D, E, F; mỗi đơn vị cử 6 sĩ quan với 6 cấp bậc khác nhau: a, b, c, d, e, f Hỏi rằng có thể xếp 36 sĩ quan thành một đội ngũ hình vuông (6 hàng ngang, 6 hàng dọc) sao cho mỗi hàng ngang và mỗi hàng dọc đều
có người của tất cả các đơn vị và tất cả các cấp bậc sĩ quan
Bài toán có thể mở rộng cho n đơn vị quân đội với n cấp bậc sĩ quan khác nhau
Với n 4 ta có một lời giải như sau:
Ab Ba Cc Dd
Bc Ad Db Ca
Cd Dc Aa Bb
Da Cb Bd Ac
Trang 35Một lời giải cho trường hợp n 5 là:
Bài toán này do Euler đề xuất và ông mất khá nhiều thời gian cho bài toán
n 6 mà không đạt kết quả nên ông đưa ra một giả thuyết là bài toán này không
có lời giải, ngoài ra bài toán n 2 cũng không có lời giải nên Euler nêu lên một giả thuyết tổng quát là bài toán với n 4k 2 thì không có lời giải Giả thuyết này của Euler tồn tại suốt gần hai thế kỷ
Mãi đến năm 1901, Tarri - một nhà toán học Pháp - đã chứng minh được rằng với n 6 bài toán không có lời giải bằng cách duyệt tất cả các khả năng xếp, và đến năm 1960, ba nhà toán học Mỹ là Boce, Parker và Srikanda mới tìm được phương pháp xây dựng hình vuông la tinh trực giao cho các trường hợp:
n 4k 1 với k 1, 2, 3, ; còn các trường hợp khác vẫn còn là những thách thức hóc búa với trí tuệ loài người
4.4.2 Bài toán tô màu bản đồ
Các nhà nghiên cứu về bản đồ tô màu bản đồ địa lý theo quy tắc sau: Hai nước có chung đường biên giới phải được tô bởi 2 màu khác nhau Hãy chứng minh rằng mọi bản đồ địa lý có thể tô bằng 4 màu
Người ta đã chứng minh được rằng mọi bản đồ đều có thể tô với số màu lớn hơn 4, và với số màu ít hơn 4 thì không thể tô được Tuy nhiên mọi bản đồ thực
tế chỉ cần 4 màu là đủ; không ai tìm được một bản đồ mà bắt buộc phải tô bằng 5 màu
Bài toán này do một thương nhân người Anh là Gazri đề ra từ những năm 1850; người ta cố gắng chứng minh rằng chỉ cần 4 màu là đủ Sau hơn một thế
kỷ, mãi đến năm 1976 hai nhà toán học Mỹ là K.Appel và W.Haken mới chứng minh được giả thuyết này bằng máy tính điện tử
Tuy nhiên người ta vẫn nghi ngờ tính đúng đắn của cách chứng minh có sự trợ giúp của máy tính điện tử này
Vì vậy vào cuối những năm 1990 hai tác giả trên đã công bố cách chứng minh của mình bằng một cuốn sách dày 800 trang
Trang 364.4.3 Bài toán hình lục giác huyền bí
Bài toán này do Cliford Adams đề ra năm 1910, nội dung như sau:
Hãy điền các số từ 1 đến 19 vào 19 ô hình lục giác (như hình vẽ) sao cho tổng các số theo 3 chiều của các cạnh hình lục giác đều bằng nhau
Hơn nửa thế kỷ sau, năm 1962, Adams đã công bố lời giải như hình vẽ dưới đây Điều bất ngờ đây lại là lời giải duy nhất nếu bỏ qua những lời giải được suy
ra từ một phép biến hình đơn giản, chẳng hạn quay hình lục giác một góc 600
13 10
15 14
16 17
11
19 3
9
18
12 4
8 5
6
2
1 7
Thí dụ
Một đội bóng đá gồm 20 cầu thủ đeo số áo từ 1 đến 20, đứng ngẫu nhiên thành một vòng tròn Chứng minh rằng luôn tìm được ít nhất một nhóm gồm 4 cầu thủ đứng liền nhau mà tổng các số ghi trên áo của họ 43
Trang 37Vì các cầu thủ xếp vòng tròn, mỗi nhóm gồm 4 cầu thủ đứng liền nhau nên mỗi cầu thủ được xếp vào 4 nhóm khác nhau, do đó khi tính tổng các số ghi trên
áo của tất cả các nhóm thì số áo của mỗi cầu thủ được tính 4 lần Vậy
20.21
2
Từ kết quả trên suy ra tổng các số ghi trên áo của mỗi nhóm đều phải bằng
42 Điều này không thể xảy ra vì 2 nhóm kề nhau thì khác nhau 1 cầu thủ nên không thể có tổng các số ghi trên áo của họ bằng nhau được
4.5.2 Bài toán nhốt chim bồ câu và định lý Dirichlet
a) Định lý Dirichlet giản đơn
Nếu nhốt (n 1) con chim vào n chiếc lồng (n là số nguyên dương) thì có ít nhất 1 lồng chứa ít nhất 2 con chim
Thí dụ 1
Trong số 13 sinh viên chọn bất kỳ, có ít nhất 2 sinh viên sinh cùng một tháng
Thí dụ 2
Cho S {1, 2, 3, 4, 5, 6, 7, 8} Chọn ra 5 số bất kỳ Chứng minh rằng có ít nhất 2 số có tổng bằng 9
Thật vậy, ta chia 8 số đã cho làm 4 nhóm và coi mỗi nhóm như 1 lồng chim:
S {1, 8}; S {2, 7}; S {3, 6}; S {4, 5}
Mỗi số ta chọn ra coi như 1 con chim; mỗi số thuộc vào một nhóm nào đó Vậy nhốt 5 con chim vào 4 chiếc lồng, theo định lý Dirichlet sẽ luôn có ít nhất 1 nhóm chứa 2 số; 2 số này có tổng bằng 9 Bài toán đã được giải quyết
Trang 38Bài 5 CÁC BÀI TOÁN TỔ HỢP TỐI ƯU
5.1 PHÁT BIỂU BÀI TOÁN
Cho A là một tập hữu hạn, B là tập các cấu hình tổ hợp được tạo ra từ các phần tử của A, F(x) là một hàm xác định trên B Giả sử B và tất nhiên B cũng là một tập hữu hạn Bài toán đặt ra là: Tìm *
về nơi xuất phát Biết cij là chi phí đi từ Ai đến Aj; không nhất thiết cij cji Hãy tìm hành trình thỏa mãn các điều kiện trên với tổng chi phí ít nhất
Gọi mỗi hành trình thỏa mãn các điều kiện trên là x và B là tập tất cả các hành trình có thể có, mỗi hành trình là một hoán vị của n thành phố, do đó | B | n! Với mỗi hành trình x, tương ứng với một chi phí là F(x) Vậy bài toán đặt ra là: Tìm x* B sao cho: F(x )* F(x) x B
Đôi khi cũng viết
5.1.2 Bài toán cái túi
Một nhà thám hiểm tìm kiếm được n mẫu quặng; mẫu quặng thứ i cân nặng i
a (kg) và có giá trị là ci(đ) Anh ta có một cái túi chỉ đựng được b (kg) Hỏi rằng khi từ rừng sâu trở về, nhà thám hiểm cần đem theo những mẫu quặng nào
để có tổng giá trị là lớn nhất?
Ký hiệu xi là biến nhị phân: xi {0, 1}, còn gọi là biến lựa chọn
i
x 1 có nghĩa là nhà thám hiểm sẽ chọn đem về mẫu quặng thứ i và xi 0
trong trường hợp ngược lại Khi đó mô hình toán học của bài toán này là:
Trang 39Dưới đây ta cũng xét một vài thuật toán tiêu biểu
5.2 THUẬT TOÁN DUYỆT TOÀN BỘ
Giả sử phải giải bài toán: F(x) min, max; x B trong đó B là tập rời rạc Để giải bài toán này trước tiên ta liệt kê các phần tử của B; sau đó với mỗi
x B ta tính F(x); và so sánh các giá trị của F(x) để tìm ra phương án tối ưu Thuật toán đó gọi là thuật toán duyệt toàn bộ hay thuật toán điểm diện
Nếu số phần tử của B là nhỏ thì thì thuật toán này rất có hiệu quả và dễ hiểu Nếu |B| là khá lớn thì thuật toán này rất khó thực hiện, ngay cả việc thực hiện trên các máy tính hiện đại nhất Chẳng hạn như trong bài toán người du lịch với
n 15 thì ta có | B | 15! 1307674368000 phương án
Nếu mỗi giây máy tính duyệt được 1 triệu phương án thì máy tính phải làm việc trong thời gian liên tục là 1 307 674 giây, tương ứng với 3 700 giờ làm việc liên tục hay 154 ngày liên tục Đó là một điều không khả thi
Tuy nhiên cũng cần nhấn mạnh rằng có không ít bài toán tổ hợp tối ưu, chúng
ta chưa có một thuật toán hữu hiệu nào ngoài thuật toán duyệt toàn bộ, khi đó trong quá trình liệt kê, chúng ta cần tận dụng những thông tin thu được ở mỗi bước để loại bỏ những phương án mà chắc chắn không phải là tối ưu Một trong các giải pháp như thế được giới thiệu dưới đây với tên gọi “thuật toán nhánh cận”
Lược đồ tổng quát của thuật toán nhánh cận có thể mô tả như sau:
Bước 0:
Tìm cận dưới của F(x) trên B Đó là một số, ký hiệu là: