Lý thuyết tổ hợp là một phần quan trọng của toán học rời rạc chuyên nghiên cứu sự phân bố các phần tử vào các tập hợp. Thông thường các phần tử này là hữu hạn và việc phân bố chúng phải thoả mãn những điều kiện nhất định nào đó, tùy theo yêu cầu của bài toán cần nghiên cứu. Mỗi cách phân bố như vậy gọi là một cấu hình tổ hợp.Liệt kê, đếm các đối tượng có những tính chất nào đó là một phần quan trọng của lý thuyết tổ hợp.Chúng ta cần phải đếm các đối tượng để giải nhiều bài toán khác nhau.Hơn nữa các kỹ thuật đếm được dùng rất nhiều khi tính xác suất của các biến cố.
CHUYÊN ĐỀ TỔ HỢP Lý thuyết tổ hợp phần quan trọng toán học rời rạc chuyên nghiên cứu phân bố phần tử vào tập hợp Thông thường phần tử hữu hạn việc phân bố chúng phải thoả mãn điều kiện định đó, tùy theo yêu cầu toán cần nghiên cứu Mỗi cách phân bố gọi cấu hình tổ hợp.Liệt kê, đếm đối tượng có tính chất phần quan trọng lý thuyết tổ hợp.Chúng ta cần phải đếm đối tượng để giải nhiều toán khác nhau.Hơn kỹ thuật đếm dùng nhiều tính xác suất biến cố I BÀI TOÁN ĐẾM CƠ SỞ CỦA PHÉP ĐẾM 1.1 Những nguyên lý đếm bản: 1) Quy tắc cộng: Giả sử có k cơng việc T1, T2, , Tk Các việc làm tương ứng n1, n2, , nk cách giả sử khơng có hai việc làm đồng thời Khi số cách làm k việc n1+n2+ + nk Thí dụ 1: Một sinh viên chọn thực hành máy tính từ ba danh sách tương ứng có 23, 15 19 Vì vậy, theo quy tắc cộng có 23 + 15 + 19 = 57 cách chọn thực hành Quy tắc cộng phát biểu dạng ngôn ngữ tập hợp sau: Nếu A1, A2, , Ak tập hợp đôi rời nhau, số phần tử hợp tập hợp tổng số phần tử tập thành phần Giả sử Ti việc chọn phần tử từ tập Ai với i=1,2, , k Có |Ai| cách làm Ti khơng có hai việc làm lúc Số cách chọn phần tử hợp tập hợp này, mặt số phần tử nó, mặt khác theo quy tắc cộng |A1|+|A2|+ +|Ak| Do ta có: |A1 A2 Ak| = |A1| + |A2| + + |Ak| 2) Quy tắc nhân: Giả sử nhiệm vụ tách thành k việc T1, T2, , Tk Nếu việc Ti làm ni cách sau việc T1, T2, Ti-1 làm, có n1.n2 nk cách thi hành nhiệm vụ cho Thí dụ 2: 1)Người ta ghi nhãn cho ghế giảng đường chữ số nguyên dương không vượt 100 Bằng cách vậy, nhiều có ghế ghi nhãn khác nhau? Thủ tục ghi nhãn cho ghế gồm hai việc, gán 26 chữ sau gán 100 số nguyên dương.Quy tắc nhân có 26.100=2600 cách khác để gán nhãn cho ghế.Như nhiều ta gán nhãn cho 2600 ghế 2) Có xâu nhị phân có độ dài n Mỗi n bit xâu nhị phân chọn hai cách bit hoặc Bởi theo quy tắc nhân có tổng cộng n xâu nhị phân khác có độ dài n 3)Có thể tạo ánh xạ từ tập A có m phần tử vào tập B có n phần tử? Theo định nghĩa, ánh xạ xác địnhtrên A có giá trị B phép tương ứng phần tử A với phần tử B Rõ ràng sau chọn ảnh i - phần tử đầu, để chọn ảnh phần tử thứ i A ta có n cách Vì theo quy tắc nhân, ta có n.n n=nm ánh xạ xác định A nhận giá trị B 4) Có đơn ánh xác định tập A có m phần tử nhận giá trị tập B có n phần tử? Nếu m > n với ánh xạ, có hai phần tử A có ảnh, điều có nghĩa khơng có đơn ánh từ A đến B Bây giả sử m n gọi phần tử A a1,a2, ,am Rõ ràng có n cách chọn ảnh cho phần tử a1 Vì ánh xạ đơn ánh nên ảnh phần tử a2 phải khác ảnh a1 nên có n - cách chọn ảnh cho phần tử a2 Nói chung, để chọn ảnh ak ta có n - k + cách Theo quy tắc nhân, ta có n(n 1)(n 2) (n m + 1) = n! ( n m)! đơn ánh từ tập A đến tập B Nguyên lý nhân thường phát biểu ngôn ngữ tập hợp sau Nếu A1, A2, , Ak tập hữu hạn, số phần tử tích Descartes tập tích số phần tử tập thành phần Ta biết việc chọn phần tử tích Descartes A1 x A2 x x Ak tiến hành cách chọn phần tử A1, phần tử A2, , phần tử Ak Theo quy tắc nhân ta có: |A1 x A2 x x Ak| = |A1|.|A2| |Ak| 1.2 Ngun lý bù trừ: Khi hai cơng việc làm đồng thời, ta dùng quy tắc cộng để tính số cách thực nhiệm vụ gồm hai việc.Để tính số cách thực nhiệm vụ ta cộng số cách làm hai việc trừ số cách làm đồng thời hai việc Ta phát biểu nguyên lý đếm ngôn ngữ tập hợp Cho A1, A2 hai tập hữu hạn, |A1 A2| = |A1| + |A2| |A1 A2| Từ với ba tập hợp hữu hạn A1, A2, A3, ta có: |A1 A2 A3| = |A1| + |A2| + |A3| |A1 A2| |A2 A3| |A3 A1| + |A1 A2 A3|, quy nạp, với k tập hữu hạn A1, A2, , Ak ta có: | A1 A2 Ak| = N1 N2 + N3 + (1)k-1Nk, trongđó Nm (1 m k) tổng phần tử tất giao m tập lấy từ k tập cho, nghĩa Nm = | Ai Ai2 Aim | 1i1i2 im k Bây ta đồng tập Am (1 m k) với tính chất Am cho tập vũ trụ hữu hạn U đếm xem có phần tử U cho không thỏa mãn tính chất Am Gọi N số cần đếm, N số phần tử U Ta có: N = N | A1 A2 Ak| = N N1 + N2 + (1) Nk, k trongđó Nm tổng phần tử U thỏa mãn m tính chất lấy từ k tính chất cho Công thức gọi nguyên lý bù trừ.Nó cho phép tính N qua Nm trường hợp số dễ tính tốn Thí dụ 3: Có n thư n phong bì ghi sẵn địa Bỏ ngẫu nhiên thư vào phong bì Hỏi xác suất để xảy không thư địa Mỗi phong bì có n cách bỏ thư vào, nên có tất n! cách bỏ thư Vấn đề lại đếm số cách bỏ thư cho không thư địa Gọi U tập hợp cách bỏ thư Am tính chất thư thứ m bỏ địa Khi đótheo cơng thức nguyên lý bù trừ ta có: N = n! N1 + N2 + (1) Nn, n trongđó Nm (1 m n) số tất cách bỏ thư cho có m thưđúng địa Nhận xét rằng, Nm tổng theo cách lấy m thư từ n lá, với cách lấy m thư, có (n-m)! cách bỏ để m thư địa chỉ, ta nhận được: Nm = C nm (n - m)! = trongđó C nm = n! k! N = n!(1 1 + + (1)n ), 2! n! 1! n! tổ hợp chập m tập n phần tử (số cách chọn m m!(n m)! 1 + 2! 1! 1 + (1)n Một điều lý thú xác suất dần đến e-1 (nghĩa > ) n! đối tượng n đối tượng cho) Từ xác suất cần tìm là: n lớn Số N toán gọi số thứ tự ký hiệu Dn Dưới vài giá trị Dn, cho ta thấy Dn tăng nhanh so với n: n 10 11 D 4 26 185 1483 13349 133496 146845 70 n 2.1 NGUYÊN LÝ DIRICHLET 2.1.1 Mở đầu: Giả sử có đàn chim bồ câu bay vào chuồng Nếu số chim nhiều số ngăn chuồng ngăn có nhiều chim.Nguyên lý dĩ nhiên áp dụng cho đối tượng chim bồ câu chuồng chim Mệnh đề (Nguyên lý): Nếu có k+1 (hoặc nhiều hơn) đồ vật đặt vào k hộp tồn hộp có hai đồ vật Chứng minh: Giả sử khơng có hộp k hộp chứa nhiều đồ vật Khi tổng số vật chứa hộp nhiều k Điều trái giả thiết có k + vật Nguyên lý thường gọi nguyên lý Dirichlet, mang tên nhà toán học người Đức kỷ 19.Ông thường xuyên sử dụng ngun lý cơng việc Thí dụ 4:1) Trong nhóm 367 người có hai người có ngày sinh nhật giống có tất 366 ngày sinh nhật khác 2) Trong kỳ thi học sinh giỏi, điểm thi đánh giá số nguyên khoảng từ đến 100 Hỏi có học sinh dự thi chắn tìm hai học sinh có kết thi nhau? Theo nguyên lý Dirichlet, số học sinh cần tìm 102, ta có 101 kết điểm thi khác 3) Trong số người có mặt trái đất, phải tìm hai người có hàm giống Nếu xem hàm gồm 32 xâu nhị phân có chiều dài 32, ứng với bit ứng với bit 0, có tất 232 = 4.294.967.296 hàm khác Trong số người hành tinh vượt tỉ, nên theo nguyên lý Dirichlet ta có điều cần tìm 2.1.2 Nguyên lý Dirichlet tổng quát: Mệnh đề: Nếu có N đồ vật đặt vào k hộp tồn hộp chứa ]N/k[ đồ vật (Ở đây, ]x[ giá trị hàm trần số thực x, số nguyên nhỏ có giá trị lớn x Khái niệm đối ngẫu với [x] – giá trị hàm sàn hay hàm phần nguyên x – số nguyên lớn có giá trị nhỏ x.) Chứng minh:Giả sử hộp chứa ]N/k[ vật Khi tổng số đồ vật k (] N N [ 1) < k = N k k Điều mâu thuẩn với giả thiết có N đồ vật cần xếp Thí dụ 5:1)Trong 100 người, có người sinh tháng Xếp người sinh tháng vào nhóm.Có 12 tháng tất Vậy theo nguyên lý Dirichlet, tồn nhóm có ]100/12[= người 2) Có năm loại học bổng khác Hỏi phải có sinh viên để chắn có người nhận học bổng Gọi N số sinh viên, ]N/5[ = < N/5 hay 25 < N 30 Vậy số N cần tìm 26 3) Số mã vùng cần thiết nhỏ phải để đảm bảo 25 triệu máy điện thoại nước có số điện thoại khác nhau, số có chữ số (giả sử số điện thoại có dạng 0XX - 8XXXXX với X nhận giá trị từ đến 9) Có 107 = 10.000.000 số điện thoại khác có dạng 0XX - 8XXXXX Vì theo ngun lý Dirichlet tổng quát, số 25 triệu máy điện thoại có ]25.000.000/10.000.000[ = có số Để đảm bảo máy có số cần có mã vùng 2.1.3 Một số ứng dụng nguyên lý Dirichlet Trong nhiều ứng dụng thú vị nguyên lý Dirichlet, khái niệm đồ vật hộp cần phải lựa chọn cách khôn khéo.Trong phần có vài thí dụ Thí dụ6: 1)Trong phòng họp có n người, tìm người có số người quen số người dự họp Số người quen người phòng họp nhận giá trị từ đến n Rõ ràng phòng khơng thể đồng thời có người có số người quen (tức khơng quen ai) có người có số người quen n (tức quen tất cả) Vì theo số lượng người quen, ta phân n người thành n 1 nhóm Vậy theo nguyên lý Dirichlet tồn tai nhóm có người, tức ln tìm người có số người quen 2) Trong tháng gồm 30 ngày, đội bóng chuyền thi đấu ngày trận chơi không 45 trận Chứng minh tìm giai đoạn gồm số ngày liên tục tháng cho giai đoạn đội chơi 14 trận Gọi aj số trận mà đội chơi từ ngày đầu tháng đến hết ngày j Khi a1 < a2< < a30< 45 15 a1+14< a2+14 < < a30+14 < 59 Sáu mươi số nguyên a1, a2, , a30, a1+ 14, a2 + 14, , a30+14 nằm 59 Do theo nguyên lý Dirichlet có 60 số Vì tồn i j cho ai= aj+ 14 (j < i) Điều có nghĩa từ ngày j + đến hết ngày i đội chơi 14 trận 3) Chứng tỏ n + số nguyên dương không vượt 2n, tồn số chia hết cho số khác k Ta viết số nguyên a1, a2, , an+1 dạng aj = j qj kj số ngun khơng âm qj số dương lẻ nhỏ 2n Vì có n số nguyên dương lẻ nhỏ 2n nên theo nguyên lý Dirichlet tồn i j cho qi = qj k = q Khi ai= ki q aj = j q Vì vậy, ki kj aj chia hết cho trường hợp ngược lại ta có chia hết cho aj Thí dụ cuối trình bày cách áp dụng nguyên lý Dirichlet vào lý thuyết tổ hợp mà quen gọi lý thuyết Ramsey, tên nhà toán học người Anh Nói chung, lý thuyết Ramsey giải toán phân chia tập tập phần tử Thí dụ 7.Giả sử nhóm người cặp hai bạn thù.Chứng tỏ nhóm có ba người bạn lẫn có ba người kẻ thù lẫn Gọi A người Trong số người nhóm có ba người bạn A có ba người kẻ thù A, điều suy từ nguyên lý Dirichlet tổng quát, ]5/2[ = Trong trường hợp đầu ta gọi B, C, D bạn A ba người có hai người bạn họ với A lập thành ba người bạn lẫn nhau, ngược lại, tức ba người B, C, D bạn chứng tỏ họ ba người thù lẫn Tương tự chứng minh trường hợp có ba người kẻ thù A 2.3 CHỈNH HỢP VÀ TỔ HỢP SUY RỘNG 2.3.1 Chỉnh hợp có lặp Một cách xếp có thứ tự k phần tử lặp lại tập n phần tử gọi chỉnh hợp lặp chập k từ tập n phần tử Nếu A tập gồm n phần tử chỉnh hợp phần tử tập Ak Ngoài ra, chỉnh hợp lặp chập k từ tập n phần tử hàm từ tập k phần tử vào tập n phần tử.Vì số chỉnh hợp lặp chập k từ tập n phần tử nk 2.3.2 Tổ hợp lặp Một tổ hợp lặp chập k tập hợp cách chọn khơng có thứ tự k phần tử lặp lại tập cho.Như tổ hợp lặp kiểu dãy không kể thứ tự gồm k thành phần lấy từ tập n phần tử Do k > n Mệnh đề 1: Số tổ hợp lặp chập k từ tập n phần tử C nkk 1 Chứng minh.Mỗi tổ hợp lặp chập k từ tập n phần tử biểu diễn dãy n1 đứng k Ta dùng n đứng để phân cách ngăn Ngăn thứ i chứa thêm lần phần tử thứ i tập xuất tổ hợp Chẳng hạn, tổ hợp lặp chập phần tử biểu thị bởi: **| * | |*** mô tả tổ hợp chứa phần tử thứ nhất, phần tử thứ hai, khơng có phần tử thứ phần tử thứ tư tập hợp Mỗi dãy n k ứng với xâu nhị phân độ dài n + k với k số Do số dãy n đứng k số tổ hợp chập k từ tập n + k phần tử Đó điều cần chứng minh Thi dụ 8:1) Có cách chọn tờ giấy bạc từ két đựng tiền gồm tờ 1000đ, 2000đ, 5000đ, 10.000đ, 20.000đ, 50.000đ, 100.000đ Giả sử thứ tự mà tờ tiền chọn không quan trọng, tờ tiền loại khơng phân biệt loại có tờ Vì ta khơng kể tới thứ tự chọn tờ tiền ta chọn lần, lần lấy từ loại tiền nên cách chọn tờ giấy bạc tổ hợp lặp chập từ phần tử Do số cần tìm C7551 = 462 2) Phương trình x1 + x2 + x3 = 15 có nghiệm nguyên không âm? Chúng ta nhận thấy nghiệm phương trình ứng với cách chọn 15 phần tử từ tập có loại, cho có x1 phần tử loại 1, x2 phần tử loại x3 phần tử loại chọn Vì số nghiệm số tổ hợp lặp chập 15 từ tập có phần tử C315151 = 136 2.3.3 Hốn vị tập hợp có phần tử giống Trong toán đếm, số phần tử giống nhau.Khi cần phải cẩn thận, tránh đếm chúng lần Ta xét thí dụ sau Thí dụ 9: Có thể nhận xâu khác cách xếp lại chữ từ SUCCESS? Vì số chữ từ SUCCESS nên câu trả lời khơng phải số hốn vị chữ Từ chứa chữ S, chữ C, chữ U chữ E Để xác định số xâu khác tạo ta nhận thấy có C(7,3) cách chọn chỗ cho chữ S, lại chỗ trống Có C(4,2) cách chọn chỗ cho chữ C, lại chỗ trống Có thể đặt chữ U C(2,1) cách C(1,1) cách đặt chữ E vào xâu Theo nguyên lý nhân, số xâu khác tạo là: C 73 C 42 C 21 C11 = 7!4!2!1! 7! = = 420 3!.2!.1!.1! 3!.4!.2!.2!.1!.1!.1!.0! Mệnh đề 2: Số hoán vị n phần tử có n1 phần tử thuộc loại 1, n2 phần tử thuộc loại 2, , nk phần tử thuộc loại k, n! n1!.n2 ! nk ! Chứng minh.Để xác định số hốn vị trước tiên nhận thấy có C nn1 cách giữ n1 chỗ cho n1 phần tử loại 1, lại n - n1 chỗ trống.Sau có C nn2 n cách đặt n2 phần tử loại vào hốn vị, lại n - n1 - n2 chỗ trống Tiếp tục đặt phần tử loại 3, loại 4, , loại k - 1vào chỗ trống hốn vị Cuối có n C nk n n k 1 cách đặt nk phần tử loại k vào hoán vị Theo quy tắc nhân tất hốn vị là: n n C nn1 C n2 n C nk n n 1 k 1 = n! n1!.n2 ! nk ! 2.3.4 Sự phân bố đồ vật vào hộp Thí dụ 10: Có cách chia xấp quân cho người chơi từ cỗ chuẩn 52 quân? Người nhận quân C52 cách.Người thứ hai chia qn C 47 cách, 47 quân bài.Người thứ ba nhận quân C 42 cách.Cuối cùng, người thứ tư nhận quân C37 cách Vì vậy, theo ngun lý nhân tổng cộng có 5 5 C 47 C 42 C37 = C 52 52! 5!.5!.5!.5!.32! cách chia cho người người xấp quân Thí dụ tốn điển hình việc phân bố đồ vật khác vào hộp khác Các đồ vật 52 quân bài, hộp người chơi số lại để bàn Số cách xếp đồ vật vào hộp cho mệnh đề sau Mệnh đề 3: Số cách phân chia n đồ vật khác vào k hộp khác cho có ni vật đặt vào hộp thứ i, với i = 1, 2, , k n! n1!.n2 ! nk !.(n n1 nk )! 2.4 SINH CÁC HOÁN VỊ VÀ TỔ HỢP 2.4.1 Sinh hốn vị: Có nhiều thuật tốn phát triển để sinh n! hoán vị tập {1,2, ,n} Ta mô tả phương pháp đó, phương pháp liệt kê hốn vị tập {1,2, ,n} theo thứ tự từ điển Khi đó, hốn vị a1a2 an gọi trước hoán vị b1b2 bn tồn k (1 k n), a1 = b1, a2 = b2, , ak-1 = bk-1 ak< bk Thuật toán sinh hoán vị tập {1,2, ,n} dựa thủ tục xây dựng hoán vị kế tiếp, theo thứ tự từ điển, từ hoán vị cho trước a1 a2 an Đầu tiên an-1< an rõ ràng đổi chỗ an-1 an cho nhận hốn vị liền sau hoán vị cho Nếu tồn số nguyên aj aj+1 cho aj< aj+1 aj+1> aj+2 > > an, tức tìm cặp số nguyên liền kề tính từ bên phải sang bên trái hoán vị mà số đầu nhỏ số sau Sau đó, để nhận hốn vị liền sau ta đặt vào vị trí thứ j số nguyên nhỏ số lớn aj tập aj+1, aj+2, , an, liệt kê theo thứ tự tăng dần số lại aj, aj+1, aj+2, , an vào vị trí j+1, , n Dễ thấy khơng có hốn vị sau hoán vị xuất phát trước hoán vị vừa tạo Thí dụ 11: Tìm hốn vị liền sau theo thứ tự từ điển hoán vị 4736521 Cặp số ngun tính từphải qua trái có số trước nhỏ số sau a3 = a4 = Số nhỏ nhấttrong số bên phải số mà lại lớn số 5.Đặt số vào vị trí thứ Sau đặt số 3, 6, 1, theo thứ tự tăng dần vào bốn vị trí lại Hốn vị liền sau hoán vị cho 4751236 2.4.2 Sinh tổ hợp: Làm để tạo tất tổ hợp phần tử tập hữu hạn? Vì tổ hợp tập con, nên ta dùng phép tương ứng 1-1 tập {a1,a2, ,an} xâu nhị phân độ dài n Ta thấy xâu nhị phân độ dài n khai triển nhị phân số nguyên nằm 2n Khi 2n xâu nhị phân liệt kê theo thứ tự tăng dần số nguyên biểu diễn nhị phân chúng Chúng ta xâu nhị phân nhỏ 00 00 (n số 0) Mỗi bước để tìm xâu liền sau ta tìm vị trí tính từ phải qua trái mà số 0, sau thay tất số bên phải số đặt số vào vị trí Tiếp theo trình bày thuật tốn tạo tổ hợp chập k từ n phần tử {1,2, ,n} Mỗi tổ hợp chập k biểu diễn xâu tăng Khi liệt kê 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 ak cách sau Trước hết, tìm phần tử dãy cho kể từ phải qua trái cho ai n k + i Sau thay + aj + j i + với j = i + 1, i + 2, , k Thí dụ 12: Tìm tổ hợp chập từ tập {1, 2, 3, 4, 5, 6} liền sau tổ hợp {1, 2, 5, 6} Ta thấy từ phải qua trái a2 = số hạng tổ hợp cho thỏa mãn điều kiện ai + i Để nhận tổ hợp tiếp sau ta tăng lên đơn vị, tức a2 = 3, sau đặt a3 = + = a4 = + = Vậy tổ hợp liền sau tổ hợp cho {1,3,4,5} Thủ tục cho dạng thuật toán sau 2.5 HỆ THỨC TRUY HỒI 2.5.1 Khái niệm mở đầu mơ hình hóa hệ thức truy hồi: Đơi ta khó định nghĩa đối tượng cách tường minh.Nhưng dễ dàng định nghĩa đối tượng qua nó.Kỹ thuật gọi đệ quy Định nghĩa đệ quy dãy số định rõ giá trị hay nhiều số hạng quy tắc xác định số hạng từ số hạng trước Định nghĩa đệ quy dùng để giải tốn đếm.Khi quy tắc tìm số hạng từ số hạng trước gọi hệ thức truy hồi 10 Định nghĩa 1: Hệ thức truy hồi(hay công thức truy hồi) dãy số {an} công thức biểu diễn an qua hay nhiều số hạng trước dãy Dãy số gọi lời giải hay nghiệm hệ thức truy hồi số hạng thỏa mãn hệ thức truy hồi Thí dụ 13 (Lãi kép):1) Giả sử người gửi 10.000 la vào tài khoản ngân hàng với lãi suất kép 11% năm Sau 30 năm có tiền tài khoản mình? Gọi Pn tổng số tiền có tài khoản sau n năm Vì số tiền có tài khoản sau n năm số có sau n năm cộng lãi suất năm thứ n, nên ta thấy dãy {Pn} thoả mãn hệ thức truy hồi sau: Pn = Pn-1 + 0,11Pn-1 = (1,11)Pn-1 với điều kiện đầu P0 = 10.000 đô la Từ suy Pn = (1,11)n.10.000 Thay n = 30 cho ta P30 = 228922,97 la 2) Tìm hệ thức truy hồi cho điều kiện đầu để tính số xâu nhị phân độ dài n hai số liên tiếp Có xâu nhị phân có độ dài 5? Gọi an số xâu nhị phân độ dài n khơng có hai số liên tiếp Để nhận hệ thức truy hồi cho {an}, ta thấy theo quy tắc cộng, số xâu nhị phân độ dài n khơng có hai số liên tiếp số xâu nhị phân kết thúc số cộng với số xâu kết thúc số Giả sử n Các xâu nhị phân độ dài n, khơng có hai số liên tiếp kết thúc số xâu nhị phân thế, độ dài n thêm số vào cuối chúng Vậy chúng có tất an-1 Các xâu nhị phân độ dài n, khơng có hai số liên tiếp kết thúc số 0, cần phải có bit thứ n 1, khơng chúng có hai số hai bit cuối Trong trường hợp chúng có tất an-2 Cuối ta có được: an = an-1 + an-2 với n Điều kiện đầu a1 = a2 = Khi a5 = a4 + a3 = a3 + a2 + a3 = 2(a2 + a1) + a2 = 13 2.5.2 Giải hệ thức truy hồi Định nghĩa 2: Một hệ thức truy hồi tuyến tính bậc k với hệ số sốlà hệ thức truy hồi có dạng: an = c1an-1 + c2an-2 + + ckan-k , c1, c2, , ck số thực ck 11 Theo ngun lý quy nạp tốn học dãy số thỏa mãn hệ thức truy hồi nêu định nghĩa xác định hệ thức truy hồi k điều kiện đầu: a0 = C0, a1 = C1, , ak-1 = Ck-1 Phương pháp để giải hệ thức truy hồi tuyến tính tìm nghiệm dạng an = rn, r số Chú ý an = rn nghiệm hệ thức truy hồi an = c1an-1 + c2an-2 + + ckan-k rn = c1rn-1 + c2rn-2 + + ckrn-k hay rk c1rk-1 c2rk-2 ck-1r – ck = Phương trình gọi phương trình đặc trưng hệ thức truy hồi, nghiệm gọi nghiệm đặc trưng hệ thức truy hồi Mệnh đề: Cho c1, c2, , ck số thực Giả sử phương trình đặc trưng rk c1rk-1 c2rk-2 ck-1r – ck = có k nghiệm phân biệt r1, r2, , rk Khi dãy {an} nghiệm hệ thức truy hồi an = c1an-1 + c2an-2 + + ckan-k an = 1r1n + 2r2n + + krkn, với n = 1, 2, 1, 2, , k số Thí dụ 14:1) Tìm công thức hiển số Fibonacci Dãy số Fibonacci thỏa mãn hệ thức fn = fn-1 + fn-2 điều kiện đầu f0 = f1 = Các nghiệm đặc trưng r1 = 1 1 r2 = Do số 2 Fibonacci cho công thức fn = 1( 1 n 1 n ) + 2 ( ) Các điều kiện 2 ban đầu f0 = = 1 + 2 f1 = = 1( 1 1 ) + 2 ( ) Từ hai phương 2 trình cho ta 1= 1 , 2 = - Do số Fibonacci cho cơng 5 thức hiển sau: fn = 1 n 1 n ( ) ( ) 2 5 2) Hãy tìm nghiệm hệ thức truy hồi an = 6an-1 - 11an-2 + 6an-3 với điều kiện ban đầu a0 = 2, a1 = a2 = 15 Đa thức đặc trưng hệ thức truy hồi r3 - 6r2 + 11r - Các nghiệm đặc trưng r = 1, r = 2, r = Do nghiệm hệ thức truy hồi có dạng an = 11n + 22n + 33n Các điều kiện ban đầu a0 = = 1 + 2 + 3 a1 = = 1 + 22 + 33 a2 = 15 = 1 + 24 + 39 12 Giải hệ phương trình ta nhận 1= 1, 2 = 1, 3 = Vì thế, nghiệm hệ thức truy hồi điều kiện ban đầu cho dãy {an} với an = 2n + 2.3n 2.6 QUAN HỆ CHIA ĐỂ TRỊ 2.6.1 Mở đầu: Nhiều thuật toán đệ quy chia toán với thông tin vào cho thành hay nhiều toán nhỏ Sự phân chia áp dụng liên tiếp tìm lời giải toán nhỏ cách dễ dàng.Chẳng hạn, ta tiến hành việc tìm kiếm nhị phân cách rút gọn việc tìm kiếm phần tử danh sách tới việc tìm phần tử danh sách có độ dài giảm nửa Ta rút gọn liên tiếp lại phần tử Một ví dụ khác thủ tục nhân số nguyên Thủ tục rút gọn toán nhân hai số nguyên tới ba phép nhân hai số nguyên với số bit giảm nửa Phép rút gọn dùng liên tiếp nhận số nguyên có bit Các thủ tục gọi thuật toán chia để trị 2.6.2 Hệ thức chia để trị: Giả sử thuật toán phân chia toán cỡ n thành a toán nhỏ, n (để đơn giản giả sử n chia hết cho b; b n n thực tế tốn nhỏ thường có cỡ [ ] ] [) Giả sử tổng b b tốn nhỏ có cỡ phép toán thêm vào thực phân chia tốn cỡ n thành tốn có cỡ nhỏ g(n) Khi đó, f(n) số phép toán cần thiết để giải toán cho f thỏa mãn hệ thức truy hồi sau: n b f(n) = af( ) + g(n) Hệ thức có tên hệ thức truy hồi chia để trị Thí dụ 15: 1) Thuật tốn tìm kiếm nhị phân đưa tốn tìm kiếm cỡ n tốn tìm kiếm phần tử dãy tìm kiếm cỡ n/2, n chẵn Khi thực việc rút gọn cần hai phép so sánh Vì thế, f(n) số phép so sánh cần phải làm tìm kiếm phần tử danh sách tìm kiếm cỡ n ta có f(n) = f(n/2) + 2, n số chẵn 2) Có thuật tốn hiệu thuật tốn thơng thường để nhân hai số ngun Ở ta có thuật tốn vậy.Đó thuật tốn phân nhanh, có dùng kỹ thuật chia để trị Trước tiên ta phân chia hai số nguyên 2n bit thành hai khối khối n bit Sau phép nhân hai số 13 nguyên 2n bit ban đầu thu ba phép nhân số nguyên n bit cộng với phép dịch chuyển phép cộng Giả sử a b số nguyên có biểu diễn nhị phân độ dài 2n a = (a2n-1 a2n-2 a1 a0)2 b = (b2n-1 b2n-2 b1 b0)2 Giả sử a = 2nA1 + A0 , b = 2nB1 + B0 , A1 = (a2n-1 a2n-2 an+1 an)2 , A0 = (an-1 a1 a0)2 B1 = (b2n-1 b2n-2 bn+1 bn)2 , B0 = (bn-1 b1 b0)2 Thuật toán nhân nhanh số nguyên dựa đẳng thức: ab = (22n + 2n)A1B1 + 2n(A1 - A0)(B0 - B1) + (2n + 1)A0B0 Đẳng thức phép nhân hai số nguyên 2n bit thực cách dùng ba phép nhân số nguyên n bit phép cộng, trừ phép dịch chuyển Điều có nghĩa f(n) tổng phép tốn nhị phân cần thiết để nhân hai số nguyên n bit f(2n) = 3f(n) + Cn Ba phép nhân số nguyên n bit cần 3f(n) phép toán nhị phân Mỗi phép cộng, trừ hay dịch chuyển dùng số nhân với n lần phép toán nhị phân Cn tổng phép toán nhị phân dùng làm phép toán n b Mệnh đề 1: Giả sử f hàm tăng thoả mãn hệ thức truy hồi f(n) = af( ) + c với n chia hết cho b, a 1, b số nguyên lớn 1, c số thực dương Khi O(n logb a ), a f(n) = O(log n), a n b Mệnh đề 2: Giả sử f hàm tăng thoả mãn hệ thức truy hồi f(n) = af( ) + cnd với n = bk, k số nguyên dương, a 1, b số nguyên lớn 1, c d số thực dương Khi O(n logb a ), a b d f(n) = O(n d log n), a b d d d O(n ) , a b Thí dụ 16: Hãy ước lượng số phép toán nhị phân cần dùng nhân hai số ngun n bit thuật tốn nhân nhanh 14 Thí dụ 15.2 f(n) = 3f(n/2) + Cn, n chẵn Vì thế, từ Mệnh đề ta suy f(n) = O( n log2 ) Chú ý log23 1,6 Vì thuật tốn nhân thơng thường dùng O(n2) phép tốn nhị phân, thuật tốn nhân nhanh thực tốt thuật toán nhân thông thường số nguyên đủ lớn II Lí thuyết đồ thị: Đồ thị xem tập đỉnh (hay điểm/nút) tập cạnh (cung), cạnh nối liền cặp đỉnh khác Đồ thị thể giấy cách biểu diễn đỉnh dấu chấm cạnh đường cong / thẳng đỉnh mà nối liền Ví dụ Trong biểu đồ trên, việc bố trí vị trí đỉnh, việc vẽ cạnh thẳng hay cong cắt hay không cắt khơng quan trọng Có thể có biểu đồ trơng khác chúng lại biểu thị cho đồ thị, chẳng hạn biểu đồ cuối ví dụ Một đồ thị G gọi liên thông với cặp đỉnh u, v có đường dẫn dọc theo cạnh G từ u tới v (nghĩa có mộ chuỗi đỉnh v1, v2, … , vm với v1=u vm =v cho cặp vi, vi+1 (với i=1, 2, …, m – 1) nối liền cạnh) Thành phần liên thông C đồ thị G đồ thị tối đại G, nghĩa là, đỉnh C có đường dẫn nêu đình v khơng thuộc C thì khơng có cạnh nối với đỉnh C Mỗi đỉnh đồ thị nằm thành phần liên thong ta thường xét đến đồ thị liên thơng mà thơi Ví dụ: Trong đồ thi ví dụ có đồ thị thứ hai khơng liên thơng, có thành phần liên thông: hai chúng đỉnh rời thành phần thứ ba gồm đỉnh lại với tất cạnh nối 15 Đồ thị cung cấp phương pháp tiện lợi để biểu diễn điều cốt lỏi tình Chẳng hạn, ta muốn vạch lộ trình chạy xe dọc theo tất đường vùng (như lộ trình người phát thư chẳng hạn) Khi ta biểu thị chỗ giao lộ đỉnh đường cạnh Nều có hai đuờng khác giao lộ, ta vẽ cạnh khác nối đỉnh tương ứng Sau ta lập lộ trình dọc theo tất đường đồ thị cho dùng cạnh lần (để tránh phải tốn công lại nhiều lần đường) Một lộ trình thế, tồn gọi đường Euler đồ thị Bài toán đường Euler đơn giản quen thuộc toán vẽ liền nét khơng nhắt bút lên hình bao thư Vài đồ thị thông dụng Đồ thị vòng Cn (cycle graph) n đỉnh: với đình v1, v2, , cạnh nối đỉnh liền kề vi, vi+1 ( i=1, n – 1) cạnh nối đỉnh cuối đỉnh đầu v1 Đồ thị C3 gọi tam giác Đồ thị đầy đủ Kn (complete graph) n đỉnh với đình v1, v2, , với cặp đỉnh vi, vj khác cạnh nối chúng với 16 Đồ thi đầy đủ thành phần Kmn (complete bipartite graph) m n đỉnh: với đình v1, v2, , w1, w2, , wm mỗt cạnh nối cặp đỉnh vi, wj khác Trong đồ thi, bậc đỉnh số cạnh khác mà đầu mút Ví dụ: Trong đồ thị nào, số cạnh phân nửa tổng số bậc đỉnh Bậc đỉnh số cạnh xuất phát từ đình Do tổng bậc đỉnh tổng số cạnh xuất phát từ đỉnh Mỗi cạnh tính lần, lần cho đỉnh mà nối với, Vì tổng số bậc đỉnh gấp hai lần số cạnh Ví dụ: Có thể tìm mơt nhóm người người quen với người khác hay khơng? Biểu diễn tốn nàyn dạng đồ thi: Mỗi người đỉnh hai người quen đưọc biểu diễn cạnh nối đỉnh tương ứng Như ta cần đồ thỉ có đỉnh đỉnh có bậc Với đồ thị theo ví d trờn s cnh phi l ẵ(3 ì 7) = 10 ½ Nhưng số cạnh phải số nguyên nên khơng thể có đồ thị Do đó, khơng thể tìm nhóm người có tính chất nêu Các toán đếm thường diễn tả dạng tô màu cạnh (hay đỉnh) đồ thị; ta có đồ thị nghĩ đến việc tô màu cạnh màu đỏ, xanh, vàng, tím….Nếu việc tơ màu bị khống chế đó, ta muốn chứng tỏ có đồ thị đơn sắc (các cạnh màu) Ví dụ: Ví dụ mục thuộc dạng Sáu người biểu thị đỉnh, nối hai đỉnh với cạnh màu đỏ hai người tương ứng quen nhau, cạnh màu xanh họ không quen Bài toán chuyển thành: cạnh đồ thị hồn chỉnh K6 tơ với màu 17 đỏ xanh, chứng tỏ đồ thị khơng chứa tam giác đỏ phải chứa tam giác xanh 18 ... trình bày thuật tốn tạo tổ hợp chập k từ n phần tử {1,2, ,n} Mỗi tổ hợp chập k biểu diễn xâu tăng Khi liệt kê 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 ak cách sau Trước... k Thí dụ 12: Tìm tổ hợp chập từ tập {1, 2, 3, 4, 5, 6} liền sau tổ hợp {1, 2, 5, 6} Ta thấy từ phải qua trái a2 = số hạng tổ hợp cho thỏa mãn điều kiện ai + i Để nhận tổ hợp tiếp sau ta tăng... tử chỉnh hợp phần tử tập Ak Ngoài ra, chỉnh hợp lặp chập k từ tập n phần tử hàm từ tập k phần tử vào tập n phần tử.Vì số chỉnh hợp lặp chập k từ tập n phần tử nk 2.3.2 Tổ hợp lặp Một tổ hợp lặp