Khi nào thì thử nghiệm nguyên thủy AKS thực sự nhanh hơn các thử nghiệm khác?


24

Tôi đang cố gắng để có được một ý tưởng về cách kiểm tra tính nguyên thủy của AKS khi tôi tìm hiểu về nó, ví dụ như một hệ quả để chứng minh rằng PRIMES P, hoặc một thuật toán thực tế để kiểm tra tính nguyên thủy trên máy tính.

Bài kiểm tra có thời gian chạy đa thức nhưng với mức độ cao và hằng số cao có thể. Vì vậy, trong thực tế, tại đó vượt qua các bài kiểm tra nguyên thủy khác? Ở đây, là số chữ số của số nguyên tố và "vượt" đề cập đến thời gian chạy gần đúng của các thử nghiệm trên các kiến ​​trúc máy tính điển hình.nn

Tôi quan tâm đến các thuật toán so sánh chức năng, đó là các thuật toán xác định không cần phỏng đoán cho chính xác.

Ngoài ra, việc sử dụng một bài kiểm tra như vậy so với các bài kiểm tra khác có phù hợp với yêu cầu bộ nhớ của bài kiểm tra không?

Câu trả lời:


23

Trả lời nhanh: Không bao giờ, cho mục đích thực tế. Nó hiện không được sử dụng thực tế.

Thời gian nguyên thủy đo được

Trước tiên, hãy tách biệt thử nghiệm tính tổng hợp "thực tế" khỏi các bằng chứng nguyên thủy. Cái trước là đủ tốt cho hầu hết tất cả các mục đích, mặc dù có nhiều cấp độ thử nghiệm khác nhau mà mọi người cảm thấy là đủ. Đối với các số dưới 2 ^ 64, không quá 7 bài kiểm tra Miller-Rabin hoặc một bài kiểm tra BPSW được yêu cầu cho câu trả lời xác định. Điều này sẽ nhanh hơn rất nhiều so với AKS và cũng chính xác như vậy trong mọi trường hợp. Đối với các số trên 2 ^ 64, BPSW là một lựa chọn tốt, với một số thử nghiệm Miller-Rabin cơ sở ngẫu nhiên bổ sung thêm một số độ tin cậy bổ sung với chi phí rất thấp. Hầu như tất cả các phương pháp chứng minh sẽ bắt đầu (hoặc chúng nên) với một bài kiểm tra như thế này bởi vì nó rẻ và có nghĩa là chúng tôi chỉ làm việc chăm chỉ với những con số gần như chắc chắn là số nguyên tố.

Chuyển sang bằng chứng. Trong mỗi trường hợp, bằng chứng kết quả không yêu cầu phỏng đoán, vì vậy những điều này có thể được so sánh về mặt chức năng. "Gotcha" của APR-CL là nó không hoàn toàn đa thức và "gotcha" của ECPP / fastECPP là có thể tồn tại những con số mất nhiều thời gian hơn dự kiến.

Trong biểu đồ, chúng ta thấy hai triển khai AKS nguồn mở - lần đầu tiên từ bài báo v6, lần thứ hai bao gồm các cải tiến từ Bernstein và Voloch và một heuristic r / s đẹp từ Bornemann. Chúng sử dụng phân đoạn nhị phân trong GMP cho các bội số đa thức nên khá hiệu quả và việc sử dụng bộ nhớ không phải là vấn đề đối với các kích thước được xem xét ở đây. Chúng tạo ra các đường thẳng đẹp với độ dốc ~ 6,4 trên biểu đồ log-log, thật tuyệt vời. Nhưng ngoại suy tới 1000 chữ số đến vào thời điểm ước tính trong hàng trăm nghìn đến hàng triệu năm, so với vài phút cho APR-CL và ECPP. Có những tối ưu hóa hơn nữa có thể được thực hiện từ bài báo Bernstein năm 2002, nhưng tôi không nghĩ rằng điều này sẽ thay đổi đáng kể tình hình (mặc dù cho đến khi thực hiện điều này không được chứng minh).

Cuối cùng AKS đánh bại bộ phận thử nghiệm. Phương pháp BLS75 định lý 5 (ví dụ bằng chứng n-1) yêu cầu bao thanh toán một phần của n-1. Điều này hoạt động rất tốt ở các kích thước nhỏ, và cả khi chúng ta may mắn và n-1 rất dễ tính, nhưng cuối cùng chúng ta sẽ gặp khó khăn khi phải tính đến một số tiền tố lớn. Có những triển khai hiệu quả hơn, nhưng nó thực sự không vượt quá 100 chữ số bất kể. Chúng ta có thể thấy rằng AKS sẽ vượt qua phương pháp này. Vì vậy, nếu bạn đặt câu hỏi vào năm 1975 (và đã có thuật toán AKS trở lại), chúng ta có thể tính toán sự giao nhau trong đó AKS là thuật toán thực tế nhất. Nhưng vào cuối những năm 1980, APR-CL và các phương pháp cyclotomic khác là so sánh chính xác, và vào giữa những năm 1990, chúng ta phải đưa ECPP vào.

Các phương thức APR-CL và ECPP đều là các triển khai nguồn mở. Primo (ECPP miễn phí nhưng không phải nguồn mở) sẽ nhanh hơn cho các kích thước chữ số lớn hơn và tôi chắc chắn có đường cong đẹp hơn (tôi chưa thực hiện đo điểm chuẩn mới). APR-CL không phải là đa thức nhưng số mũ có một yếu tố mà khi ai đó châm biếm "đi đến vô cùng nhưng chưa bao giờ được quan sát thấy như vậy". Điều này khiến chúng tôi tin rằng trên lý thuyết, các đường thẳng sẽ không giao nhau với bất kỳ giá trị nào của n nơi AKS sẽ kết thúc trước khi mặt trời của chúng ta bị đốt cháy. ECPP là một thuật toán Las Vegas, khi chúng tôi nhận được câu trả lời là chính xác 100%, chúng tôi mong đợi một kết quả trong phỏng đoán (ECPP) hoặcđăng nhậpđăng nhậpđăng nhậpnÔi(đăng nhập5+ε(n))Ôi(đăng nhập4+ε(n))("fastECPP") thời gian, nhưng có thể có những con số mất nhiều thời gian hơn. Vì vậy, kỳ vọng của chúng tôi là AKS tiêu chuẩn sẽ luôn chậm hơn ECPP đối với hầu hết tất cả các số (chắc chắn nó đã hiển thị chính nó cho các số có tới 25 chữ số).

AKS có thể có nhiều cải tiến hơn đang chờ được khám phá khiến nó trở nên thiết thực. Bài báo Quartic của Bernstein thảo luận về thuật toán ngẫu nhiên dựa trên AKS và bài báo fastECPP của Morain tham khảo các phương pháp dựa trên AKS không xác định khác. Đây là một thay đổi cơ bản, nhưng cho thấy AKS đã mở ra một số lĩnh vực nghiên cứu mới như thế nào. Tuy nhiên, gần 10 năm sau tôi chưa thấy ai sử dụng phương pháp này (hoặc thậm chí bất kỳ triển khai nào). Ông viết trong phần giới thiệu, "Có phải thời gian cho thuật toán mới nhỏ hơn thời gian để tìm elliptic- Chứng chỉ đường cong? Ấn tượng hiện tại của tôi là câu trả lời là không, nhưng kết quả tiếp theo [...] có thể thay đổi câu trả lời. "Ôi(đăng nhập4+ε(n))(lgn)4+o(1)(lgn)4+o(1)

Một số thuật toán có thể dễ dàng song song hoặc phân phối. AKS rất dễ dàng (thử nghiệm của mỗi người là độc lập). ECPP không quá khó. Tôi không chắc chắn về APR-CL.

Các phương pháp ECPP và BLS75 tạo ra các chứng chỉ có thể được xác minh độc lập và nhanh chóng. Đây là một lợi thế rất lớn so với AKS và APR-CL, nơi chúng ta chỉ cần tin tưởng vào việc triển khai và máy tính đã tạo ra nó.


18

Ôi~(đăng nhập6n)Ôi~(đăng nhập4n)Ôi~(n1/7)Ôi(đăng nhậpnÔi(đăng nhậpđăng nhậpđăng nhậpn))

Ôi~(đăng nhập2n)2-80Ôi~(đăng nhập2n)

Trong tất cả các thử nghiệm này, bộ nhớ không phải là vấn đề.


Trong bình luận của họ, jbapple đặt ra vấn đề quyết định sử dụng thử nghiệm nguyên thủy nào trong thực tế. Đây là một câu hỏi về triển khai và điểm chuẩn: thực hiện và tối ưu hóa một vài thuật toán và xác định bằng thực nghiệm cái nào là nhanh nhất trong phạm vi nào. Đối với người tò mò, các lập trình viên của PARI đã làm điều đó, và họ đã đưa ra một hàm xác định isprimevà hàm xác suất ispseudoprime, cả hai đều có thể tìm thấy ở đây . Thử nghiệm xác suất được sử dụng là Miller Rush Rabin. Một trong những quyết định là BPSW.


Dưới đây là thông tin thêm từ Dana Jacobsen :

Pari kể từ phiên bản 2.3 sử dụng bằng chứng nguyên thủy APR-CL cho isprime(x)và thử nghiệm nguyên tố có thể xảy ra của BPSW (với thử nghiệm Lucas "gần như cực mạnh") cho ispseudoprime(x).

Họ có những lý lẽ thay đổi hành vi:

  • isprime(x,0) (mặc định.) Sử dụng kết hợp (BPSW, định lý nhanh Pocklington hoặc BLS75 5, APR-CL).
  • isprime(x,1)n-1
  • isprime(x,2) Sử dụng APR-CL.

  • ispseudoprime(x,0) (mặc định.) Sử dụng BPSW (MR với cơ sở 2, Lucas "gần như cực mạnh").

  • ispseudoprime(x,k)k1kmpz_is_probab_prime_p(x,k)

Pari 2.1.7 đã sử dụng một thiết lập tồi tệ hơn nhiều. isprime(x)chỉ là các thử nghiệm MR (mặc định 10), dẫn đến những điều thú vị như isprime(9)trở lại đúng khá thường xuyên. Việc sử dụng isprime(x,1)sẽ làm một bằng chứng Pocklington, tốt cho khoảng 80 chữ số và sau đó trở nên quá chậm để thường không hữu ích.

Bạn cũng viết Trong thực tế, không ai sử dụng các thuật toán này, vì chúng quá chậm. Tôi tin rằng tôi biết ý của bạn, nhưng tôi nghĩ điều này quá mạnh tùy thuộc vào đối tượng của bạn. AKS tất nhiên, rất chậm, nhưng APR-CL và ECPP đủ nhanh để một số người sử dụng chúng. Chúng rất hữu ích cho tiền điện tử hoang tưởng và hữu ích cho những người làm những việc như primegapshoặc factordbnơi mà người ta có đủ thời gian để muốn các số nguyên tố đã được chứng minh.

[Nhận xét của tôi về điều đó: khi tìm kiếm một số nguyên tố trong một phạm vi cụ thể, chúng tôi sử dụng một số phương pháp sàng theo sau là một số thử nghiệm xác suất tương đối nhanh. Chỉ sau đó, nếu có, chúng tôi sẽ chạy thử nghiệm xác định.]

Trong tất cả các thử nghiệm này, bộ nhớ không phải là vấn đề. Đây là một vấn đề đối với AKS. Xem, ví dụ, eprint này . Một số điều này phụ thuộc vào việc thực hiện. Nếu một người thực hiện video mà số thứ tự gọi là AKS (thực sự là một khái quát của Định lý nhỏ của Fermat), thì việc sử dụng bộ nhớ sẽ cực kỳ cao. Sử dụng triển khai NTL của thuật toán v1 hoặc v6 như giấy được tham chiếu sẽ dẫn đến số lượng lớn bộ nhớ ngu ngốc. Việc triển khai v6 GMP tốt vẫn sẽ sử dụng ~ 2GB cho số nguyên tố 1024 bit, rất nhiềucủa bộ nhớ cho một số lượng nhỏ như vậy. Sử dụng một số cải tiến Bernstein và phân đoạn nhị phân GMP dẫn đến tăng trưởng tốt hơn nhiều (ví dụ ~ 120MB cho 1024 bit). Điều này vẫn lớn hơn nhiều so với các phương pháp khác cần, và không có gì ngạc nhiên, sẽ chậm hơn hàng triệu lần so với APR-CL hoặc ECPP.


2
Tôi không tin rằng câu trả lời này là câu hỏi được đặt ra, nó sẽ yêu cầu tính toán các hằng số của các bài kiểm tra này.
jbapple

1
Sử dụng downvote của bạn bất cứ khi nào bạn gặp phải một bài viết quá cẩu thả, không tốn công sức hoặc một câu trả lời rõ ràng và có lẽ nguy hiểm không chính xác. - Tôi không thể thấy cách người đánh giá thấp câu trả lời này biện minh cho việc bỏ phiếu.
Pål GD

2
n

nđăng nhậpn

Bài đăng tốt, nhưng định nghĩa của bạn về "không ai" là hơi quá. Vì tò mò, tôi đã kiểm tra mất bao lâu để xác minh số nguyên tố có thể xảy ra DSA 2048 bit được tạo bằng OpenSSL (sử dụng openssl pkeyparam -textđể trích xuất chuỗi hex) bằng PARI isprime(APR-CL như đã nêu): khoảng 80 giây trên một máy tính xách tay nhanh. Để tham khảo, Chromium cần hơn 0,25 giây cho mỗi lần lặp lại triển khai bản demo JavaScript của tôi trong thử nghiệm Frobenius (mạnh hơn nhiều so với MR), vì vậy APR-CL chắc chắn là hoang tưởng nhưng có thể thực hiện được.
Arne Vogel

2

Ôi(f(n))Ôi(f(n))Ôi(g(n))nnn

Đã thấy bài báo gần đây về arxiv phân tích chủ đề này một cách sâu sắc / chi tiết, không chắc mọi người nghĩ gì về nó, chưa từng nghe phản ứng, có vẻ như đó là một luận án do sinh viên tạo ra, nhưng có thể là một trong những phân tích chi tiết / toàn diện nhất về sử dụng thực tế của các thuật toán có sẵn.


AKS hiệu quả hơn những gì? Cuộc thi là gì?
Yuval Filmus

tất cả các thuật toán khác. Chủ yếu là xác suất? chi tiết trong bài báo
vzn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.