Kiến thức chuyên ngành luôn yêu cầu bạn phải cập nhật và trau dồi từng ngày.Để có nền tảng kiến thức vững chắc trước các kì thi…bạn không thể thiếu các tài liệu tham khảo hay được chia sẻ trên mạng Internet.Share to be share more
lazycatnct@gmail.com www.free4vn.org 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 T 1, T2, , Tk Các việc làm tương ứng n1, n2, , nk cách giả sử 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 T i việc thi hành vòng lặp thứ i Có thể làm T i ni cách vòng lặp thứ i có n i bước lặp Do vòng lặp 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ừ upsoft.blogspot.com Trang 22 lazycatnct@gmail.com www.free4vn.org tập Ai với i=1,2, , k Có |Ai| cách làm Ti 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 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 đị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 đơ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ử a 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 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 upsoft.blogspot.com Trang 23 lazycatnct@gmail.com www.free4vn.org 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 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 n Mệnh đề 1: Số tổ hợp lặp chập k từ tập n phần tử C nk+ k −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 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, 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 C 75+5−1 = 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ử C 315+15−1 = 136 2.3.3 Hoá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 upsoft.blogspot.com Trang 28 lazycatnct@gmail.com www.free4vn.org 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 số hoá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 12 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ó 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 ! nk ! 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 - n chỗ trống Sau có C n−2 n1 cách đặt n2 phần tử loại vào hoán vị, 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 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 hoán vị là: n! n n C nn1 C n−2 n1 C n −k n1 − −nk −1 = 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 quân C 47 cách, 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 cách Vì vậy, theo nguyên lý nhân tổng cộng có C37 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ụ toá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 upsoft.blogspot.com Trang 29 lazycatnct@gmail.com www.free4vn.org 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 hoán vị: Có nhiều thuật toá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ê hoán vị tập {1,2, ,n} theo thứ tự từ điển Khi đó, hoán vị a 1a2 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 a a2 an Đầu tiên an-1 < an rõ ràng đổi chỗ an-1 an cho nhận hoá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 hoá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 hoán vị sau hoán vị xuất phát trước hoán vị vừa tạo Thí dụ 11: Tìm hoá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í lại Hoán vị liền sau hoá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 đuôi hoán vị sau vị trí thứ j theo thứ tự tăng dần.} upsoft.blogspot.com Trang 30 lazycatnct@gmail.com www.free4vn.org 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í 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 toá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 a = 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 = + = 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 procedure Tổ hợp liền sau ({a1, 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 upsoft.blogspot.com Trang 31 lazycatnct@gmail.com www.free4vn.org 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 toá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 Đị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 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 hai số liên tiếp Để nhận hệ thức truy hồi cho {a n}, ta thấy theo quy tắc cộng, số xâu nhị phân độ dài n 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, 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, 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: upsoft.blogspot.com Trang 32 lazycatnct@gmail.com www.free4vn.org 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ú ý a n = 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 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 cho công thức fn = α1( ) + α2( ) Các điều kiện ban đầu f = = 2 1+ 1− α1 + α2 f1 = = α1( ) + α2( ) Từ hai phương trình cho ta α1 = , α2 2 = Do số Fibonacci cho công thức hiển sau: 1+ n 1− n fn = ( ) ( ) 5 2 f1 = Các nghiệm đặc trưng r = 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 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 upsoft.blogspot.com Trang 33 lazycatnct@gmail.com www.free4vn.org 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; thực b n n tế toán nhỏ thường có cỡ [ ] ] [) Giả sử tổng phép toán thêm b b toán nhỏ có cỡ vào thực phân chia toán cỡ n thành toá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 toán tìm kiếm nhị phân đưa toán tìm kiếm cỡ n toá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 toán hiệu thuật toán thông thường để nhân hai số nguyên Ở ta có thuật toán Đó thuật toá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 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: upsoft.blogspot.com Trang 34 lazycatnct@gmail.com www.free4vn.org 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 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 d d f(n) = O (n log n), a = b 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ố nguyên n bit thuật toá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 log ) Chú ý log23 ≈ 1,6 Vì thuật toán nhân thông thường dùng O(n2) phép toán nhị phân, thuật toán nhân nhanh thực tốt thuật toán nhân thông thường số nguyên đủ 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 Ngoài 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ể upsoft.blogspot.com Trang 35 lazycatnct@gmail.com www.free4vn.org 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 Ngoà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, toàn có không 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 Chứng minh với 1153 người hỏi 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 nguyên 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 hai đường song song đườ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 = upsoft.blogspot.com Trang 36 ... 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... 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... 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|,