(ฉันเข้าใจคำอธิบายของปัญหาเพื่อให้หมายเลขอินพุตถูกล้อมรอบด้วยค่าคงที่ดังนั้นฉันจะไม่ติดตามการพึ่งพาขอบเขต)
ปัญหาสามารถแก้ไขได้ในเวลาเชิงเส้นและพื้นที่ลอการิทึมโดยใช้ผลรวมของลอการิทึม รายละเอียดเพิ่มเติมอัลกอริทึมเป็นดังนี้:
- ใช้ตัวนับไบนารีนับจำนวนการเกิดขึ้นของแต่ละหมายเลขที่เป็นไปได้ในทั้งสองรายการ
สิ่งนี้ต้องใช้เวลาและตัวนับใช้พื้นที่O ( log n )เนื่องจากแต่ละตัวนับถูกล้อมรอบด้วยค่าnO ( n )O ( เข้าสู่ระบบn )n
ให้เป็นจำนวนเฉพาะด้านล่างO ( 1 )ที่ถูกผูกไว้ โดยการกระจายตัวนับแต่ละตัวสำหรับตัวเลขaถึงปัจจัยหลักของa (ด้วยความเหมาะสมหลายหลาก) และการลบจำนวนสำหรับหนึ่งรายการจากรายการอื่นเราได้รับสิ่งต่อไปนี้ในเวลาO ( log n ) :พี1, … , pkO ( 1 )aaO ( เข้าสู่ระบบn )
จำนวนเต็ม Compute กับO ( บันทึกn )บิตดังกล่าวว่าปัญหาที่เกิดขึ้นจะเทียบเท่ากับการกำหนดสัญลักษณ์ของΛ : = Σ k ฉัน= 1 β ฉันเข้าสู่ระบบPฉันβ1, … , βkO ( เข้าสู่ระบบn )Λ : = ∑ki = 1βผมเข้าสู่ระบบพีผม
หากให้ตอบว่าผลิตภัณฑ์เท่ากันβ1= ⋯ = βk= 0
มิฉะนั้น 0 โดยทฤษฎีบทของเบเกอร์เราสามารถลดความผูกพัน
| Λ | > 2 - C บันทึกn
สำหรับบางอย่างคงที่C ดังนั้นต่อไปนี้อย่างถูกต้องคำนวณสัญลักษณ์ของΛ :Λ ≠ 0
| Λ | > 2- Cเข้าสู่ระบบn
คΛ
- เอาท์พุทเครื่องหมายของโดยที่π iเป็นการประมาณของlog p iถึงm : = C log n + k + 1บิตของความแม่นยำΣki = 1βผมπผมπผมเข้าสู่ระบบพีผมm : = Cเข้าสู่ระบบn + k + 1
ให้เป็นค่าใช้จ่ายของการคูณจำนวนเต็มสองm -bit ขอบเขตที่ดีที่สุดในปัจจุบันคือM ( m ) = O ( mM( m )ม.แต่ที่นี่มันจะไม่สร้างความแตกต่างมากแม้ว่าเราจะใช้อัลกอริทึมการคูณ O ( m 2 )เล็กน้อย เราสามารถคำนวณบันทึกหน้าฉันจะมบิตของความถูกต้องในเวลา O ( M ( ม. ) เข้าสู่ระบบม. )ใช้ซ้ำประชุมผู้ถือหุ้น (ดูเช่นที่นี่) แล้วประเมิน Σ ฉันβ ฉันπ ฉันต้องใช้เวลา O ( M ( เมตร)M( m ) = O ( mเข้าสู่ระบบม.2O ( เข้าสู่ระบบ* * * *ม. ))โอ( ม2)เข้าสู่ระบบพีผมม.O ( M( m ) บันทึกม. )Σผมβผมπผม . โดยรวมแล้วขั้นตอนที่ 4 ต้องใช้เวลา O ( M ( m ) log m ) ⊆ O ( log nO ( M( ม. ) ) )O ( M( m ) บันทึกm ) ⊆ O ( บันทึกnp o l y (บันทึกเข้าสู่ระบบn ) )
ดังนั้นเวลาทำงานของอัลกอริทึมจะถูกควบคุมโดยของขั้นตอนแรกO ( n )