GIÁO TRÌNH TOÁN RỜI RẠC - CHƯƠNG II BÀI TOÁN ĐẾM

15 1.6K 11
GIÁO TRÌNH TOÁN RỜI RẠC - CHƯƠNG II BÀI TOÁN ĐẾM

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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. Chủ đề này đã được nghiên cứu từ thế kỹ 17, khi những câu hỏi về tổ hợp được nêu ra trong những công trình nghiên cứu các trò chơi may rủi. 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ố.

CHƯƠNG II BÀI TOÁN ĐẾM 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 Chủ đề nghiên cứu từ kỹ 17, câu hỏi tổ hợp nêu cơng trình nghiên cứu trị chơi may rủi 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 Hơn kỹ thuật đếm dùng nhiều tính xác suất biến cố 2.1 CƠ SỞ CỦA PHÉP ĐẾM 2.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: 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 2) Giá trị biến m sau đoạn chương trình sau thực hiện? m := for i1 := to n1 m := m+1 for i2 :=1 to n2 m := m+1 for ik := to nk m := m+1 Giá trị khởi tạo m Khối lệnh gồm k vòng lặp khác Sau bước lặp vòng lặp giá trị k tăng lên đơn vị Gọi Ti việc thi hành vịng lặp thứ i Có thể làm Ti ni cách vịng lặp thứ i có ni bước lặp Do vịng lặp khơng thể thực đồng thời nên theo quy tắc cộng, giá trị cuối m số cách thực số nhiệm vụ Ti, tức m = n1+n2+ + nk Quy tắc cộng phát biểu dạng ngôn ngữ tập hợp sau: Nếu A 1, 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ử T i việc chọn phần tử từ 22 tập Ai với i=1,2, , k Có |A i| 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 T 1, T2, , Tk Nếu việc Ti làm ni cách sau việc T 1, 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 định 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 a nên có n - cách chọn ảnh cho phần tử a 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 5) Giá trị biến k sau chương trình sau thực hiện? m := for i1 := to n1 for i2 := to n2 23 for ik := to nk k := k+1 Giá trị khởi tạo k Ta có k vịng lặp lồng Gọi T i việc thi hành vịng lặp thứ i Khi số lần qua vòng lặp số cách làm việc T 1, T2, , Tk Số cách thực việc Tj nj (j=1, 2, , k), vịng lặp thứ j duyệt với giá trị nguyên ij nằm nj Theo quy tắc nhân vòng lặp lồng duyệt qua n1.n2 nk lần Vì giá trị cuối k n1.n2 nk Nguyên lý nhân thường phát biểu ngôn ngữ tập hợp sau Nếu A 1, 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| 2.1.2 Nguyên lý bù trừ: Khi hai cơng việc làm đồng thời, ta khơng thể 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 A 1, 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, 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 = | Ai1  1i1 i2  im k  Ai2   Aim | 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)kNk, 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 24 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 ngun lý bù trừ ta có: N = n!  N1 + N2  + (1)nNn, Nm (1  m  n) số tất cách bỏ thư cho có m thư đị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: n! k! Nm = C nm (n - m)! = C nm = n! m!( n  m)! N = n!(1  1 +  + (1)n ), 1! 2! n! tổ hợp chập m tập n phần tử (số cách chọn m đối tượng n đối tượng cho) Từ xác suất cần tìm là:  1 +  + (1)n 1! 2! 1 Một điều lý thú xác suất dần đến e-1 (nghĩa > ) n lớn 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 Dn 44 265 1854 14833 133496 1334961 14684570 2.2 NGUYÊN LÝ DIRICHLET 2.2.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? 25 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, cịn ứng với bit ứng với bit 0, có tất 32 = 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.2.2 Ngun 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 nguyên 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.2.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 26 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 ngun lý Dirichlet có 60 số Vì tồn i j cho = 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ố ngun dương khơng vượt q 2n, tồn số chia hết cho số khác Ta viết số nguyên a1, a2, , an+1 dạng aj = k j qj kj số nguyên khơng âm cịn qj số dương lẻ nhỏ 2n Vì có n số ngun dương lẻ nhỏ 2n nên theo nguyên lý Dirichlet tồn i j cho q i = qj = q Khi ai= ki q aj = k j q Vì vậy, ki  kj aj chia hết cho trường hợp ngược lại ta có a i 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ụ 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ử 27 chỉnh hợp phần tử tập A k 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 nkk  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 n1 đứ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 ngơi 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 C 755 = 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ó x 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ử C 31515 = 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 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 28 chữ S, cịn 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 C1 = 7! 4! 2!1! 7! = = 420 3!.2 !.1!.1! 3!.4!.2!.2 !.1!.1!.1!.0! Mệnh đề 2: Số hốn vị n phần tử có n phần tử thuộc loại 1, n phần tử thuộc loại 2, , nk phần tử thuộc loại k, n! n1!.n ! n k ! Chứng minh Để xác định số hoán vị trước tiên nhận thấy có C nn1 cách giữ n1 n chỗ cho n1 phần tử loại 1, lại n - n1 chỗ trống Sau có C n2 n1 cách đặt n2 phần tử loại vào hốn vị, cịn lại n - n - n2 chỗ trống Tiếp tục đặt phần tử loại 3, loại 4, , n loại k - 1vào chỗ trống hoán vị Cuối có C nk n1   nk  cách đặt nk phần tử loại k vào hoán vị Theo quy tắc nhân tất hoán vị là: n n C nn1 C n2 n1 C n k n1   nk  = n! n1!.n ! n k ! 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 C 52 cách Người thứ hai chia qn C 47 cách, cịn 47 quân 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 52 C 47 C 42 C37 = 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!.n ! n k !.(n  n1   n k )! 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 29 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 a a2 an Đầu tiên a n-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 a j 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ố nguyên tính từ phải qua trái có số trước nhỏ số sau a = a4 = Số nhỏ số bên phải số mà lại lớn số Đặ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í cịn lại Hốn vị liền sau hốn vị cho 4751236 procedure Hoán vị liền sau (a1, a2, , an) (hoán vị {1,2, ,n} khác (n, n1, , 2, 1)) j := n  while aj > aj+1 j := j  {j số lớn mà aj < aj+1} k := n while aj > ak k := k - {ak số nguyên nhỏ số lớn aj bên phải aj} đổi chỗ (aj, ak) r := n s := j + while r > s đổi chỗ (ar, as) r := r - ; s := s + {Điều xếp phần hốn vị sau vị trí thứ j theo thứ tự tăng dần.} 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 30 trái mà số 0, sau thay tất số bên phải số đặt số vào vị trí procedure Xâu nhị phân liền sau (bn-1bn-2 b1b0): xâu nhị phân khác (11 11) i := while bi = begin bi := i := i + end bi := 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 a 1a2 ak cách sau Trước hết, tìm phần tử a i dãy cho kể từ phải qua trái cho a i  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   + i Để nhận tổ hợp tiếp sau ta tăng a i lên đơn vị, tức a2 = 3, sau đặt a3 = + = a = + = 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 procedure Tổ hợp liền sau ({a 1, a2, , ak}: tập thực tập {1, 2, , n} không {n  k + 1, , n} với a1 < a2 < < ak) i := k while = n  k + i i := i  := + for j := i + to k aj := + j  i 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 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 31 Định nghĩa 1: Hệ thức truy hồi (hay công thức truy hồi) dãy số {a n} 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 {P n} 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 P n = (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 khơng có 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ố hệ thức truy hồi có dạng: an = c1an-1 + c2an-2 + + ckan-k , c1, c2, , ck số thực ck  Theo nguyên lý quy nạp toá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 32 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 r 1, r2, , rk Khi dãy {an} nghiệm hệ thức truy hồi a n = 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 f n = fn-1 + fn-2 điều kiện đầu f0 = 1 1 r2 = Do số Fibonacci 2 1 n 1 n thức fn = 1( ) + 2( ) Các điều kiện ban đầu f0 = = 2 1 1 1 ( ) + 2 ( ) Từ hai phương trình cho ta 1 = , 2 f1 = Các nghiệm đặc trưng r = cho công 1 + 2 f1 = = 2 = - Do số Fibonacci cho công thức hiển sau: 1 n 1 n fn = ( ) ( ) 5 2 2) Hãy tìm nghiệm hệ thức truy hồi a n = 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 r - 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 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 {a n} với an =  2n + 2.3n 2.6 QUAN HỆ CHIA ĐỂ TRỊ 2.6.1 Mở đầu: Nhiều thuật tốn đệ quy chia tố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 33 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; thực b n n tế tốn nhỏ thường có cỡ [ ] ] [) Giả sử tổng phép tốn thêm b b tốn nhỏ có cỡ 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: f(n) = af( n ) + g(n) b 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 Đó 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ố 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 n Giả sử a = A1 + 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 toá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 34 Mệnh đề 1: Giả sử f hàm tăng thoả mãn hệ thức truy hồi f(n) = af( n ) + c với b n chia hết cho b, a  1, b số nguyên lớn 1, c số thực dương Khi O ( n ), a   f(n) =   O (log n ), a 1 log b a n Mệnh đề 2: Giả sử f hàm tăng thoả mãn hệ thức truy hồi f(n) = af( b ) + 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 f(n) = O ( n   O ( n  O ( n  log b d d a ), log ) a n ), , a   a b b d b d d Thí dụ 16: Hãy ước lượng số phép toán nhị phân cần dùng nhân hai số nguyên n bit thuật tốn nhân nhanh 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 toán nhân nhanh thực tốt thuật tốn nhân thơng thường số ngun đủ lớn BÀI TẬP CHƯƠNG II: Trong tổng số 2504 sinh viên khoa công nghệ thông tin, có 1876 theo học mơn ngơn ngữ lập trình Pascal, 999 học môn ngôn ngữ Fortran 345 học ngơn ngữ C Ngồi cịn biết 876 sinh viên học Pascal Fortran, 232 học Fortran C, 290 học Pascal C Nếu 189 sinh viên học mơn Pascal, Fortran C trường hợp có sinh viên khơng học mơn mơn ngơn ngữ lập trình kể Một họp gồm 12 người tham dự để bàn vấn đề Có người phát biểu vấn đề I, người phát biểu vấn đề II người phát biểu vấn đề III Ngồi ra, có người khơng phát biểu vấn đề Hỏi nhiều có người phát biểu vấn đề Chỉ có người số 25 triệu người có tên họ viết tắt chữ sinh ngày năm (không thiết năm) Một tay đô vật tham gia thi đấu giành chức vô địch 75 Mỗi có trận đấu, tồn có khơng q 125 trận Chứng tỏ có liên tiếp đấu 24 trận Cho n số nguyên dương Chứng minh lấy từ n số cho số số hạng thích hợp cho tổng chúng chia hết cho n Trong lấy ý kiến vấn đề, người hỏi ghi vào phiếu trả lời sẵn cách để nguyên phủ định câu trả lời tương ứng với vấn đề nêu 35 Chứng minh với 1153 người hỏi ln tìm 10 người trả lời giống hệt Có 17 nhà bác học viết thư cho trao đổi vấn đề Chứng minh tìm người trao đổi vấn đề Trong kỳ thi kết thúc học phần toán học rời rạc có 10 câu hỏi Có cách gán điểm cho câu hỏi tổng số điểm 100 câu điểm Phương trình x1 + x2 + x3 + x4 + x5 = 21 có nghiệm ngun khơng âm? 10 Có xâu khác lập từ chữ từ MISSISSIPI, yêu cầu phải dùng tất chữ? 11 Một giáo sư cất sưu tập gồm 40 số báo toán học vào ngăn tủ, ngăn đựng 10 số Có cách cất tờ báo vào ngăn nếu: 1) Mỗi ngăn đánh số cho phân biệt được; 2) Các ngăn giống hệt nhau? 12 Tìm hệ thức truy hồi cho số thứ tự Dn 13 Tìm hệ thức truy hồi cho số xâu nhị phân chứa xâu 01 14 Tìm hệ thức truy hồi cho số cách lên n bậc thang người bước một, hai ba bậc lần 15 1) Tìm hệ thức truy hồi mà Rn thoả mãn, Rn số miền mặt phẳng bị phân chia n đường thẳng khơng có hai đường song song khơng có đường qua điểm b) Tính Rn phương pháp lặp 16 Tìm nghiệm hệ thức truy hồi an = 2an-1 + 5an-2 - 6an-3 với a0 = 7, a1 = -4, a2 = 36 ... 2n a = (a2n-1 a2n-2 a1 a0)2 b = (b2n-1 b2n-2 b1 b0)2 n Giả sử a = A1 + 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... 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 r 1, r2, , rk Khi dãy {an} nghiệm hệ thức truy hồi a n = c1an-1 + c2an-2 + + ckan-k an = 1r1n +... 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 32 rn = c1rn-1 + c2rn-2 +

Ngày đăng: 26/08/2013, 20:25

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan