Giáo trình: Toán rời rạc - Đại học Thái Nguyên - chương IV

22 1K 7
Giáo trình: Toán rời rạc - Đại học Thái Nguyên - chương IV

Đ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

Giáo trình: Toán rời rạc - Đại học Thái Nguyên - chương IV

Bài toán đ m Nguy n Th Vinh-ĐHKH CHƯƠNG III BÀI TỐ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, vấn đề 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 Đếm đối tượng để giải nhiều toán khác 3.1 CƠ SỞ CỦA PHÉP ĐẾM 3.1.1 Những nguyên lí đếm 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 Ví dụ: Giá trị biến m sau đoạn chương trình sau thực hiện? m := 0; 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 thực đồng thời nên theo 42 Bài toán đ m Nguy n Th Vinh-ĐHKH 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 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 Ví dụ: 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ó 26x100=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 2n 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 43 Bài toán đ m Nguy n Th Vinh-ĐHKH 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 5) Giá trị biến k sau chương trình sau thực hiện? m := 0; for i1 := to n1 for i2 := to n2 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 Ti 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 T1, 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 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 44 Bài toán đ m Nguy n Th Vinh-ĐHKH 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| 3.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 ngun 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, 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 k Định lí 2: Số tổ hợp lặp chập k từ tập n phần tử C n+ 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, 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 Ví dụ: 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 7+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 15 chập 15 từ tập có phần tử C3+15−1 = 136 51 Bài toán đ m Nguy n Th Vinh-ĐHKH 3.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 Ví dụ: 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, cịn 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 C C C1 = 7!4!2!1! 7! = = 420 3!.2 !.1!.1! 3!.4!.2!.2!.1!.1!.1!.0! Định lí 3: Số hoán vị khác n phần tử có n1 phần tử thuộc loại một, n2 phần tử thuộc loại hai, , 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ó n C n1 cách giữ n1 chỗ cho n1 phần tử loại 1, lại n - n1 chỗ trống Sau có n C n −n cách đặt n2 phần tử loại vào hoá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 hoán vị Cuối nk có C n−n − −n cách đặt nk phần tử loại k vào hoán vị Theo quy tắc nhân k −1 tất hoán vị là: n n n k C n1 C n −n C n − n − − n 1 k −1 = n! n1!.n ! n k ! 3.3.4 Sự phân bố đồ vật vào hộp Ví dụ: Có cách chia xấp quân cho người chơi từ cỗ chuẩn 52 quân? 52 Bài toán đ m Nguy n Th Vinh-ĐHKH Người nhận quân C52 cách Người thứ hai chia quân C 47 cách, cịn 47 qn 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 C52 C 47 C 42 C37 = 52! 5!.5!.5!.5!.32! cách chia cho người người xấp quân Ví 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 Định lí 4: Số cách phân phối 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 ! Chứng minh: Chúng ta nhận thấy với hộp thứ có n1 vật n2 n nhận C n1 cách ; hộp thứ hai có n2 vật nhận C n−n Tiếp tục nk đặt vào hộp thứ k có C n−n − −n cách Theo quy tắc nhân số cách phân phối n k −1 vật khác vào k hộp khác cho có ni vật đặt vào hộp thứ i là: n n n k C n1 C n −n C n − n − − n 1 k −1 = n! n1!.n ! n k ! 3.4 SINH CÁC HOÁN VỊ VÀ TỔ HỢP 3.4.1 Sinh hố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 đó, hốn vị a1a2 an 53 Bài tốn đ m Nguy n Th Vinh-ĐHKH 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 thuật toán xây dựng hoán vị liền sau Hoán vị nhỏ {1,2, n} hoán vị lớn {n, n-1, 2,1} theo thứ tự từ điển Thuật toán sinh hoán vị liền sau : Bước 1: hoán vị ban đầu {a1 a2 an}; Bước 2: từ phải sang trái tìm thỏa mãn điều kiện ai ; Bước 4: đổi chỗ aj cho ; Bước 5: đảo ngược đoạn từ i+1 đến n Ví dụ: Tìm hốn vị liền sau theo thứ tự từ điển hố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ỏ 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 hoán vị cho 4751236 Procedure Hoán vị liền sau (a1, a2, , an) ; Begin i := n − 1; while (ai > ai+1) and (i>0) i := i − 1; if (i=0) then exit; j := n; while (ai > aj) j := j -1; tg:=ai ; ai:=aj; aj:=tg; d := n; c := i + 1; while (d=k) 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) Tại bước để tìm xâu liền sau nó, kết thúc xâu nhị phân lớn 11…11 (n số 1) Thuật tốn tìm xâu nhị phân liền sau: Bước 1: từ phải sang trái tìm phần tử (giả sử vị trí i) Nếu khơng tìm thuật toán kết thúc; Bước 2: thay giá trị vị trí i 1; đoạn từ i+1 đến n thay giá trị Ví dụ: 01001111 xâu liền sau 01010000 Ta thấy với độ dài n có 2n xâu nhị phân số tập tập có n phần tử Vận dụng thuật tốn đưa tất tập tập n phần tử, coi vị trí thứ i phần tử xuất tập ngược lại vị trí thứ i Thuật tốn tìm tổ hợp chập k từ n phần tử: Mỗi tổ hợp chập k n phần tử biểu diễn xâu tăng Khi liệt kê tổ hợp theo thứ tự từ điển, tổ hợp nhỏ {1,2,…,k} Ví dụ với n=4; k=3 ta có tổ hợp chập theo thứ tự từ điển là: {1,2,3}; {1,2,4}; {1,3,4};{2,3,4} Ta dễ dàng nhận thấy giá trị cực đại phần tử (n − k + i) Từ thuật tốn xây dựng tổ hợp liền sau tổ hợp a1a2 ak sau: Bước 1: hoán vị ban đầu {a1 a2 ak}; 55 Bài toán đ m Nguy n Th Vinh-ĐHKH Bước 2: từ phải sang trái tìm thỏa mãn điều kiện chưa đạt giá trị cực đại Nếu khơng tìm thuật tốn kết thúc; Bước 3: tăng lên đơn vị; đoạn j từ i+1 đến k tính lại giá trị aj thay aj = + j−i+1 (các giá trị tương ứng liền kề ) Ví dụ: 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 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} 3.5 HỆ THỨC TRUY HỒI 3.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 Đị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 Ví dụ: 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 56 Bài toán đ m Nguy n Th Vinh-ĐHKH 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 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 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 3.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 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 57 Bài toán đ m Nguy n Th Vinh-ĐHKH 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ố Ví dụ: 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 2 số Fibonacci cho công thức fn = α1( điều kiện ban đầu f0 = = α1 + α2 f1 = = α1( phương trình cho ta α1 = 1+ n 1− n ) + α2 ( ) Các 2 1+ 1− ) + α2 ( ) Từ hai 2 1 , α2 = - Do số Fibonacci cho 5 công 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 58 Bài toán đ m Nguy n Th Vinh-ĐHKH 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 3.6 QUAN HỆ CHIA ĐỂ TRỊ 3.6.1 Mở đầu Nhiều thuật toá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 tố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ị 3.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ỏ, tốn nhỏ có cỡ n (để đơn giản giả sử n chia hết b n b n b cho b; thực tế tốn nhỏ thường có cỡ [ ]  ) Giả sử tổng phép toán thêm vào thực phân chia toá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 tố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ị Ví dụ: 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 59 Bài toán đ m Nguy n Th Vinh-ĐHKH 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ố nguyên Ở 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 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 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 Mệnh đề 1: Giả sử f hàm tăng thoả mãn hệ thức truy hồi f(n) = n b 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 =  60 Bài toán đ m Nguy n Th Vinh-ĐHKH 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  Ví dụ: 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 Ví dụ nêu 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 61 Bài toán đ m Nguy n Th Vinh-ĐHKH BÀI TẬP CHƯƠNG III Bài tập tính tốn 3.1.1 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 đề 3.1.2 Có 17 nhà bác học viết thư cho trao đổi vấn đề Chứng minh ln tìm người trao đổi vấn đề 3.1.3 Trong kỳ thi kết thúc học phần tố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 3.1.4 Phương trình x1 + x2 + x3 + x4 + x5 = 21 có nghiệm ngun khơng âm? 3.1.5 Có xâu khác lập từ chữ từ MISSISSIPI, yêu cầu phải dùng tất chữ? 3.1.6 Lớp Tốn- Tin có 40 sinh viên cần bầu lớp trưởng, lớp phó ban kiểm phiếu người khơng có trưởng ban Hỏi có cách chọn người 3.1.7 Trong kì thi sinh viên phải trả lời ngẫu nhiên 20 câu hỏi đề gồm 100 câu hỏi dạng sai Hỏi có đáp án 3.1.8 Có 12 kẹo cần chia số gói, gói có chẵn số kẹo hỏi có cách chia 3.1.9 Một hình trịn có bán kính 5cm Bên có 10 điểm Chứng minh ln tồn điểm có khoảng cách nhỏ 4cm 3.1.10 Tính tổng tất số hoán vị số 12345 Bài tập máy tính 3.2.1 Liệt kê hốn vị tập hợp A có n phần tử 3.2.2 Liệt kê tập có k phần tử tập hợp A có n phần tử 3.2.3 Phân tích số tự nhiên M thành tổng tất số tự nhiên nhỏ Ví dụ: M=5 ta có {4+1}; {3+2}; {3+1+1}; {2+2+1}; {2+1+1+1}; {1+1+1+1+1+1} 3.2.4 Cho xâu kí tự gồm kí tự chữ Hãy đưa tất hốn vị xâu kí tự 3.2.5 lập chương trình đưa tất nghiệm nguyên dương Phương trình x1 + x2 + x3 + x4 + x5 = M với M số tự nhiên (M

Ngày đăng: 12/09/2012, 22:09

Từ khóa liên quan

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

Tài liệu liên quan