Chương 4fit.mta.edu.vn/files/FileMonHoc/Chương 4 - Phân tích... · Web viewPHÂN TÍCH SỐ...
Transcript of Chương 4fit.mta.edu.vn/files/FileMonHoc/Chương 4 - Phân tích... · Web viewPHÂN TÍCH SỐ...
Chương 4
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 là hàm mũ
4.1.1 Mở đầu
Trong mục này chúng ta xem xét các thuật toán phân tích số tự nhiên n ra thừa số, mà
nó thực hiện lệnh số học, c là hằng số, 0<c<1; hoặc thực hiện lệnh số
học với một số giá trị . Chúng ta sẽ giới hạn bằng cách tìm kiếm sự phân tích số ra 2
thừa số: n=ab, . Nếu như thuật toán tìm kiếm như vậy mất lệnh số học,
thì sự phân tích hoàn toàn n ra thừa số nguyên tố sẽ được tìm thấy tốn lệnh
số học, bởi vì n bao gồm tích của không lớn hơn số nguyên tố.
Nhưng trước khi tiến hành phân tích thành nhân tử số nguyên, chúng ta phải chắc
chắn rằng số đã cho là hợp số. Để tin tưởng điều này, tốt nhất chúng ta dùng một trong
các phương pháp kiểm tra tính nguyên tố của số bằng một số phương pháp đã trình bày
trong chương về số nguyên tố, nhưng thông thường ta chọn phương pháp xác suất, ví dụ
thuật toán Miller-Rabin.
4.1.2 Phương pháp Fermat
Phương pháp nhân tử hóa chúng ta đã tìm hiểu trong phần phương pháp thử chia, và
cách này tốn lệnh số học. Bây giờ chúng đi tìm hiểu thuật toán Fermat. Thuật toán
này tính toán nhân tử lớn nhất a của n, mà nó không lớn hơn . Trong thuật toán này
không sử dụng lệnh chia mà là lệnh cộng, trừ và nhân. Chú ý rằng nếu n=pq, với p, q là
số nguyên tố, ví dụ nó có độ lớn như nhau thì thuật toán Fermat sẽ nhanh phân tích. Cái
này được tính toán khi chọn modulo trong hệ mã RSA.
Thuật toán Fermat
Cho n là hợp số, n=ab, ở đây . Đặt , với u, v là số tự nhiên,
, . Thuật toán Fermat tìm sự biểu diễn n dưới dạng
, từ đây nhận được sự phân tích .
Chúng ta làm việc với các độ lớn
, k=0,1,2,…
Giá trị ban đầu . Sự tăng số k diễn ra theo quy tắc sau. Nếu như
, thì mục đích của chúng ta đạt được , và thuật toán
dừng. Nếu như , thì
,
Nếu như , thì
;
sau đó
Chúng ta có thể chứng minh rằng với số bước thực hiện có hạn thì thuật toán đưa đến
giá trị .
4.1.3 Phương pháp (p-1) Pollaid
Thuật toán p-1 của Pollaid đưa ra năm 1974 là một thuật toán đơn giản áp dụng đối
với các số nguyên lớn. Thuật toán này dựa vào hai đối số: Số nguyên lẻ n cần phân tích
và cận B.
Thuật toán được miêu tả như sau:
Đầu vào: n và B.
Đầu ra: Các thừa số của n (nếu tìm thấy).
Bước 1. Cho a=2
Bước 2. For j=2 to B do
Bước 3. Tính d=UCLN(a-1,n)
Bước 4. Nếu thì
d là một thừa số của n
Ngược lại
Không tìm thấy thừa số của n.
Chúng ta xem tính hợp lý của thuật toán.
Giả sử p là một ước số nguyên tố của n. Giới hạn B >0 thỏa mãn điều kiện sau. Với
mọi số nguyên tố thì ta có điều kiện:
.
Từ đây dẫn đến (p-1)|B! Nếu như chúng ta chọn số tự nhiên n sao cho UCLN(a,n)=1
thì theo định lý nhỏ Fermat:
,
Mà (p-1)|B!, nên , nghĩa là , mà ta lại có p|n, cho nên
p=UCLN(a-1, n).
Trong thuật toán có (B-1) lũy thừa theo modulo, mỗi lũy thừa cần nhiều nhất là
2log2B phép nhân modulo, ở đây chúng ta có thể áp dụng thuật toán bình phương và nhân
để thực hiện hiểu quả phép lũy thừa.
Việc tính ước chung lớn nhất có thể thực hiện trong thời gian O((log n)3) bằng thuật
toán Euclide. Vì thế độ phức tạp của thuật toán là O(B log B(log n)2+(log n)3). Nếu như B
là O((log n)i) với i là một số nguyên nào đó thì độ phức tạp của thuật toán là độ phức tạp
thời gian đa thức.
4.1.4 Phương pháp Pollaid
Phương pháp này được đề cập khá nhiều trong các sách và báo, nên ở đây chúng ta
chỉ nói khá tóm tắt miêu tả thuật toán.
Sơ đồ thuật toán
Đầu vào: là số nguyên n, mà chúng ta cần phân tích nó ra thừa số.
Bước 1. Chọn ánh xạ
.
Thông thường là đa thức có bậc không lớn hơn hay bằng 2, ví dụ .
Bước 2. Chọn ngẫu nhiên và tính phần tử theo đệ quy của dãy theo
quy tắc
.
Bước 3. Đối với một số j, k kiểm tra điều kiện
Cho đến khi nào không tìm được ước của số n hoặc 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 trong bước 3 của thuật toán thông thường thực hiện một trong
các cách sau
1. Đối với từng j chọn tất cả các số k, k<j; cái này thì lâu và cần nhiều bộ nhớ máy
tính.
2. Xem cặp k và 2k, để kiểm tra điều kiện
3. Nếu như j trong giới hạn , , thì cho
Đây là phương pháp khá đơn giản. Nếu như chu kỳ của dãy có thể bậc là
n, thì chu kỳ của dãy đối với ước nguyên tố p của số n không vượt quá p.
Điều này có nghĩa là có thể khác nhau theo modulo n, nhưng trùng nhau theo
modulo p, có nghĩa là .
Phương pháp này cần lệnh số học. Nó rất thông dụng và thường được sử dụng
để tách ước nguyên tố không lớn của số n.
4.1.5 Phương pháp Serman-Leman
Thuật toán này cần lệnh số học
Thuật toán
Đầu vào: Cho n là số lẻ, n>8.
Đầu ra: Là các thừa số của n.
Bước 1. Đối với kiểm tra điều kiện . Nếu như trên bước này chúng
ta không phân tích được n ra thừa số, thì chuyển đến bước 2.
Bước 2. Nếu như trong bước 1 ước không tìm thấy và n là hợp số, thì n=pq, ở đây p,q
là số nguyên tố và
Như thế đối với tất cả và tất cả , kiểm tra số
có phải là số chính phương hay là không. Nếu là chính phương thì
và thỏa mãn đồng dư thức
.
Trong trường hợp này kiểm tra điều kiện
Nếu điều kiện này thỏa mãn thì chúng ta đã phân tích n ra 2 thừa số và 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 ra 2 thừa số thì n là số nguyên tố.
4.1.6 Thuật toán Pollaid –Xtrassen
Thuật toán này phân tích n thành 2 thừa số cần lệnh số học. Thuật toán
cơ bản dựa trên định lý sau
Định lý 4.1 Cho . Khi đó đối với bất kỳ số tự nhiên t, ước số nhỏ nhất của
số có thể tìm thấy cần lệnh số học.
Thuật toán Pollard-Xtrassen
Đặt . Tiếp theo với sự giúp đỡ của định lý 2.20 chúng ta
tìm ước nguyên tố nhỏ nhất của . Bởi vì y! chia hết cho ước nguyên tố nhỏ
nhất p của n (bởi vì ), nên thuật toán đưa ra chính là số p. Độ phức tạp của thuật
toán Pollard-Xtrassen là .
4.1.7 Phương pháp nhân tử hóa dành cho các số có dạng đặc trưng
Đối với số n có dạng đặc trưng thì có khả năng có các cách riêng để phân tích ra thừa
số nguyên tử, bởi vì ước của các số đó có thể có dạng đặc trưng.
Định lý 4.2 Cho . Nếu p là số nguyên tố, và ước của n, thì một
trong hai điều khẳng định sau là đúng:
1. với một số giá trị của d, ;
2. .
Nếu như p>2 và k là số lẻ, thì trường hợp thứ hai .
Chứng minh: Theo định lý nhỏ Fermat thì , cũng như .
Giả sử , khi đó . Nếu như , thì có nghĩa là điều khẳng
định thứ nhất đúng. Còn nếu như d=k, thì k|p-1, có nghĩa là .
4.2 Phân tích số nguyên thành nhân tử với độ phức tạp là hàm mũ giả
4.2.1 Mở đầu
Ký hiệu là hàm có đặc điểm sau: , , khi
, là hằng số.
Trong chương này chúng ta xem các thuật toán nhân tử hóa số tự nhiên n, cần
lệnh số học khi hoặc và một số giá trị dương c, gía trị này phụ thuộc vào thuật
toán.
Chúng ta giả sử rằng, n là hợp số và n không chia hết cho các số nguyên tố nhỏ
(những số nguyên tố nhỏ chúng ta tìm bằng cách lựa chọn, hoặc với sự giúp đở của các
thuật toán mà chúng ta tìm hiểu trong chương trước).
Thuật toán được miêu tả như sau, cách tìm các số tự nhiên x,y, sao cho ,
sau đó kiểm tra điều kiện
.
Nếu như ước của n được tìm , thì thuật toán dừng, ngược lại ta đi xây dựng cặp x,y
tiếp theo.
Định lý 4.3 Cho n là hợp số lẻ, và giá trị của nó không bằng giá trị của hàm mũ của
một số nguyên tố. Khi đó đối với cặp ngẫu nhiên , thỏa mãn các biểu
thức
Xác suất để
Sẽ không nhỏ hơn 1/2.
Chứng minh. Giả sử . Cặp số x,y thỏa mãn điều kiện của định lý,
tương ứng với số z, (rõ ràng . Chúng ta cần
chứng minh rằng xác suất để z thỏa mãn bất đẳng thức phụ
Không nhỏ hơn 1/2. Rõ ràng rằng điều kiện tương đương với hệ phương
trình sau
Từ đây, số lượng các giá trị có thể của z bằng , và chỉ đối với 2 giá trị
thì ước chung lớn nhất bằng 1 hay n. Bởi vì , nên định lý của chúng ta
rõ ràng đúng.
4.2.2 Phương pháp Dixon
Cho - là số mà chúng ta cần phân tích thành nhân tử,
. Giả sử a là hằng số nào đó, , giá trị của nó xác
định ở dưới. Chúng ta gọi tập các số nguyên tố p, nằm trong khoảng dưới là cơ sở nhân
tử
.
Giả sử k là số lượng các số nguyên tố trong cơ sở nguyên tử, .
Thuật toán Dixon.
Đâu vào: là số nguyên n cần kiểm tra
Bước 1. Chúng ta tìm các số bằng cách lựa chọn ngẫu nhiên, sao cho thỏa
mãn
Và các giá trị được dùng là chẳn lần, và với . Ký hiệu
.
Bước 2. Giải hệ phương trình tuyến tính
Trong không gian vector , chúng ta tìm được tập , tập này không
bao gồm các giá trị 0 (cái này tồn tại bởi vì số lượng phương trình k nhỏ hơn số ẩn).
Bước 3. Để tìm được , rõ ràng ta có biểu thức sau
Ký hiệu , , (số -là số nguyên xác định theo
), chúng ta nhận được biểu thức tương ứng
.
Tiếp theo chúng ta kiểm tra điều kiện
Trong trường hợp thành công chúng ta đã phân tích n ra thừa số. Trong trường hợp
không thành công thì chúng ta quay lại bước 1 và tìm các giá trị khác của
Kết thúc thuật toán
Ví dụ. Giả sử n=15770708441. Cơ sở nhân tử là tập . Chọn
, , . Xét ba đồng dư thức sau
Lấy tích 3 đồng dư thức trên vế theo vế, ta được
, rút gọn các biểu thức
trong ngoặc theo modulo n, ta có:
Ta tìm
Ta thấy 115759 là một ước của n.
4.2.3 Thuật toán sàng bậc hai
Trong thuật toán Dixon, vấn đề là làm thế nào để chọn các số mà các giá trị
có thể phân tích hoàn toàn trên cơ sở nhân tử. Năm 1981 Pomerance đề xuất
phương pháp để xác định các số , có tên là sàng bậc hai.
Độ phức tạp của thuật toán sàng bậc hai tốn lệnh số học.
Chúng ta mô tả sơ đồ thuật toán ban đầu sàng bậc hai. Chúng ta xây dựng biểu thức
và kiểm tra bất đẳng thức
Để làm điều này chúng ta xem đa thức
,
ở đây . Các giá trị trong các điểm nguyên, rõ ràng chúng là chính
phương theo modulo n. Trong cơ sở nhân tử S chúng ta xem và tất cả các số
nguyên tố , sao cho . Sau đó với sự giúp đở của một số sàng, chúng ta tìm
giá trị , mà
,
có nghĩa là phân tích trong cơ sở nhân tử của chúng ta. Như vậy, ký hiệu ,
chúng ta nhận được đồng dư thức , chúng ta tích lũy số lượng đủ lớn các
biểu thức như thế, chúng ta thực hiện loại bỏ các biến và xay dựng biểu thức
Chú ý: Điều kiện với p là số nguyên tố của cơ sở nhân tử lấy từ đồng dư thức
, mà đồng dư cần thỏa mãn đối với một số giá trị của .
Sàng. Giá trị đối với được xác định như sau.
1. Đối với từng số nguyên tố p từ cơ sở nhân tử, chúng ta tìm nghiệm và
của phương trình .
2. Sau đó chúng ta thay đổi x trong khoảng đủ lớn , chúng ta đưa
đến một ma trận A, mà nó được đánh số thứ tự bằng giá trị của x.
3. Trong mỗi phần tử của ma trận với số thứ tự x ta đặt giá trị . Nghĩa là
.
4. Sau đó đối với từng giá trị p từ cơ sở nhân tử S chúng ta thực hiện quá trình
sàng như sau: Từ mổi phần tử của ma trận A, tức là , số thứ tự của nó nằm
trong cấp số cộng và , chúng ta tính toán giá trị của
.
Ý ở đây là việc tính toán nằm ở chổ, đối với phần tử x trong cấp số như vậy, giá trị
của Q(x) sẽ chia hết cho p, nhưng việc chia Q(x) cho p chúng ta đổi thành
. Sau khi kết thúc quá trình sàng trong phần tử của ma trận với số thứ tự
x sẽ chứa giá trị
.
Sau khi kết thúc quá trình sàng, chúng ta chọn số thứ tự x, mà ở đó giá trị của ma trận
cố độ lớn không quá lớn. Đối với các vị trí x như vậy giá trị Q(x) phân tích nhanh hơn
trong cơ sở nhân tử của chúng ta và chúng ta phân tích số Q(x) bằng ước số thử và lưu
giá trị x, để hoàn toàn phân tích trong cơ sở nhân tử của chúng ta.
Ý nghĩa của quá trình sàng là tiết kiệm được số lượng lệnh chia các số nguyên lớn.
Cùng với nó là để từng giá trị phân tích Q(x) trong cơ sở nhân tử một cách
nhanh chóng, chúng ta ước lượt được tập x, và thực hiện tính toán bằng lệnh đơn giản là
cộng và trừ. Việc tiết kiệm này là rất hiệu quả, và nó đã được ưu chuộng hơn các thuật
toán nhân tử hóa trước đây.
4.2.4 Phân tích ra nhân tử với sự hổ trợ của đường cong Elliptic
Thuật toán phân tích này được Lenstra đề xuất, và độ phức tạp của nó là cần
lệnh số học, p là ước nguyên tố nhỏ nhất của n.
Để miêu tả thuật toán Lenstra chúng ta cần đường cong Elliptic không xây dựng trên
trường mà là vành , ở đây n là số lẻ, và không chia hết cho 3 hợp số, n là số chúng ta
cần phân tích thành nhân tử. Chúng ta xem 3 số , sao cho iđêal sinh bởi x,y
và z trùng với vành . Tập hợp
,
gọi là qũy đạo của phần tử , nó đươc ký hiệu là (x:y:z). Tập tất cả các qũy
đạo này ký hiệu .
Đường cong Elliptic trong vành cho bởi phương trình sau
,
ở đây . Chúng ta ký hiệu tập các điểm của đường Elliptic
thông qua
.
Tập hợp này là một nhóm Abel hữu hạn, ứng với phép cộng. Thế nhưng chúng ta sẽ
sử dụng lệnh nhóm như vậy đối với trường hữu hạn nguyên tố. Chúng ta ký hiệu
Đối với và đối với bất kỳ số nguyên tố p, là ước của n, một điểm P từ tập
ký hiệu là . Rõ ràng rằng khi và chỉ khi P=O.
Phép cộng 2 điểm được tính như sau. Khi tính P+Q chúng ta hoặc tìm d là
ước của n (và mục đích của chúng ta đạt được) hoặc tìm điểm mà nó thỏa mãn điều
kiện sau.
Nếu như , và nếu như đối với p tìm được sao cho,
trong và khi đó , thì trong .
Việc tính tổng này được thực hiện như trong cách xây dựng trường hữu hạn bằng đường
cong Elliptic.
Chú ý: Nếu như chúng ta có điểm , số nguyên tố p và a thì
. Từ đây chúng ta có . Thế thì xác định được
giá trị . Nếu như đối với từng p|n, điểm nằm trên đường cong
trong trường , thì chúng ta có thể cộng trên đường cong
trong trường và tính tổng P+Q trong trường . Nếu như đối với một số giá trị của p
mà điểm không nằm trên đường , thì tính tổng P và Q không được
thực hiện.
Tổng các điểm P và Q từ tập được thực hiện như sau. Nếu như P=O, thì R=Q; Nếu
như Q=O thì R=P. Giả sử . Chúng ta tìm
bằng thuật toán Euclid. Nếu như , thì chúng ta đã tìm được
ước của n, và thuật toán dừng. Nếu như d=1 thì và đối với số
nguyên tố bất kỳ p, p|n. Khi đó chúng ta tìm bằng thuật toán mở rộng
Euclid. Tiếp theo ta đặt
, , ,
.
Khi đó theo định nghĩa tổng của P và Q bằng .
Bây giờ chúng ta xem trường hợp . Lúc này .
Chúng ta tìm . Nếu như thì chúng ta đã tìm được ước của n
và thuật toán dừng. Nếu như ,nghĩa là , thì tổng . Nếu
như d=1, chúng ta tìm
, ,
,
và giả định .
Như vậy chúng ta đã xác định được tổng của các điểm của . Bây giờ chúng ta xác
định tích của điểm với số tự nhiên k. Kết quả phép nhân này hoặc là chúng ta tìm
được ước d của n, 1<d<n, hoặc nhận được điểm , mà nó thỏa mãn điều kiện sau:
Nếu như p là số nguyên tố, p|n, , và nếu như đối với p tìm được sao
cho , và trong khi đó , thì khi đó trong
nhóm , ở đây thuật toán tìm được nói đến trương chương xây dựng trường
hữu hạn bằng đường cong Elliptic.
Thuật toán nhân tử hóa với một đường cong Elliptic
Đầu vào của thuật toán là số tự nhiên n và các tham số ,phụ thuộc vào n.
Cũng như , sao cho , đối với thỏa
mãn điều kiện . Thuật toán tìm kiếm ước số tự nhiên d của số n,
1<d<n.
Đối với từng số , chúng ta gỉa sử
,
và sau đó
, r là số nguyên tố.
Giả sử . Khi đó P nằm trên đường cong Elliptic trong vành ,
được xác định bởi phương trình . Chúng ta tính điểm kP. Nếu như trong
quá trình tính toán tìm được ước của số n, 1<d<n, thì chúng ta phân tích được n ra
thừa số và thuật toán dừng. Nếu như tìm được kP và không tìm được d thì thuật toán
dừng và thông báo về bất thành công của thí nghiệm nhân tử hóa.
Thuật toán kết thúc.
Chú ý.
Chúng ta chọn các tham số v,w,a,x,y như thế nào? Các phần tử được chọn
ngẫu nhiên; khi đó , chúng ta nhận được đường cong Elliptic
trong vành và các điểm trên nó. Tham số w theo lý thuyết bằng , với
, p là ước nguyên tố nhỏ nhất của n. Bởi vì p là chưa biết, nhưng
, nên , từ đây chúng ta nhận được
giới hạn trên của của w
.
Trên thực tế thuật toán phân tích thành nhân tử khi cho bởi n,v,w thực hiện như sau.
Chọn ngẫu nhiên các số ưu tiên và thực hiện thuật toán nhân tử hóa với một
đường cong. Và lặp lại như thế cho đến khi nào phân tích được n ra thừa số hoặc thời
gian của chúng ta kết thúc.
4.2.5 Thuật toán sàng trường số học
Thuật toán sàng trường số dành phân tích một số nguyên dạng đặc biệt ra thừa số
(SNFS). Số n, mà chúng ta áp dụng SNFS có dạng , ở đây , r và |s|
không quá lớn.
Độ phức tạp của thuật toán này là c là hằng số nào đó. Thực tế sàng trường
số không là thuật toán, mà là một phương pháp tính toán, nó bao gồm một số tầng, một
trong các tầng nó được phục vụ bằng một số thuật toán.
Sơ đồ phương pháp SNFS đối với số n
Tầng 1.Lựa chọn cơ sở nhân tử
Cơ sở nhân tử bao gồm từ một số tập hợp các phần tử . Tất cả khả
nghịch trong vành . Ký hiệu tập hợp vector -chiều:
Chúng ta xem ánh xạ
(nhóm khả nghịch theo phép nhân các phần tử trong vành )
.
Tầng 2. Tìm mối liên hệ
Ở đây chúng ta tìm vector , tức là , sao cho
Chúng ta cần tìm tập hợp đủ lớn các vector như thế, chính xác hơn |V|
cần phải lớn hơn .
Tầng 3. Tìm sự phụ thuộc
Ở đây chúng ta tìm sự phụ thuộc tuyến tính không tầm thường theo modulo 2 của các
vector tìm được ; số lượng của nó lơn hơn so với kích thước của nó, cho nên sự
phụ thuộc như vậy là tồn tại. Để tìm sự phụ thuộc chúng ta giải hệ phương trình tuyến
tính
ở đây . Giải hệ phương trình này chúng ta tìm được tập hợp con không rổng
, mà
Lúc này , với . Điều này có nghĩa là khi thì
chúng ta có
.
Lúc này chúng ta kiểm tra bất đẳng thức sau có đúng hay không
Nếu như bất đẳng thức đúng thì chúng ta tìm được ước của n, và chúng ta dừng,
ngược lại chúng ta quay về hoặc tầng 2 (tìm liên hệ mới), hoặc tầng 1 (xây dựng một
cơ sở nhân tử mới)
Kết thúc sơ đồ