Chơng 1. Tậphợpvàphépđếm Chơng 1 Tậphợpvàphépđếm I. Tậphợp 1. Khái niệm tậphợp 1. Khái niệm Là một nhóm các đối tợng nào đó hiểu theo nghĩa chung nhất (không kể đến bản chất của các đối tợng đó không cần các đặc tính chung giữa các đối tợng). Tuy nhiên khi nói về tậphợp ta th- ờng xét nhóm các đối tợng có các đặc tính liên quan đến nhau, cùng thoả một tính chất nào đó. Ví dụ : tậphợp các sinh viên trong một lớp, tậphợp các cuốn sách trong một th viện, tậphợp các đ- ờng tròn trong mặt phẳng, tậphợp các kí tự trong bảng mã ASCII Lý thuyết tậphợp dựa trên khái niệm trực giác này đợc nhà bác học Đức George Cantor đa ra năm 1895 đã đặt nền tảng cơ sở cho nhiều bộ môn toán học khác nhau. Tuy nhiên do tính không chặt chẽ của định nghĩa nên nó dẫn đến nhiều nghịch lý. Một trong những nghịch lý nổi tiếng đó do nhà triết học Anh Bertrand Russell chỉ ra năm 1902 (xem phần bài tập). Từ đó lý thuyết tậphợp đợc xây dựng chặt chẽ hơn dựa trên các hệ tiên đề. Ngời đầu tiên xây dựng hệ tiên đề cho lý thuyết tậphợp là E. Zemelo (1904). Mọi chứng minh về tậphợp giờ đây chỉ cần suy dẫn ra từ hệ tiên đề mà không cần đến những trực giác liên quan tới khái niệm tậphợp thờng là thiếu tin cậy trong những trờng hợp cần tính toán phức tạp. Tuy vậy trong tập bài giảng này khái niệm trực giác về tậphợp của Cantor là đủ để chúng ta trình bày và chứng minh các kiến thức cơ sở về lý thuyết tậphợp dùng trong các ứng dụng tin học. Các đối tợng thuộc một tậphợp cho trớc đợc gọi là các phần tử của tập hợp. Một phần tử x thuộc tậphợp X đợc kí hiệu : x X, nhiều phần tử (ví dụ x, y, z) thuộc cùng một tậphợp có thể đợc viết gọn : x, y, z X. Kí hiệu x X để chỉ x không phải là phần tử của X. b. Biểu diễn tậphợp i. Phơng pháp liệt kê Ví dụ : A = { 1, 3, 5, 7, 9 }, B = {Xuan, Ha, Thu, Dong }, C = {2, 3, 5, } ii. Mô tả tính chất iii.Giản đồ Venn. c. Lực lợng của tậphợp Đối với tập hữu hạn : Là số lợng phần tử của tậphợp Đối với tập vô hạn : Phân biệt vô hạn đếm đợc và vô hạn continum 2. Tập con, tập tích a. Tập con b. Tập tích c. Tập của tập hợp, tập luỹ thừa 1 Chơng 1. Tậphợpvàphépđếm 3. Các phép toán tậphợp a. Các phép toán: Hợp, giao, hiệu, phần bù b. Các hằng đẳng thức c. Phép toán trên nhiều tậphợp d. Tập bằng nhau, cách chứng minh 2 tập bằng nhau Bằng định nghĩa hoặc dùng các hằng đẳng thức. Ví dụ 1 : 1. Chứng minh A = B với A = {1, 2, 3} và B = {x R : x 3 + 11x = 6x 2 + 6} Chứng minh : A B. (thử từng phần tử). Ngợc lại B A ((x - 1)(x - 2)(x - 3) = 0) 2. Chứng minh với bất kỳ hai tập A và B, ta có : (A B) (A B) = (A B) (B A) Chứng minh : Dùng định nghĩa các phép toán 3. Chứng minh với bất kỳ các tập A, B, C ta có : )CB(A)CB(A = . Chứng minh : Dùng liên tiếp công thức De Morgan 4. Biểu diễn tậphợp trên máy tính. Vectơ bit II. phépđếm 1. Các qui tắc đếm cơ bản a. Qui tắc cộng Giả sử có công việc có thể làm đợc theo 2 cách. Hai cách này không cần phải làm đồng thời, không phụ thuộc vào nhau. Cách 1 có thể làm theo m phơng án và cách 2 có thể làm theo n phơng án . Khi đó số phơng án để thực hiện công việc trên là m + n. Ví dụ 1 : Cần chọn một đại biểu là sinh viên nam trong 86 nam hoặc là sinh viên nữ trong 34 sinh viên nữ => số phơng án chọn là 86 + 34 = 120. Tơng tự chọn một gà hoặc một vịt. Có thể mở rộng qui tắc trên cho trờng hợp 1 công việc có thể thực hiện đợc theo k cách, tơng ứng với số phơng án n 1 , n 2 , ., n k (không có 2 cách nào cùng phải tiến hành đồng thời), khi đó số ph- ơng án để thực hiện công việc là m = n 1 + n 2 + . + n k . Ví dụ 2 : Một sinh viên có thể chọn câu hỏi thi theo 4 chủ đề khác nhau. b. Qui tắc nhân Giả sử một công việc có thể thực hiện đợc theo 2 giai đoạn lần lợt nhau tơng ứng với m và n ph- ơng án chọn. Khi đó số phơng án để chọn là m*n. Tơng tự ta cũng có qui tắc nhân mở rộng : m = n 1 * n 2 * . * n k Ví dụ 3 : Cần chọn một đại biểu là sinh viên nam trong 86 nam và một là sinh viên nữ trong 34 2 Chơng 1. Tậphợpvàphépđếm sinh viên nữ số phơng án chọn là 86 * 34 = 3224. Số biển số xe máy gồm 2 chữ cái và 3 chữ số là : 10.10.10.26.26 = 676000 Một từ máy 2 byte ghi đợc số lớn nhất là 2 16 - 1 = 65535 Đếm số hàm từ tập m phần tử vào tập n phần tử : n m Số hàm đơn ánh = n(n-1)(n-2) . (n-m+1) (nếu m > n số hàm = 0) Số tập con của tập hữu hạn A = 2 |A| . (đợc suy từ mỗi tập con có thể biểu diễn bởi dãy nhị phân độ dài |A|). Có thể phát biểu các qui tắc trên dới dạng tậphợp : A 1 , ., A n là các tập hữu hạn, rời nhau từng đôi một. Khi đó : |A 1 A 2 . A n | = |A 1 | + |A 2 | + . + |A n | A 1 , ., A n là các tập hữu hạn. Khi đó : |A 1 ì A 2 ì . ì A n | = |A 1 | * |A 2 | * . * |A n | c. Kết hợp 2 qui tắc cộng và nhân Ví dụ 4 : Tìm số tên gọi trong PASCAL không quá 3 kí tự gồm S1 + S2 = 27 + (27*37) + (27*37*37) = 38089 Trong một cỗ bài từ 10 đến át, có bao nhiêu phơng án rút 5 quân bài gồm 1 đôi và một bộ ba giống nhau. Gọi B2 và B3 là số phơng án đôi và ba S = B2*B3 B2 = Ba + Bb + Bc + Bd + Be là khả năng bộ đôi theo 10, j, q, k, át = 5*Ba = 5*6 = 30 B3 = Ba + Bb + Bc + Bd + Be là khả năng bộ ba theo 10, j, q, k, át = 5*Ba = 5*3 = 15 => S = 30*15 = 450 cách chọn Số dãy nhị phân có độ dài n là 2 n . Số tập con của tập n phần tử là 2 n . (Tơng ứng 1-1 với dãy 0,1 độ dài n). 2. Nguyên lý bù trừ Giả sử có công việc có thể làm theo 2 cách : cách 1 chọn trong m phơng án, cách 2 chọn trong n phơng án. Nếu 2 cách này trùng nhau theo k phơng án thì số phơng án chọn sẽ là m + n k . Phát biểu dới dạng tậphợp : A B = A + B - A B Trờng hợp tổng quát n tập : A 1 A 2 A n = n n nkjii kji nji ji ni i A .AA)( .AAAAAA ++ + <<< 21 1 11 1 Chứng minh : Xem phần tổ hợp, chỉnh hợpvà chơng : Logic và suy luận toán học 3 Chơng 1. Tậphợpvàphépđếm Ví dụ 5 : Đếm số số nguyên bé hơn 100 hoặc chẵn hoặc chia hết cho 3 Số chẵn = 100/2 = 50, số chia hết cho 3 = 100/3 = 33. Số đồng thời chẵn và chia hết cho 3 => chia hết cho 6 = 100/6 = 16 S = 50 + 33 - 16 = 67 số Ví dụ 6 : Số các xâu không dài quá 8 có chữ đầu là 1 hoặc kết thúc 00 = 2 7 + 2 6 - 2 5 3. Nguyên lý lồng chim bồ câu (nguyên lý Dirichlet) Định lý 1 Nếu nhốt k+1 con chim bồ câu vào trong k chuồng thì có ít nhất 1 chuồng chứa 2 hoặc nhiều hơn 2 con chim bồ câu. Chứng minh : Phản chứng Ví dụ 7 : Nếu sinh viên phải học 6 môn/tuần (5 ngày) có ít nhất 1 ngày phải học 2 môn khác nhau. Định lý 2 (Nguyên lý Dirichlet tổng quát) : Nếu có N vật đặt vào trong k hộp sẽ tồn tại ít nhất 1 hộp chứa ít nhất N/k vật. Chứng minh : Phản chứng Ví dụ 8 : Sẽ có một tháng nào đó bạn phải dự sinh nhật của ít nhất 9 ngời bạn khác nhau trong lớp (100 sinh viên). Ví dụ 9 : Trong khoá học với 400 học viên, có ít nhất 2 ngời trùng ngày sinh. Ví dụ 10 : Một sinh viên học 40 từ tiếng Anh trong một tháng 30 ngày, mỗi ngày ít nhất 1 từ. Chỉ ra có một dãy các ngày liên tiếp sinh viên trên học đúng 19 từ tiếng Anh. Chứng minh : Gọi a i là số từ sv học từ đầu tháng đến ngày thứ i, khi đó dãy a 1 , a 2 , , a 30 là khác nhau và tăng dần, ngoài ra 1 a i 40. Đặt b i = a i + 19 20 b i 59 và cũng tạo thành dãy phân biệt và tăng dần. Dãy 60 số a 1 , a 2 , , a 30 , b 1 , b 2 , , b 30 có mỗi số bé hơn 59 nên tồn tại 2 số bằng nhau : a i và b j nào đó. Nh vậy từ ngày i đến ngày j sv học đúng 19 từ tiếng Anh vì b j = a j + 19 = a i . Ví dụ 11 : Chứng minh trong n + 1 số nguyên dơng không vợt quá 2n tồn tại ít nhất một số chia hết cho số khác Chứng minh : Có thể biểu diễn mỗi số nguyên dơng dới dạng tích v.2 u trong đó v là một số lẻ, nh vậy ứng với dãy a 1 , a 2 , , a n+1 ta có n+1 số lẻ v 1 , v 2 , , v n+1 , các số này không vợt quá 2n. Do từ 0 đến 2n chỉ có n số lẻ nên phải có 2 số v i và v j bằng nhau. Từ đó nếu u i u j thì a i chia hết a j và ngợc lại. Ví dụ 12 : Mọi dãy n 2 +1 số thực phân biệt đều có một dãy con n+1 số thực sự tăng hoặc giảm. Chứng minh : Xét dãy a 1 , a 2 , , a n2+1 các số thực khác nhau. Gọi i k , d k là độ dài của dãy con tăng, 4 Chơng 1. Tậphợpvàphépđếm giảm dài nhất bắt đầu từ a k , nh vậy với mỗi a k ta có cặp (i k , d k ). Giả thiết không có dãy tăng hoặc giảm có độ dài n+1, tức mọi i k , d k không vợt quá n. Theo qui tắc nhân có tất cả n 2 cặp i k , d k (k=1, , n 2 +1) do đó có ít nhất hai cặp (i k , d k ) bằng nhau. Tức tồn tại 2 số a s và a t sao cho i s = i t và d s = d t . Điều này là mâu thuẫn vì a s và a t là khác nhau nên độ dài dãy (tăng hoặc giảm) xuất phát từ chúng đến cuối dãy phải chênh nhau ít nhất 1. Ví dụ 13 : Chứng tỏ trong nhóm 6 ngời với mỗi cặp hoặc là bạn hoặc là thù có tồn tại 3 ngời hoặc là bạn hoặc là thù lẫn nhau Chứng minh : Lấy A. Còn lại 5 ngời với 2 khả năng : hoặc là bạn hoặc là thù của A. Do vậy, sẽ có ít nhất 3 ngời B, C, D hoặc là bạn hoặc là thù của A. Giả sử là bạn của A. Nếu trong B, C, D có một cặp là bạn thì sẽ hợp cùng A tạo thành bộ ba là bạn của nhau. Ngợc lại B, C, D là bộ ba thù của nhau. III. Hoán vị và tổ hợp không lặp 1. Định nghĩa a. Hoán vị Hoán vị của tập n đối tợng là một cách sắp xếp có thứ tự n đối tợng đó. Số các hoán vị của một tậphợp n phần tử đợc kí hiệu là P(n). Ví dụ 14 : Cho tập A = {1, 2, 3, 4, 5}. Khi đó các cách sắp xếp 12345, 23541, 31425 là những hoán vị của tập A. b. Chỉnh hợp Một cách sắp xếp k đối tợng có kể thứ tự đợc gọi là một chỉnh hợp chập k của tậphợp n đối tợng. Số chỉnh hợp chập k của n đối tợng đợc kí hiệu là A(n,k). Ví dụ 15 : Cho tập A = {1, 2, 3, 4, 5}. Khi đó các cách sắp xếp 123, 235, 314, 321 là những chỉnh hợp chập 3 của tập A. c. Tổ hợp Một cách sắp xếp k đối tợng không kể thứ tự đợc gọi là một tổ hợp chập k của tậphợp n đối tợng. Số tổ hợp chập k của n đối tợng đợc kí hiệu là C(n,k). Ví dụ 16 : Cho tập A = {1, 2, 3, 4, 5}. Khi đó các cách sắp xếp 123, 235, 314, là những tổ hợp chập 3 của tập A. 2. Công thức tính Định lý 3 P(n) = n! A(n, k) = n!/(n-k)! C(n, k) = n!/(n-k)!k! Chứng minh : Lần lợt lấy phần tử thứ nhất trong n vật, thứ hai trong n-1, , cuối cùng phần tử thứ k đ ợc lấy 5 Chơng 1. Tậphợpvàphépđếm trong (n-k+1) vật, theo qui tắc nhân ta có số chỉnh hợp A(n, k) = n(n-1)(n-2) . . . (n-k-1) = n!/(n- k)!. Khi đó P(n) là trờng hợp riêng của A(n,k) khi k = n. Từ đó P(n) = n!/(n-n)! = n!. Ta cũng có A(n,k) = k!C(n,k) vì một dãy có thứ tự có thể có k! hoán vị khác nhau để tạo thành tập dãy không thứ tự. Từ đó suy ra C(n,k) = A(n,k)/k! = n!/k!(n-k)!. Tóm lại ta có : P > A > C (giao hoán > chỉnh hợp > tổ hợp) Từ định lý trên ta có hệ quả : C(n, k) = C(n, n-k). Ví dụ C(10,3) = C(10, 7) 3. Ví dụ Số cách lấy 5 quân bài từ tập 13 quân bài C(13, 5) Số tập con 5 phần tử của tập {1, 2, 3, . . ., 13} C(13,5) Số dãy 5 đối tợng tạo đợc từ tập 13 đối tợng A(13,5) Số lợng các số có 3 chữ số khác nhau A(10,3) Số lợng ngời mã hoá đợc bằng 7 chữ số, sao cho các chữ số không lặp lại P(7) Số đờng đi qua 6 thành phố mỗi thành phố qua duy nhất 1 lần P(6) 4. Một số tính chất Định lý 4 (Hệ số nhị thức) : (x + y) n = knk n k yx)k,n(C = 0 Đại lợng C(n, k) còn gọi là hệ số nhị thức, vì là hệ số của thừa số x k y n-k trong khai triển nhị thức (x + y) n . Chứng minh : Có C(n,k) cách chọn k số hạng x từ n tổng (x + y) của phép nhân, khi đó y chỉ chọn đợc từ n-k tổng còn lại (và là duy nhất). Cho k chạy từ 0 đến n suy ra đfcm. Định lý 5 n n k )k,n(C 2 0 = = Chứng minh : Số tập con của tập có n phần tử là 2 n . Gồm số tập con có 0 phần tử (C(n,0)), 1 phần tử (C(n,1), ., và n phần tử (C(n,n)). Cách khác (dùng định lý nhị thức): (1+1) n = = n k )k,n(C 0 Định lý 6 = n k 0 (-1) k C(n,k) = 0 Chứng minh : Dùng định lý nhị thức: (1-1) n = = n k 0 (-1) k C(n,k) 6 Chơng 1. Tậphợpvàphépđếm Định lý 7 (Hằng đẳng thức Pascal) : C(n+1,k) = C(n,k-1) + C(n,k) Chứng minh : Xét tập S có n+1 phần tử và S = T\{a} có n phần tử. Lấy k phần tử từ T gồm : có C(n,k) cách lấy không có a (trong S) và C(n,k-1) cách lấy có a trong S\{a}. Đây là cơ sở tạo thành tam giác Pascal. Định lý 8 (Hằng đẳng thức Vandermonde) : C(n+m, k) = = k j 0 C(n, j)*C(m, k-j) Chứng minh : Cho tập S có n phần tử vàtập T có m phần tử. C(n+m,k) là số cách chọn k phần tử từ 2 tập này. Mỗi cách chọn có thể sinh từ j phần tử của S và k-j của T. Theo qui tắc nhân ta đ ợc kết quả. IV. Hoán vị và tổ hợp có lặp 1. Định nghĩa a. Hoán vị có lặp Hoán vị của tập n đối tợng, trong đó có một số đối tợng đợc lặp lại là một cách sắp xếp có thứ tự n đối tợng đó. Số các hoán vị lặp lại của một tậphợp n phần tử đợc kí hiệu là P(n/n 1 , n 2 , , n k ) hoặc ngắn gọn hơn là P(n/n i ), trong đó n i là số lần lặp lại của đối tợng thứ i. Trờng hợp không gây nhầm lẫn ta ký hiệu P(n). Chú ý vì các đối tợng có lặp lại nên số hoán vị sẽ bị trùng nhau, việc đếm phải trừ ra các phơng án này nên số hoán vị có lặp sẽ ít hơn không lặp. Ví dụ 17 : Một sắp xếp lại từ NGHIENG là một hoán vị có lặp vì trong 7 chữ cái trên có các chữ cái N và G đợc lặp lại với số lần lặp là 2, 2. b. Chỉnh hợp có lặp Một cách sắp xếp k đối tợng có kể thứ tự, trong đó các đối tợng đợc phép lặp lại đợc gọi là một chỉnh hợp chập k của tậphợp n đối tợng. Số chỉnh hợp chập k của n đối tợng đợc kí hiệu là A(n,k). Ví dụ 18 : Cho tập A = {1, 2, 3}. Khi đó các cách sắp xếp 11, 12, 13, 21, 22, 23 là những chỉnh hợp có lặp chập 2 của tập A. c. Tổ hợp Một cách sắp xếp k đối tợng không kể thứ tự, các đối tợng đợc lặp lại đợc gọi là một tổ hợp có lặp chập k của tậphợp n đối tợng. Số tổ hợp chập k của n đối tợng đợc kí hiệu là C(n,k). Ví dụ 19 : Cho tập A = {1, 2, 3}. Khi đó các cách sắp xếp 11, 12, 13, 22, 23, 31, là những tổ hợp có lặp chập 2 của tập A. Ví dụ 20 : Cho một hộp gồm 3 quả bóng Vàng, Xanh, Đỏ. Giả thiết mỗi lần lấy ra 1 quả bóng và bỏ trở lại hộp. Một cách lấy 4 quả bóng qua 4 lần từ hộp trên là một tổ hợp có lặp chập 4 của 3 quả bóng (chẳng hạn 4V, 3V+1X, 2Đ+2X, là những ph ơng án) 7 Chơng 1. Tậphợpvàphépđếm Ví dụ 21 : Giả thiết cần chọn 5 sinh viên từ 4 khối lớp A, B, C, D (mỗi lớp có không ít hơn 5 sinh viên). Mỗi phơng án chọn là một tổ hợp có lặp chập 5 của 4 đối tợng. 2. Công thức tính Định lý 9 P(n/ n 1 , n 2 , , n k ) = n!/n 1 ! .n k ! A(n, k) = n k C(n,k) = C(n+k-1, k) Chứng minh A'(n, k): mỗi lần chọn một đối tợng (trong n khả năng). k lần chọn n k khả năng. Ví dụ : Số dãy nhị phân độ dài n là số chỉnh hợp chập n của 2 đối tợng 0 và 1 tức A(2, n) = 2 n . Số chỉnh hợp có lặp chập 4 từ 3 đối tợng 1,2,3 là A(3,4) = 3 4 = 81. P'(n) : Đầu tiên đặt n 1 đối tợng (giống nhau) vào n vị trí đợc C(n, n 1 ) phơng án. Tiếp tục đặt n 2 đối tợng vào n-n 1 vị trí còn lại đợc C(n-n 1 , n 2 ) phơng án . áp dụng qui tắc nhân lấy tích các thừa số này cho kết quả cần tìm. Ví dụ : Số phơng án sắp xếp lại từ NGHIÊNG đợc tính : Đầu tiên đặt 2 chữ N vào 2 trong 7 vị trí có thể cho C(7, 2) = 21 phơng án. Tiếp theo việc sắp xếp từ G vào 5 vị trí sẽ cho C(5, 2) = 10 ph- ơng án. Việc sắp xếp H trong 3 vị trí cho 3 phơng án, I cho 2 và Ê cho 1 phơng án. Tích các số này ta đợc : 21 * 10 * 3 * 2 * 1 = 1260 phơng án. Đó chính là số P(n) = 7!/2!2! = 1.2.3.5.6.7 = 1260. Để chứng minh số tổ hợp ta xem cách tính cho ví dụ 3 ở trên : Giả thiết cần chọn 5 sinh viên từ 4 khối lớp A, B, C, D (mỗi lớp có không ít hơn 5 sinh viên). Để biểu diễn một phơng án chọn ta kí hiệu một sinh viên bằng 1 dấu * và 4 lớp bởi 4 khoang cách nhau bởi 3 vách ngăn. Hình vẽ dới chỉ ra một phơng án chọn gồm 2 sinh viên lớp A, 1 lớp C và 2 lớp D. A B C D ** * ** Các phơng án khác có thể đạt đợc từ phơng án trên bằng cách dịch chuyển các vách ngăn một cách thích hợp. Nói cách khác mỗi phơng án là một cách sắp xếp 3 vách ngăn (hoặc 5 sinh viên) trong số 8 vị trí có thể, hay số phơng án sẽ là C(8,5) = C(4+5-1,5). Tổng quát hoá ví dụ trên ta đợc đfcm. 3. Các ví dụ Số tổ hợp 5 màu (có tính thứ tự) từ 7 sắc cầu vồng : A'(7,5) = 7 5 Có bao nhiêu tổ hợp 5 tờ bạc từ 7 loại giấy bạc khác nhau : C(11,5) Cần mua 5 lít gồm một số lít xăng và dầu từ cửa hàng xăng dầu. Có bao nhiêu phơng án ? C(5,2) = C(6,2) Phơng trình x + y + z = 11 có bao nhiêu nghiệm nguyên dơng. Một nghiệm tơng ứng một cách chọn 11 phần tử trong 3 loại đối tợng x, y, z không phân biệt thứ 8 Chơng 1. Tậphợpvàphépđếm tự. Do vậy nó bằng tổ hợp chập 11 từ 3 đối tợng C(11+3-1,11) = C(13,11). Có bao nhiêu phơng án sắp xếp 32 quân trên bàn cờ quốc tế ? Đây là bài toán hoán vị có lặp với n = 32 và có số các quân trắng, đen lặp theo thứ tự : tốt, xe, mã, tợng = 8, 8, 2, 2, 2, 2, 2, 2. Do đó số phơng án là : 32!/(8!.2!.2!.2!.2!) 2 . Có bao nhiêu phơng án chia cỗ bài 52 quân cho 4 ngời chơi : Xét bài toán theo dạng mỗi quân bài đợc đánh dấu 1 trong 4 ngời sẽ nhận nó, nh vậy bộ bài gồm 4 đối tợng, mỗi đối tợng lặp lại 13 lần. Mỗi phơng án chia bài là một hoán vị có lặp của 4 đối tợng này Số phơng án là 52!/(13!) 4 4. Định lý về sự phân chia đồ vật vào trong hộp Định lý 10 : Số phơng án phân chia n đối tợng khác nhau vào k hộp khác nhau sao cho hộp thứ i có n i đối tợng bằng số hoán vị n đối tợng với các số lặp lại n i (1 i k). Sau đây là bảng tóm tắt các công thức tổ hợp Kí hiệu Không lặp Có lặp Hoán vị P(n) n! n!/n 1 ! n k ! Chỉnh hợp chập k A(n, k) n!/k! n k Tổ hợp chập k C(n, k) n!/k!(n-k)! (n+k-1)!/k!(n-1)! V. Sinh hoán vị và tổ hợp 1. Sinh hoán vị Có nhiều phơng pháp khác nhau để sinh hoán vị từ tập n phần tử. Trong phần này ta chỉ trình bày phơng pháp sinh theo thứ tự từ điển. Để đơn giản các phần tử của tậphợp đợc đánh số từ 1 đến n. a. Định nghĩa Hoán vị đi trớc : hoán vị a 1 a 2 a n đợc gọi là đi trớc (hoặc nhỏ hơn) hoán vị b 1 b 2 b n nếu với k nào đó (1 k n) ta có : a i = b i (1 i k-1) và a k < b k . Ví dụ : 12345 < 12354, 135642 < 145362 Hoán vị liền sau : Hoán vị b 1 b 2 b n đợc gọi là hoán vị liền sau hoán vị a 1 a 2 a n nếu không tồn tại hoán vị c 1 c 2 c n sao cho a 1 a 2 a n < c 1 c 2 c n < b 1 b 2 b n . Ví dụ : hoán vị 123456 có hoán vị liền sau là 123465, 124356 là liền sau của 123654 b. Cách tạo hoán vị liền sau Tìm từ phải qua trái của hoán vị xuất phát cặp số nguyên a j , a j+1 đầu tiên có a j < a j+1 . Chọn số nhỏ nhất trong các số nguyên lớn hơn a j từ a j+1 đến a n đặt vào vị trí thứ i. Các số còn lại đợc đặt liên tiếp từ nhỏ đến lớn từ vị trí i+1 đến hết. Ví dụ : Từ hoán vị 123654 tìm đợc cặp (3,6), số bé nhất lớn hơn 3 là 4. Đặt 4 vào vị trí của 3 ta đ- ợc xâu 124, các số còn lại (3,6,5) đợc đặt tiếp theo từ nhỏ đến lớn ta đợc : 124356 là hoán vị liền sau của hoán vị ban đầu. c. Thuật toán 9 Chơng 1. Tậphợpvàphépđếm Program Sinh_hoan_vi_theo_thu_tu_tu_dien; Begin s := 123 n ; i := Vitricap; { i là vị trí đầu tiên từ phải sang sao cho s[i] < s[i+1] } While i <> 0 do Begin j := Min(i); { j là vị trí s[k] bé nhất từ i+1 đến cuối xâu s[k] > s[i] } Swap(i,j); { Đổi s[i] với s[k] } Sapxep(i+1, n); { Sắp xếp tăng dần dãy s từ i+1 đến cuối xâu } Write(s); i := Vitricap; End; End; Thuật toán này cần dùng 4 hàm Vitricap, Min(i), Swap(i,j) và Sapxep(i,j). Minh hoạ với ví dụ xâu s = 123. 2. Sinh tổ hợp chập k a. Sinh tổ hợp liền sau Lùi từ phải sang trái cho đến i đầu tiên thoả mãn : a i n k + i, tăng a i lên 1 đơn vị và thay các số tiếp theo số sau hơn số trớc 1 đơn vị. b. Thuật toán Program Sinh_to_hop_chap_k_theo_thu_tu_tu_dien; Begin s := 123 k ; i := Vitri; { i là vị trí đầu tiên từ phải sang trái sao cho s[i] n-k+i } While i <> 0 do Begin s[i] := s[i] + 1; For j:=i+1 to k do s[j] := s[j-1] + 1; Write(s); i := Vitri; End; End; Ngoài thuật toán sinh theo thứ tự từ điển ta còn một số thuật toán khác nh : dựa trên khai triển Cantor của một số nguyên, quay lui 10