Tài liệu Kỹ thuật lập trình - Chương 4: Phân tích số nguyên thành nhân tử

13 8 0
Tài liệu Kỹ thuật lập trình - Chương 4: Phân tích số nguyên thành nhân tử

Đ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

Phân tích nhân tử là một thuật ngữ toán học dùng để chỉ một cách viết một số nguyên, hay tổng quát là một vật thể toán học, thành một phép nhân của các số nguyên khác, hay tổng quát là các vật thể toán học khác. Các số nguyên, hay vật thể toán học, nằm trong phép nhân gọi là nhân tử. Cùng tham khảo tài liệu dưới đây để tìm hiểu kiến thức về phân tích số nguyên thành nhân tử.

Chương PHÂN TÍCH SỐ NGUYÊN THÀNH NHÂN TỬ 4.1 Nhân tử hóa với độ phức tạp hàm mũ 4.1.1 Mở đầu Trong mục xem xét thuật tốn phân tích số tự nhiên n thừa số, mà thực O(n c ) lệnh số học, c số, 00 thỏa mãn điều kiện sau Với số nguyên tố q | ( p − 1) ta có điều kiện: q v q ( p −1) ≤B Từ dẫn đến (p-1)|B! Nếu chọn số tự nhiên n cho UCLN(a,n)=1 theo định lý nhỏ Fermat: a B! ≡ 1(mod p ) , Mà (p-1)|B!, nên a ≡ 1(mod p ) , nghĩa p | (a − 1) , mà ta lại có p|n, p=UCLN(a-1, n) Trong thuật tốn có (B-1) lũy thừa theo modulo, lũy thừa cần nhiều 2log2B phép nhân modulo, áp dụng thuật tốn bình phương nhân để thực hiểu phép lũy thừa Việc tính ước chung lớn thực thời gian O((log n) 3) thuật tốn Euclide Vì độ phức tạp thuật toán O(B log B(log n) 2+(log n)3) Nếu B O((log n)i) với i số ngun độ phức tạp thuật toán độ phức tạp thời gian đa thức 4.1.4 Phương pháp ρ Pollaid Phương pháp đề cập nhiều sách báo, nên nói tóm tắt miêu tả thuật toán Sơ đồ thuật toán Đầu vào: số nguyên n, mà cần phân tích thừa số Bước Chọn ánh xạ f : Zn → Zn Thơng thường f (x) đa thức có bậc khơng lớn hay 2, ví dụ f ( x) = x + Bước Chọn ngẫu nhiên x0 ∈ Z n tính phần tử theo đệ quy dãy x0 , x1 , x , theo quy tắc xi ≡ f ( xi −1 )(mod n) Bước Đối với số j, k kiểm tra điều kiện < UCLN ( x j − xk , n) < n Cho đến khơng tìm ước số n thời gian chưa kết thúc Kết thúc thuật toán Chú ý: Sự lựa chọn j, k bước thuật tốn thơng thường thực cách sau Đối với j chọn tất số k, k8 Đầu ra: Là thừa số n Bước Đối với a = 2,3, , [ n1 / ] kiểm tra điều kiện a | n Nếu bước không phân tích n thừa số, chuyển đến bước Bước Nếu bước ước khơng tìm thấy n hợp số, n=pq, p,q số nguyên tố n1 / < p ≤ q < n / [ [ ] Như tất k = 1,2, , [ n1 / ] tất d = 0,1, , n1 / /(4 k ) + , kiểm tra số ] ( 4kn + d ) − 4kn có phải số phương khơng Nếu phương A= [ ] 4kn + d B = A2 − 4kn thỏa mãn đồng dư thức A2 ≡ B (mod n) Trong trường hợp kiểm tra điều kiện < UCLN ( A ± B, n) < n Nếu điều kiện thỏa mãn phân tích n thừa số thuật toán dừng Kết thúc thuật toán Nếu thuật toán khơng phân tích n thừa số n số nguyên tố 4.1.6 Thuật toán Pollaid –Xtrassen Thuật tốn phân tích n thành thừa số cần O(n1 / log n) lệnh số học Thuật toán dựa định lý sau Định lý 4.1 Cho z ∈ N , y = z Khi số tự nhiên t, ước số nhỏ số UCLN (t , y!) tìm thấy cần O( z log z log t ) lệnh số học Thuật toán Pollard-Xtrassen Đặt z = [ n1 / ] + 1, y = z > n1 / , t = n Tiếp theo với giúp đỡ định lý 2.20 tìm ước nguyên tố nhỏ UCLN (n, y!) Bởi y! chia hết cho ước nguyên tố nhỏ p n (bởi p ≤ n1 / < y ), nên thuật tốn đưa số p Độ phức tạp thuật toán Pollard-Xtrassen O( z log z log t ) = O(n1 / log n) 4.1.7 Phương pháp nhân tử hóa dành cho số có dạng đặc trưng Đối với số n có dạng đặc trưng có khả có cách riêng để phân tích thừa số ngun tử, ước số có dạng đặc trưng Định lý 4.2 Cho b, k ∈ N , b > 1, n = b k − Nếu p số nguyên tố, ước n, hai điều khẳng định sau đúng: p | b d − với số giá trị d, d < k , d | k ; p ≡ 1(mod k ) Nếu p>2 k số lẻ, trường hợp thứ hai p ≡ 1(mod 2k ) Chứng minh: Theo định lý nhỏ Fermat b p −1 ≡ 1(mod p) , b k ≡ 1(mod p) Giả sử d = UCLN (k , p − 1) , b d ≡ 1(mod p ) Nếu d < k , có nghĩa điều khẳng định thứ Cịn d=k, k|p-1, có nghĩa p ≡ 1(mod k ) 4.2 Phân tích số nguyên thành nhân tử với độ phức tạp hàm mũ giả 4.2.1 Mở đầu Ký hiệu Ln [γ ; c] hàm có đặc điểm sau: Lx [ γ ; c ] = e( c + o (1))(log x ) γ (log log x )1−γ , o(1) → , x → +∞ , c, γ số Trong chương xem thuật tốn nhân tử hóa số tự nhiên n, cần Ln [ γ ; c] lệnh số học γ = 1 γ = số giá trị dương c, gía trị phụ thuộc vào thuật toán Chúng ta giả sử rằng, n hợp số n không chia hết cho số nguyên tố nhỏ (những số nguyên tố nhỏ tìm cách lựa chọn, với giúp đở thuật tốn mà tìm hiểu chương trước) Thuật tốn miêu tả sau, cách tìm số tự nhiên x,y, cho x ≡ y (mod n) , sau kiểm tra điều kiện < UCLN ( x ± y , n) < n Nếu ước n tìm , thuật tốn dừng, ngược lại ta xây dựng cặp x,y Định lý 4.3 Cho n hợp số lẻ, giá trị khơng giá trị hàm mũ số nguyên tố Khi cặp ngẫu nhiên x, y,1 ≤ x, y ≤ n − , thỏa mãn biểu thức UCLN ( x, n) = UCLN ( y , n) = x ≡ y (mod n) Xác suất để < UCLN ( x ± y , n) < n Sẽ không nhỏ 1/2 α α Chứng minh Giả sử n = p1 pk , k ≥ Cặp số x,y thỏa mãn điều kiện định lý, k tương ứng với số z, ≤ z ≤ n − 1, z ≡ 1(mod n) (rõ ràng z = xy −1 (mod n)) Chúng ta cần chứng minh xác suất để z thỏa mãn bất đẳng thức phụ < UCLN ( z ± 1, n) < n Không nhỏ 1/2 Rõ ràng điều kiện z ≡ 1(mod n) tương đương với hệ phương trình sau z ≡ ±1(mod p1α ), z ≡ ±1(mod pkα k ) Từ đây, số lượng giá trị z k , giá trị z ≡ ±1(mod n) ước chung lớn UCLN ( z ± 1, n) hay n Bởi k ≥ , nên định lý rõ ràng 4.2.2 Phương pháp Dixon Cho n∈ N - số mà cần phân tích thành nhân tử, L = L(n) = exp((log n log log n)1 / ) Giả sử a số đó, < a < , giá trị xác định Chúng ta gọi tập số nguyên tố p, nằm khoảng sở nhân tử ≤ p ≤ La a Giả sử k số lượng số nguyên tố sở nguyên tử, = p1 < p < < pk ≤ L Thuật toán Dixon Đâu vào: số nguyên n cần kiểm tra Bước Chúng ta tìm số m1 , , mk +1 cách lựa chọn ngẫu nhiên, cho thỏa mãn < mi < n α α Q(mi ) = p1 i ,1 pk i ,k mi2 ≡ Q(mi )(mod n) pi Và giá trị dùng chẳn lần, với i = 1, , k + Ký hiệu v = (α i ,1 , , α i , k ∈ Z k Bước Giải hệ phương trình tuyến tính x1 v1 + + xk +1 v k +1 ≡ 0(mod 2) Trong không gian vector Z k , tìm tập x1 , , xk +1 ∈ { 0,1} , tập không bao gồm giá trị (cái tồn số lượng phương trình k nhỏ số ẩn) Bước Để tìm x1 , , xk +1 , rõ ràng ta có biểu thức sau k +1 ∑ x i α i ,1 (m1x1 mkx+k +11 ) ≡ p1i=1 Ký hiệu X = m m x1 x k +1 k +1 k k +1 ( ,Y = ∏ p j ∑ x iα i , j ) / i =1 j =1 k +1 ∑ xi α i ,k pki=1 (mod n)  k +1   i =1  , (số  ∑ xiα i , j  / -là số nguyên xác định theo xi ), nhận biểu thức tương ứng X ≡ Y (mod n) Tiếp theo kiểm tra điều kiện < UCLN ( X ± Y , n) < n Trong trường hợp thành công phân tích n thừa số Trong trường hợp khơng thành cơng quay lại bước tìm giá trị khác mi Kết thúc thuật toán Ví dụ Giả sử n=15770708441 Cơ sở nhân tử tập { 2,3,5,7,11,13} Chọn m1 = 8340934156 , m2 = 12044942944 , m3 = 2773700011 Xét ba đồng dư thức sau 83409341562 ≡ 3.7(mod n) 120449429442 ≡ 2.7.13(mod n) 27737000112 ≡ 2.3.13(mod n) Lấy tích đồng dư thức vế theo vế, ta (8340934156.12044942944.2773700011) ≡ (2.3.7.13) (mod n) , rút gọn biểu thức ngoặc theo modulo n, ta có: 95034357852 ≡ 546 (mod n) Ta tìm UCLN (9503435785 − 546, n) = 115759 Ta thấy 115759 ước n 4.2.3 Thuật toán sàng bậc hai Trong thuật toán Dixon, vấn đề làm để chọn số mi mà giá trị mi2 (mod n) phân tích hồn tồn sở nhân tử Năm 1981 Pomerance đề xuất phương pháp để xác định số mi , có tên sàng bậc hai 1  Độ phức tạp thuật toán sàng bậc hai tốn Ln  ;1 lệnh số học 2  Chúng ta mơ tả sơ đồ thuật tốn ban đầu sàng bậc hai Chúng ta xây dựng biểu thức X ≡ Y (mod n) kiểm tra bất đẳng thức < UCLN ( X ± Y , n) < n Để làm điều xem đa thức Q( x) = ( x + H ( x) = x + [ n ]) − n ≡ H ( x) (mod n) , [ n ] Các giá trị Q(x) điểm nguyên, rõ ràng chúng phương theo modulo n Trong sở nhân tử S xem p0 = −1 tất số n nguyên tố pi , pi ≤ B , cho   = Sau với giúp đở số sàng,  pi  tìm giá trị xi , mà Ai = Q( xi ) = ∏ p p∈S α ip , có nghĩa Q( xi ) phân tích sở nhân tử Như vậy, ký hiệu Bi = H ( xi ) , nhận đồng dư thức Bi ≡ Ai (mod n) , tích lũy số lượng đủ lớn biểu thức thế, thực loại bỏ biến xay dựng biểu thức X ≡ Y (mod n) n Chú ý: Điều kiện   = với p số nguyên tố sở nhân tử lấy từ đồng dư thức p  (x + [ n ])  ≡ n(mod p) , mà đồng dư cần thỏa mãn số giá trị x ∈ Z Sàng Giá trị xi ∈ Z Q( xi ) xác định sau Đối với số nguyên tố p từ sở nhân tử, tìm nghiệm r1( p ) r2( p ) phương trình Q( x) ≡ 0(mod p) Sau thay đổi x khoảng đủ lớn [ − M ; M ], M ∈ N , đưa đến ma trận A, mà đánh số thứ tự giá trị x Trong phần tử ma trận với số thứ tự x ta đặt giá trị log Q( x) Nghĩa A[ x ] = log | Q( x) | Sau giá trị p từ sở nhân tử S thực trình sàng sau: Từ mổi phần tử ma trận A, tức A[ x] , số thứ tự nằm cấp số cộng x ≡ r1( p ) (mod p ) x ≡ r2( p ) (mod p ) , tính tốn giá trị log p Ý việc tính toán nằm chổ, phần tử x cấp số vậy, giá trị Q(x) chia hết cho p, việc chia Q(x) cho p đổi thành log Q( x) − log p Sau kết thúc trình sàng phần tử ma trận với số thứ tự x chứa giá trị log Q( x) − ∑ log p p∈S , p |Q ( x ) Sau kết thúc trình sàng, chọn số thứ tự x, mà giá trị ma trận cố độ lớn khơng q lớn Đối với vị trí x giá trị Q(x) phân tích nhanh sở nhân tử phân tích số Q(x) ước số thử lưu giá trị x, để Ai = Q( xi ) hồn tồn phân tích sở nhân tử Ý nghĩa trình sàng tiết kiệm số lượng lệnh chia số nguyên lớn Cùng với để giá trị x ∈ [ − M ; M ] phân tích Q(x) sở nhân tử cách nhanh chóng, ước lượt tập x, thực tính tốn lệnh đơn giản cộng trừ Việc tiết kiệm hiệu quả, ưu chuộng thuật tốn nhân tử hóa trước 4.2.4 Phân tích nhân tử với hổ trợ đường cong Elliptic Thuật tốn phân tích Lenstra đề xuất, độ phức tạp cần 1/ e (( + o (1)) log p log log p ) log n lệnh số học, p ước nguyên tố nhỏ n Để miêu tả thuật toán Lenstra cần đường cong Elliptic không xây dựng trường mà vành Z n , n số lẻ, không chia hết cho hợp số, n số cần phân tích thành nhân tử Chúng ta xem số ( x, y, z ) ∈ Z n , cho iđêal sinh x,y z trùng với vành Z n Tập hợp {(ux, uy, uz) | u ∈ Z * n } , ( x, y , z ) ∈ Z n , gọi qũy đạo phần tử ( x, y, z ) ∈ Z n , đươc ký hiệu (x:y:z) Tập tất qũy đạo ký hiệu P ( Z n ) Đường cong Elliptic E = Ea ,b vành Z n cho phương trình sau y = x + ax + b , * a, b ∈ Z n ,6(4a + 27b ) ∈ Z n Chúng ta ký hiệu tập điểm đường Elliptic thông qua { } E = Ea ,b ( Z n ) = ( x : y : z ) ∈ P ( Z n ) | y z = x + axz + bz Tập hợp nhóm Abel hữu hạn, ứng với phép cộng Thế sử dụng lệnh nhóm trường hữu hạn nguyên tố Chúng ta ký hiệu O = (0 : : 0) ∈ P ( Z n ), Vn = { ( x : y : 1) | x, y ∈ Z n } ∪ { O} Đối với P ∈ Vn số nguyên tố p, ước n, điểm P từ tập P ( Z p ) ký hiệu Pp Rõ ràng Pp = O p P=O Phép cộng điểm P, Q ∈ Vn tính sau Khi tính P+Q tìm d ước n (và mục đích đạt được) tìm điểm R ∈ Vn mà thỏa mãn điều kiện sau Nếu p | n, a ≡ a (mod p ) , p tìm b ∈ Z p cho, 6(4a + 27b ) ≠ Z p Pp , Q p ∈ Ea ,b ( Z p ) , R p = Pp + Q p Ea ,b ( Z p ) Việc tính tổng thực cách xây dựng trường hữu hạn đường cong Elliptic Chú ý: Nếu có điểm P = ( x : y : 1) , số nguyên tố p a y ≡ x + ax + b(mod n) Từ có b ≡ y − x − ax(mod n) Thế xác định giá trị b ≡ b(mod p ) Nếu p|n, điểm Q p nằm đường cong y ≡ x + ax + b(mod p ) trường Z p , cộng Pp , Q p đường cong trường Z p tính tổng P+Q trường Z n Nếu số giá trị p mà điểm Q p không nằm đường y ≡ x + ax + b(mod p ) , tính tổng P Q khơng thực Tổng điểm P Q từ tập Vn thực sau Nếu P=O, R=Q; Nếu Q=O R=P Giả sử P, Q ≠ O, P = ( x1 : y1: 1), Q = ( x : y2 : 1) Chúng ta tìm d = UCLN ( x1 − x2 , n) thuật toán Euclid Nếu < d < n , tìm ước n, thuật tốn dừng Nếu d=1 x1 ≠ x2 (mod n) x1 ≠ x2 (mod p ) số nguyên tố p, p|n Khi tìm ( x1 − x2 ) −1 (mod n) thuật toán mở rộng Euclid Tiếp theo ta đặt λ = ( y1 − y2 )( x1 − x2 ) −1 (mod n) , v = y1 − λx1 (mod n) , x3 = − x1 − x2 + λ2 (mod n) , y3 = −λx3 − v(mod n) Khi theo định nghĩa tổng P Q R = P + Q = ( x3 : y3 : 1) Bây xem trường hợp d = UCLN ( x1 − x2 , n) = n Lúc x1 ≡ x2 (mod n) Chúng ta tìm d1 = UCLN ( y1 + y2 , n) Nếu < d1 < n tìm ước n thuật toán dừng Nếu d1 = n ,nghĩa y1 ≡ − y2 (mod n) , tổng R = P + Q = O Nếu d=1, tìm λ1 = (3 x12 + a )( y1 + y2 ) −1 (mod n) , v = y1 − λx1 (mod n) , x3 = −2 x1 + λ2 (mod n) , y3 = −λx3 − v(mod n) giả định R = P + Q = ( x3 : y3 : 1) Như xác định tổng điểm Vn Bây xác định tích điểm P ∈ Vn với số tự nhiên k Kết phép nhân tìm ước d n, 1

Ngày đăng: 09/05/2021, 22:13

Từ khóa liên quan

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

Tài liệu liên quan