Nghiên cứu trình bày bài toán này liên quan đến một số ứng dụng của thuật toán Euclid và lý thuyết về phân số chuỗi trong số học. Bài viết này sẽ lần lượt tìm hiểu các lý thuyết liên quan, lời giải của bài toán trên, và thử làm các bài tập tương tự. Mời các bạn tham khảo!
Tạp chí online cộng đồng người u Tốn THUẬT TOÁN PHỤC HỒI SỐ HỮU TỈ Nguyễn Hùng Sơn (University of Warsaw) Mở đầu Cách không lâu tơi có đố bạn trẻ tốn đố nhỏ, mang tính thực tế, sau: Một vị giáo sư tốn-tin cẩn thận đãng trí Cách vài hôm ngân hàng gửi ông thư thơng báo mật thẻ tín dụng Mật số có chữ số: abcdef Ơng khơng muốn giữ lại thư sợ lọt vào tay kẻ gian Vì ơng dùng máy tính xách tay đơn giản (gồm phộp tớnh +., ì, ữ v 10 ch s) tính tỉ số abc ÷ def Ơng nhận kết gần 0, 195323246 ghi nhớ lại lên tờ giấy Làm để vị giáo sư tìm lại mật thời gian ngắn ơng có tay máy tính xách tay đơn giản mật gì? Thực tốn liên quan đến số ứng dụng thuật toán Euclid lý thuyết phân số chuỗi số học Sau tìm hiểu lý thuyết liên quan, lời giải toán trên, thử làm tập tương tự Thuật toán Euclid Đây phương pháp tìm ước số chung lớn ƯSCLN(a, b) hai số tự nhiên Khoảng 300 năm trước Cơng Ngun, Euclid – nhà tốn học cổ người Hy lạp – mô tả thuật tốn ”cơ sở” (Elements) 21 Tạp chí online cộng đồng người yêu Toán Ý tưởng thuật tốn là: Nếu k, r hai số nguyên cho a = kb + r thì: ƯSCLN(a, b) = ƯSCLN(r, b) Trong thuật tốn Euclid, ta chọn k phần nguyên phép chia a cho b (k = a/b ), r phần dư chia a cho b (r = a − a/b · b) Thuật tốn mơ tả dạng biểu đồ Hình 3.1 Ví dụ muốn tìm ƯSCLN số 324 918 bước thuật toán sau: STT a b 324 918 918 324 324 270 270 54 54 a/b r = a mod b 576 270 54 d 54 ◆❤➟♣ ✷ sè tü ♥❤✐➯♥ a, b ❑✐➸♠ tr❛ b = 0? b=0 b=0 r := a mod b a := b b := r d := a ❳✉➜t d ❙❚❖P❀ Hình 3.1: Thuật tốn Euclid để tìm ước số chung lớn hai số tự nhiên a, b 22 Tạp chí online cộng đồng người yêu Toán Liên phân số Liên phân số hữu hạn biểu thức có dạng: a0 + a1 + a2 + ··· + an a0 ∈ Z, a1 , , an số nguyên dương an > Liên phân số ký hiệu [a0 : a1 , a2 , , an ], n độ dài liên phân số Như ta biết số hữu tỉ viết dạng ab , a ∈ Z số ngun cịn b ∈ N − {0} số nguyên dương Một phân số chuyển thành liên phân số theo phương pháp lặp lặp lại bước (1) (2) sau đây: (1) tách phần nguyên, (2) nghich đảo phần phân số Ví dụ phân số 1517 chuyển thành liên phân số sau: 1073 1517 444 =1+ =1+ 1073 1073 1 =1+ 185 2+ 2+ 74 444 + 185 =1+ 2+ Như vây ta chuyển 2+ 1517 1073 =1+ 37 2+ 74 2+ + 2+1 thành liên phân số [1 : 2, 2, 2, 2, 2] 23 Tạp chí online cộng đồng người u Tốn Bạn đọc tinh ý thấy nhiều điểm tương tự phương pháp tìm liên phân số thuật toán Euclid Thực vậy, ta áp dụng thuật tốn Euclid cho hai số 1517 1073 q trình tính tốn sau: STT a b 1517 1073 1073 444 444 185 185 74 74 37 37 a/b 2 2 r = a mod b 444 185 74 37 d 37 Dễ dàng nhân trùng hợp liên phân số [1 : 2, 2, 2, 2, 2] cột a/b thuật toán Euclid Như áp dụng thuật toán Euclid cho a b, bước ta viết giá trị a/b ta khai triển phân số ab thành dạng liên phân số ◆❤➟♣ ✷ sè tü ♥❤✐➯♥ a, b ◆❤➟♣ a0 := x ; r := x − a0 ; n := 0; n := 0; b = 0? x∈R b=0 ❳✉➜t an ❀ n := n + 1; b=0 k := a/b r := a − kb a := b b := r r = 0? r=0 r=0 ❳✉➜t an = k ❀ n := n + 1; ❙❚❖P an := 1/r ; r := 1/r − an ; ❙❚❖P Hình 3.2: Thuật tốn Euclid tìm liên phân số cho phân số (trái) cho số thực x ∈ R (phải) 24 a b Tạp chí online cộng đồng người u Tốn Thuật tốn mơ tả Hình 3.2.a (trái) Dựa vào thuật tốn ta chứng minh định lý sau: Mọi số hữu tỉ khai triển dạng liên phân số hữu hạn [a0 : a1 , a2 , , an ], a0 phần nguyên số hữu tỉ cho Liên phân số nhà toán học Rafael Bombelli (1572), Pietro Catldi (1613), Daniel Schwenter (1625), Wallis (1695) nhà thiên văn học Christian Huygens (1698) biết đến từ kỷ XVI XVII Tuy nhiên phải đến kỷ XVIII nhà toán học Leonhard Euler (1707-1783) bắt đầu nghiên cứu cách hệ thống liên phân số Euler không đưa thuật tốn mà cịn tìm nhiều liên phân số Thực thuật toán Euler trường hợp tổng quát thuật toán chuyển số hữu tỉ thành liên phân số Nó áp dụng cho số thực x√bất kỳ (xem Hình 3.2.b (phải)) Áp dụng thuật toán cho x = ta có: √ √ 1 √ =1+ =1+ 2=1+ 2−1=1+ √ + √2+1 2+1 2+ 2−1 =1+ 2+ √1 2+ 2−1 = ··· = + 2+ 1 2+ 2+··· √ Như số biểu diễn dạng liên phân số vơ hạn tuần hồn = [1 : 2, 2, 2, ] = [1 : 2] Euler phát số biểu diễn dạng liên phân số vô √ hạn tuần hồn (từ vị trí đó) số phải có dạng a + b c, a, b, c ∈ Q (hay gọi số đại số bậc √ 5−1 hai) Ví dụ tỉ lệ vàng φ = biểu diễn dạng liên phân số gồm toàn số (xem tập 2) Hoặc x = [2 : 2, 2, 2, ] = [2 : 2], ta có x = + x1 từ √ suy x = + Nhưng phải 20 năm sau địch lý đảo chứng minh Lagrange (1768): Mọi số đại số bậc khai triển thành liên phân số tuần hoàn (bắt đầu từ vị trí đó) 25 Tạp chí online cộng đồng người yêu Toán Chúng ta vừa nhận khai triển liên phân số số hữu tỉ số vơ tỉ trơng tiện lợi khai triển thập phân Một câu hỏi có tính triết lý lịch sử đặt là: trường phổ thông sử dụng số thập phân lại không dùng liên phân số? Câu trả lời có lẽ phép cộng nhân liên phân số không dễ dàng Mà thiếu phương pháp (thiếu thuật toán hữu hiệu) nhà tốn học (tin học) chưa tìm kĩ Ta kết luận hình ảnh tốn học ngày khơng phải nhất, hồn tồn chuyển sang hướng khác Phục hồi số hữu tỉ 4.1 Ví dụ minh họa Chúng ta quay lại toán ban đầu Vị giáo sư kiểm tra tất phân số dạng abc÷def tìm phân số có giá trị yêu cầu Tuy nhiên phương pháp không hiệu nhiều thời gian Trước qp sr hai phân số có tử số mẫu số số có ba chữ số hai phân số giống đến chữ số thứ sau dấu phẩy p − sr < 10−6 Từ suy q |ps − qr| qs · 10−6 < 103 · 103 · 10−6 = Vì p, s, q, r số nguyên |ps − qr| < 1, từ suy ps − qr = Điều tương đương với qp = sr Phương pháp hiệu khai triển số x = 0, 195323246 thành dạng liên phân số x = [a0 : a1 , a2 , ] Nếu đặt xn = [a0 : a1 , , xn ] liên phân số dùng n số hạng liên phân số x = [a0 : a1 , a2 , ], ta thấy xn xấp xỉ x n lớn xn có giá trị gần x Vì ta sử dụng thuật toán liên phân số gần giống với phân số cần tìm 26 Tạp chí online cộng đồng người u Tốn Sử dụng thuật tốn Hình 3.2.b (phải) ta có: a0 = r = 0, 195323246 x0 = a1 = r = 0, 119718315 x1 = 1 = 41 5+ 17 a3 = r = 0, 833338458 x3 = = 87 + 8+ 25 a4 = r = 0, 199992620 x4 = = 128 + 8+ a2 = r = 0, 352940538 x2 = 2+ 1 a5 = r = 0, 000184506 x5 = Kiểm tra lại ta thấy sư cần tìm 142727 142 727 5+ = 8+ 2+ 1 1+ 142 727 = 0.195323246 Vậy mã số vị giáo 4.2 Trường hợp tổng qt Để tổng qt hóa tốn xét vấn đề sau đây: VẤN ĐỀ PHỤC HỒI SỐ HỮU TỈ: Cho hai số nguyên dương K, M tìm hai số nguyên dương u, v cho: DK1 : DK2 : u, v < N u K − v M M (N số nguyên dương cho trước) u K (2 phân số , gần nhau) v M (1) (2) Paul Wang nghiên cứu vấn đề phục hồi số hữu tỉ trường hợp N = M Với lựa chọn ta chứng minh tồn lời giải cho vấn đề phục hồi số hữu tỉ lời giải Thực vậy, giả sử tồn lời giải (u1 , v1 ) (u2 , v2 ) thỏa mãn điều kiện (1) (2) Ta có: u1 u2 − v1 v2 u1 K u1 K − + − v1 M v1 M 27 , M Tạp chí online cộng đồng người u Tốn từ suy 2v1 v2 2N2 < M M |u1 v2 − u2 v1 | Trong trường hợp N = M , ta có |u1 v2 − u2 v1 | < Ngồi ra, |u1 v2 − u2 v1 | số nguyên nên ta suy u1 v2 − u2 v1 = hay u1 = uv22 Hơn nữa, từ điều kiện (2) suy v1 |Mu − Kv| v < N ⇔ −N < r = Mu − Kv < N K Từ suy hai phân số uv , M gần tồn số nguyên r cho |r| < N r ≡ Kv mod M Lúc K gọi đồng dư với phân số vr modulo M ký hiệu r ≡ K mod M Như vấn đề phục hồi số hữu tỉ phát v biểu cách tương đương sau: VẤN ĐỀ PHỤC HỒI SỐ HỮU TỈ (biến thể): Cho trước hai số nguyên dương K, M, tìm cặp số nguyên (r, v) thỏa mãn đồng thời hai điều kiện sau đây: DK3 : |r| < M/2 < v < DK4 : r ≡ Kv (mod M) ◆❤➟♣ ✷ sè tü ♥❤✐➯♥ K, M r1 := M ; r2 := K; ✣❷❖✭r1, r2✮❀ ✣❷❖✭v1, v2✮❀ v2 ≥ (3) (4) M/2 v1 := 0; v2 := 1; M/2? ể t (0, 0); tự ổ tỗ t ✮ ❙❚❖P❀ ❙❆■ Q := r1 /r2 ; r1 := r1 − Qr2 ; v1 := v1 − Qv2 ; ❙❆■ r2 < M/2? ✣Ó◆● ❳✉➜t v2 · r2 , |v2 | |v2 | ❙❚❖P❀ ❀ Hình 3.3: Thuật tốn phục hồi số hữu tỉ RATCONVERT 28 Tạp chí online cộng đồng người yêu Toán Dễ thấy tồn cặp số (r, v) thỏa mãn hai điều kiện thỏa mãn (3) (4) cặp số (u, v), u = Kv−r M hai điều kiện (1) (2) P Wang (1981) cịn đề xuất thuật tốn giải vấn đề phục hồi số hữu tỉ trường hợp lời giải tồn Thuật toán dựa vào ý tưởng thuật toán Euclid mang tên RATCONVERT (xem Hình 3.3) Bảng 1.1 trình bày trang sau minh họa thuật tốn RATCONVERT qua ví dụ chương Một số tập tham khảo Bài toán Chứng minh số hữu tỉ biểu diễn hai cách khác dạng liên phân số hữu hạn Bài toán Chứng minh [1 : 1] = √ 5−1 Bài tốn Với√a số ngun dương tìm khai triển liên phân số số a2 + Bài toán Hãy kiểm chứng phương pháp phục hồi số hữu tỉ (cả hai phương pháp trình bày chương 4.1 4.2) hiệu ta dùng chữ số sau dấu phẩy (tức 0, 195323) dùng năm chữ số (0, 19532) khơng thể phục hồi mã số ban đầu Bài toán Áp dụng thuật toán phục hồi số hữu tỉ để tìm xấp √ √ xỉ hữu tỉ qp số 1, 414213562373 cho qp − < 0, 001 29 30 Lượt Q r1 r2 v1 v2 r = −158 v = 727 u = Kv − r = 142 M 195323246 23383770 8253086 6877598 1375488 Xuất 23383770 8253086 6877598 1375488 158 (−158, 727); −5 41 −87 128 −5 41 −87 128 −727 STOP; M/2 = 22360, Bảng 1.1: Ví dụ minh họa cho thuật toán RATCONVERT 1000000000 195323246 Bắt đầu M = 1000000000 K = 195323246 Tạp chí online cộng đồng người yêu Toán ... 0, 195323) dùng năm chữ số (0, 19532) khơng thể phục hồi mã số ban đầu Bài toán Áp dụng thuật toán phục hồi số hữu tỉ để tìm xấp √ √ xỉ hữu tỉ qp số 1, 414213562373 cho qp − < 0, 001 29 30 Lượt... phân số vr modulo M ký hiệu r ≡ K mod M Như vấn đề phục hồi số hữu tỉ phát v biểu cách tương đương sau: VẤN ĐỀ PHỤC HỒI SỐ HỮU TỈ (biến thể): Cho trước hai số nguyên dương K, M, tìm cặp số nguyên... số tập tham khảo Bài toán Chứng minh số hữu tỉ biểu diễn hai cách khác dạng liên phân số hữu hạn Bài toán Chứng minh [1 : 1] = √ 5−1 Bài toán Với√a số nguyên dương tìm khai triển liên phân số