การทดสอบดั้งเดิมของ AKS จะเร็วกว่าการทดสอบอื่น ๆ จริง ๆ เมื่อใด


24

ฉันพยายามที่จะเข้าใจว่าการทดสอบ AKS primalityควรตีความอย่างไรเมื่อฉันเรียนรู้เช่นข้อพิสูจน์สำหรับการพิสูจน์ว่า PRIMES ⊆ P หรืออัลกอริทึมจริง ๆ สำหรับการทดสอบแบบดั้งเดิมบนคอมพิวเตอร์

การทดสอบมีพหุนาม แต่มีระดับสูงและค่าคงที่สูงที่เป็นไปได้ ดังนั้นในทางปฏิบัติที่nไม่ผ่านการทดสอบแบบดั้งเดิมอื่น ๆ ? ที่นี่nคือจำนวนหลักของนายกและ "เกิน" หมายถึงรันไทม์โดยประมาณของการทดสอบบนสถาปัตยกรรมคอมพิวเตอร์ทั่วไป

ฉันสนใจในอัลกอริธึมที่เทียบเท่ากับการใช้งานซึ่งเป็นสิ่งที่กำหนดได้ซึ่งไม่จำเป็นต้องมีการคาดเดาเพื่อความถูกต้อง

นอกจากนี้การใช้การทดสอบดังกล่าวมากกว่าสิ่งอื่น ๆ ที่ใช้งานได้จริงตามข้อกำหนดของหน่วยความจำของการทดสอบหรือไม่

คำตอบ:


23

คำตอบด่วน: ไม่เลยสำหรับการใช้งานจริง ปัจจุบันยังไม่มีการใช้งานจริงใด ๆ

ครั้งแรกที่วัด

ก่อนอื่นมาแยกการทดสอบคอมโพสิท "จริง" ออกจากข้อพิสูจน์เบื้องต้น อดีตนั้นดีพอสำหรับเกือบทุกวัตถุประสงค์แม้ว่าจะมีระดับการทดสอบต่าง ๆ ที่ผู้คนรู้สึกว่าเพียงพอ สำหรับตัวเลขที่ต่ำกว่า 2 ^ 64 ไม่จำเป็นต้องมีการทดสอบ Miller-Rabin มากกว่า 7 ครั้งหรือการทดสอบ BPSW หนึ่งครั้งสำหรับคำตอบที่กำหนดไว้ นี่จะเร็วกว่า AKS อย่างมากและแม่นยำในทุกกรณี สำหรับตัวเลขที่มากกว่า 2 ^ 64 BPSW เป็นตัวเลือกที่ดีพร้อมการทดสอบเพิ่มเติมแบบสุ่มฐานมิลเลอร์ - ราบินเพื่อเพิ่มความมั่นใจเป็นพิเศษสำหรับค่าใช้จ่ายน้อยมาก วิธีการพิสูจน์เกือบทั้งหมดจะเริ่มต้นขึ้น (หรือควร) ด้วยการทดสอบเช่นนี้เพราะราคาถูกและหมายความว่าเราจะทำงานอย่างหนักกับตัวเลขที่เกือบจะแน่นอนที่สุด

ย้ายไปยังการพิสูจน์ ในแต่ละกรณีการพิสูจน์ผลลัพธ์ไม่จำเป็นต้องมีการคาดเดาดังนั้นสิ่งเหล่านี้อาจถูกนำมาเปรียบเทียบ "gotcha" ของ APR-CL คือมันไม่ได้เป็นพหุนามและ "gotcha" ของ ECPP / fastECPP ก็คืออาจมีตัวเลขที่ใช้เวลานานกว่าที่คาดไว้

ในกราฟเราเห็นการใช้งาน AKS แบบโอเพ่นซอร์สสองรายการ ได้แก่ สิ่งแรกคือจากกระดาษ v6 ที่สองรวมถึงการปรับปรุงจากเบิร์นสไตน์และโวลอค การแบ่งเซ็กเมนต์ไบนารีเหล่านี้ใช้ใน GMP สำหรับการคูณพหุนามจึงค่อนข้างมีประสิทธิภาพและการใช้หน่วยความจำนั้นไม่ใช่ประเด็นสำหรับขนาดที่พิจารณาที่นี่ พวกมันให้เส้นตรงที่มีความชัน ~ 6.4 บนกราฟบันทึกการทำงานซึ่งยอดเยี่ยมมาก แต่การคาดคะเนตัวเลข 1,000 หลักมาถึงเวลาโดยประมาณในหลายแสนถึงล้านปีเทียบกับไม่กี่นาทีสำหรับ APR-CL และ ECPP มีการปรับให้เหมาะสมเพิ่มเติมซึ่งสามารถทำได้จากกระดาษของเบิร์นสไตน์ปี 2002 แต่ฉันไม่คิดว่าสิ่งนี้จะเปลี่ยนแปลงสถานการณ์ได้อย่างมีนัยสำคัญ

ในที่สุด AKS ก็จะทำการทดลองต่อไป ทฤษฎี BLS75 ทฤษฎีบทที่ 5 (เช่นการพิสูจน์แบบ n-1) ต้องการแฟ็กเตอริ่งบางส่วนของ n-1 วิธีนี้ใช้งานได้ดีในขนาดที่เล็กและเมื่อเราโชคดีและ n-1 นั้นง่ายต่อการแยกแยะ แต่ในที่สุดเราจะต้องติดปัจจัยกึ่งนายกขนาดใหญ่ มีการใช้งานที่มีประสิทธิภาพมากขึ้น แต่จริงๆแล้วมันไม่ได้ปรับขนาดเกิน 100 หลักโดยไม่คำนึงถึง เราจะเห็นว่า AKS จะผ่านวิธีนี้ ดังนั้นถ้าคุณถามคำถามในปี 1975 (และมีอัลกอริทึม AKS ย้อนกลับไป) เราสามารถคำนวณครอสโอเวอร์ที่ซึ่ง AKS เป็นอัลกอริทึมที่ใช้งานได้จริงที่สุด แต่ในช่วงปลายทศวรรษ 1980 APR-CL และวิธี cyclotomic อื่น ๆ เป็นการเปรียบเทียบที่ถูกต้องและในช่วงกลางปี ​​1990 เราต้องรวม ECPP

เมธอด APR-CL และ ECPP เป็นทั้งการใช้งานโอเพนซอร์ซ Primo (ฟรี แต่ไม่ใช่โอเพนซอร์ส ECPP) จะเร็วขึ้นสำหรับขนาดตัวเลขที่ใหญ่กว่าและฉันแน่ใจว่ามีเส้นโค้งที่ดีกว่า (ฉันยังไม่ได้ทำการเปรียบเทียบใหม่) APR-CL ไม่เป็นพหุนาม แต่เลขชี้กำลังมีปัจจัยเข้าสู่ระบบเข้าสู่ระบบเข้าสู่ระบบnซึ่งเป็นคนเหน็บ "ไปที่อินฟินิตี้ แต่ไม่เคยได้รับการปฏิบัติที่จะทำเช่นนั้น" สิ่งนี้ทำให้เราเชื่อว่าในทางทฤษฎีเส้นจะไม่ตัดผ่านค่าใด ๆ ของ n ที่ AKS จะเสร็จก่อนดวงอาทิตย์ของเราจะดับ ECPP เป็นอัลกอริทึมของลาสเวกัสซึ่งเมื่อเราได้รับคำตอบมันถูกต้อง 100% เราคาดว่าผลลัพธ์จะเป็นO(เข้าสู่ระบบ5+ε(n)) (ECPP) หรือO(เข้าสู่ระบบ4+ε(n)) ("fastECPP") แต่อาจมีตัวเลขที่ใช้เวลานานกว่า ดังนั้นความคาดหวังของเราคือมาตรฐาน AKS จะช้ากว่า ECPP เสมอสำหรับตัวเลขเกือบทุกหมายเลข (แน่นอนว่ามันแสดงให้เห็นว่าตัวเองมีตัวเลขสูงถึง 25k หลัก)

O(เข้าสู่ระบบ4+ε(n))(LGn)4+โอ(1)(LGn)4+โอ(1)

อัลกอริทึมเหล่านี้บางส่วนสามารถขนานหรือกระจายได้ง่าย AKS ง่ายมาก (การทดสอบของแต่ละคนมีความเป็นอิสระ) ECPP ไม่ยากเกินไป ฉันไม่แน่ใจเกี่ยวกับ APR-CL

วิธี ECPP และ BLS75 ผลิตใบรับรองที่สามารถตรวจสอบได้อย่างอิสระและเป็นอิสระ นี่เป็นข้อได้เปรียบที่ยิ่งใหญ่กว่า AKS และ APR-CL ซึ่งเราต้องเชื่อถือการติดตั้งใช้งานและคอมพิวเตอร์ที่ผลิต


18

O~(เข้าสู่ระบบ6n)O~(เข้าสู่ระบบ4n)O~(n1/7)O(เข้าสู่ระบบnO(เข้าสู่ระบบเข้าสู่ระบบเข้าสู่ระบบn))

O~(เข้าสู่ระบบ2n)2-80O~(เข้าสู่ระบบ2n)

ในการทดสอบทั้งหมดเหล่านี้หน่วยความจำไม่ใช่ปัญหา


ในความคิดเห็นของพวกเขา jbapple ยกประเด็นของการตัดสินใจว่าการทดสอบเบื้องต้นที่จะใช้ในทางปฏิบัติ นี่คือคำถามของการนำไปใช้และการเปรียบเทียบ: ใช้และเพิ่มประสิทธิภาพอัลกอริธึมสักสองสามอย่างและพิจารณาว่าการทดสอบใดที่เร็วที่สุดในช่วงนั้น สำหรับการอยากรู้อยากเห็นของโคด PARI ไม่เพียงแค่นั้นและพวกเขามากับฟังก์ชั่นที่กำหนดisprimeและฟังก์ชั่นน่าจะเป็นispseudoprimeทั้งสองซึ่งสามารถพบได้ที่นี่ การทดสอบความน่าจะเป็นที่ใช้คือ Miller – Rabin คนที่กำหนดขึ้นคือ BPSW


นี่คือข้อมูลเพิ่มเติมจากDana Jacobsen :

Pari ตั้งแต่รุ่น 2.3 ใช้ primality หลักฐาน APR-CL สำหรับisprime(x)และ BPSW ทดสอบที่สำคัญน่าจะเป็น (กับ "เกือบจะเสริมความแข็งแกร่ง" การทดสอบลูคัส) ispseudoprime(x)สำหรับ

พวกเขารับข้อโต้แย้งที่เปลี่ยนพฤติกรรม:

  • isprime(x,0) (ค่าเริ่มต้น) ใช้ชุดค่าผสม (BPSW, Pocklington อย่างรวดเร็วหรือทฤษฎีบท BLS75 5, APR-CL)
  • isprime(x,1)n-1
  • isprime(x,2) ใช้ APR-CL

  • ispseudoprime(x,0) (ค่าเริ่มต้น) ใช้ BPSW (MR พร้อมฐาน 2 "Lucas ที่แข็งแกร่งเกือบพิเศษ")

  • ispseudoprime(x,k) (สำหรับ k1kmpz_is_probab_prime_p(x,k)

Pari 2.1.7 ใช้การตั้งค่าที่แย่กว่านั้นมาก isprime(x)เป็นเพียงการทดสอบ MR (ค่าเริ่มต้น 10) ซึ่งนำไปสู่เรื่องสนุก ๆ เช่นการisprime(9)กลับมาจริงบ่อยครั้ง การใช้isprime(x,1)จะใช้การพิสูจน์ Pocklington ซึ่งใช้ได้ประมาณ 80 หลักแล้วช้าเกินไปที่จะเป็นประโยชน์โดยทั่วไป

คุณเขียนในความเป็นจริงแล้วไม่มีใครใช้อัลกอริธึมเหล่านี้เนื่องจากมันช้าเกินไป ฉันเชื่อว่าฉันรู้ว่าคุณหมายถึงอะไร แต่ฉันคิดว่าสิ่งนี้แข็งแกร่งเกินไปขึ้นอยู่กับผู้ชมของคุณ แน่นอนว่า AKS ช้าอย่างน่าประหลาดใจ แต่ APR-CL และ ECPP นั้นเร็วพอที่บางคนใช้งาน พวกเขามีประโยชน์สำหรับ crypto หวาดระแวงและมีประโยชน์สำหรับคนที่ทำสิ่งต่าง ๆ เช่นprimegapsหรือfactordbที่หนึ่งมีเวลาเพียงพอที่จะต้องการพิสูจน์เฉพาะ

[ความคิดเห็นของฉันเกี่ยวกับเรื่องนี้: เมื่อมองหาจำนวนเฉพาะในช่วงที่เฉพาะเจาะจงเราใช้วิธีการกรองบางอย่างตามด้วยการทดสอบความน่าจะเป็นที่ค่อนข้างรวดเร็ว ถ้าอย่างนั้นถ้าอย่างนั้นเราจะทำการทดสอบที่กำหนดขึ้น]

ในการทดสอบทั้งหมดเหล่านี้หน่วยความจำไม่ใช่ปัญหา มันเป็นปัญหาสำหรับ AKS ดูตัวอย่างeprintนี้ บางส่วนนี้ขึ้นอยู่กับการใช้งาน ถ้าใครใช้สิ่งที่วิดีโอของ numberphile เรียกว่า AKS (ซึ่งจริงๆแล้วเป็นบทสรุปของทฤษฎีบท Little ของแฟร์มาต์) การใช้หน่วยความจำจะสูงมาก การใช้ NTL ของอัลกอริทึม v1 หรือ v6 เช่นกระดาษอ้างอิงจะส่งผลให้หน่วยความจำจำนวนมากโง่ การใช้ GMP v6 ที่ดีจะยังคงใช้ ~ 2GB สำหรับ Prime 1024 บิตซึ่งเป็นจำนวนมากของหน่วยความจำสำหรับจำนวนน้อยเช่นนั้น การใช้การปรับปรุงของเบิร์นสไตน์และการแบ่งส่วนไบนารีของ GMP ทำให้การเติบโตดีขึ้นมาก (เช่น ~ 120MB สำหรับ 1024 บิต) นี่ยังคงมีขนาดใหญ่กว่าวิธีอื่น ๆ และไม่น่าแปลกใจที่จะช้ากว่า APR-CL หรือ ECPP นับล้านครั้ง


2
ฉันไม่เชื่อว่าสิ่งนี้จะตอบคำถามที่ถูกวางซึ่งจะต้องมีการคำนวณค่าคงที่ของการทดสอบเหล่านี้
jbapple

1
ใช้ downvotes ของคุณเมื่อใดก็ตามที่คุณพบโพสต์เลอะเทอะอย่างมหันต์ไม่มีความพยายามใช้หรือคำตอบที่ชัดเจนและอาจไม่ถูกต้องอันตราย - ฉันไม่เห็นว่าผู้ที่ลงคะแนนในคำตอบนี้เป็นเหตุผลในการลงคะแนน
Pål GD

2
n

nเข้าสู่ระบบn

โพสต์ที่ดี แต่คำจำกัดความของคุณของ "ไม่มีใคร" ก็ไม่ได้แย่ไปกว่านี้แล้ว จากการอยากรู้อยากเห็นฉันได้ทดสอบว่าต้องใช้เวลานานเท่าใดในการตรวจสอบนายก DSA ที่น่าจะเป็น 2048 บิตที่สร้างด้วย OpenSSL (ใช้openssl pkeyparam -textเพื่อแยกสตริงฐานสิบหก) โดยใช้ PARI isprime(APR-CL ตามที่ระบุไว้): ประมาณ 80s บนสมุดบันทึกด่วน สำหรับการอ้างอิง Chromium ต้องการเล็กน้อยกว่า 0.25s สำหรับแต่ละรอบซ้ำของการสาธิต JavaScript ของฉันการทดสอบ Frobenius (ซึ่งแข็งแกร่งกว่า MR มาก) ดังนั้น APR-CL จึงหวาดระแวง แต่ทำได้
Arne Vogel

2

O((n))O((n))O(ก.(n))nnn

เห็นกระดาษเมื่อเร็ว ๆ นี้ใน arxiv ซึ่งวิเคราะห์หัวข้อนี้ในรายละเอียด / ลึกไม่แน่ใจว่าสิ่งที่คนคิดว่ามันไม่เคยได้ยินปฏิกิริยาจนถึงขณะนี้ดูเหมือนว่าอาจจะเป็นวิทยานิพนธ์ที่นักเรียนสร้างขึ้น แต่อาจเป็นหนึ่งในการวิเคราะห์รายละเอียด / ครอบคลุมมากที่สุดการใช้งานจริงของอัลกอริทึมที่มีอยู่


AKS นั้นมีประสิทธิภาพมากกว่าอะไร? การแข่งขันคืออะไร?
Yuval Filmus

อัลกอริธึมอื่น ๆ ทั้งหมด probabilist ส่วนใหญ่? รายละเอียดในกระดาษ
vzn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.