การพิจารณาว่ามีช่วงเวลาสำคัญที่รู้ว่าอยู่ในช่วง P หรือสมบูรณ์หรือไม่?


13

ฉันเห็นจากโพสต์นี้ใน stackoverflow ว่ามีอัลกอริธึมที่ค่อนข้างเร็วสำหรับการร่อนช่วงของตัวเลขเพื่อดูว่ามีนายกในช่วงเวลานั้นหรือไม่ อย่างไรก็ตามนี่หมายความว่าปัญหาการตัดสินใจโดยรวมของ: (มีนายกในช่วงเวลาหรือไม่) อยู่ใน P. (มีคำตอบมากมายสำหรับโพสต์นั้นที่ฉันไม่ได้อ่านดังนั้นฉันต้องขออภัยถ้าคำถามนี้เป็น ซ้ำหรือไม่จำเป็น)

ในอีกด้านหนึ่งถ้าช่วงเวลานั้นมีขนาดใหญ่พอ (เช่น ) ก็จะมีบางอย่างที่เหมือนกับ Bertrand's Postulate และมีช่วงเวลาที่สำคัญในช่วงนี้ แต่ผมยังไม่ทราบว่ามีช่องว่างขนาดใหญ่ระหว่างสองพลเฉพาะ (เช่น[ N ! , N ! + N ] [N,2N][N!,N!+N]

แม้ว่าปัญหาการตัดสินใจอยู่ใน PI จะไม่เห็นว่าปัญหาการค้นหาที่เกี่ยวข้องนั้นยังสามารถใช้งานได้เนื่องจากเราอาจไม่สามารถวาดคุณสมบัติเดียวกันเกี่ยวกับการกระจายของช่วงเวลาที่รู้จักเมื่อทำการค้นหาแบบไบนารี

คำตอบ:


19

ดังนั้นปัญหาของคุณมีดังนี้:

อินพุต: จำนวนเต็ม คำถาม: มีไพรเวตใน[ ℓ , u ]หรือไม่?ℓ,u
[ℓ,u]

เท่าที่ฉันรู้มันไม่ทราบว่าปัญหานั้นเป็น P หรือไม่

นี่คือสิ่งที่ฉันรู้:

  • การทดสอบแบบดั้งเดิม (กำหนดตัวเลขเดียวทดสอบว่ามันยอดเยี่ยมหรือไม่) อยู่ใน P ดังนั้นถ้าช่วงนั้นมีขนาดเล็กพอคุณสามารถทดสอบแต่ละหมายเลขในช่วงเพื่อดูว่ามันเป็นนายกหรือไม่ แต่นี่ไม่ได้นำไปสู่ อัลกอริทึมทั่วไป

  • ถ้าการคาดคะเนของ Cramerเป็นจริงปัญหาจะอยู่ในการคาดการณ์ของ P. Cramer บอกว่าช่องว่างระหว่างช่วงเวลาที่ต่อเนื่องใกล้คือO ( ( log n ) 2 )ดังนั้นอัลกอริทึมต่อไปนี้จะเป็น P: วนซ้ำตามตัวเลขℓ , ℓ + 1 , ℓ + 2 , ℓ + 3 , … , ทดสอบกันว่ามันยอดเยี่ยมหรือไม่ หากคุณพบคนที่ดีที่สุดหยุดทันทีด้วยคำตอบที่ใช่; ถ้าคุณกดคุณหยุดด้วยไม่มีคำตอบ การคาดคะเนของ Cramer บอกเราว่าคุณจะหยุดหลังจากOมากที่สุดnO((log⁡n)2)ℓ,ℓ+1,ℓ+2,ℓ+3,…uการทดสอบเบื้องต้นเพื่อให้อัลกอริทึมนั้นทำงานในเวลาพหุนามO((log⁡ℓ)2)

    น่าเสียดายที่ผลลัพธ์ที่ทราบกันดีในช่องว่างที่สำคัญดูเหมือนจะไม่แข็งแรงพอที่จะพิสูจน์ได้อย่างไม่มีเงื่อนไขว่าปัญหาอยู่ที่ P

  • นี่คืออัลกอริธึมง่ายๆอีกประการหนึ่ง: สุ่มเลือกจำนวนเต็มจาก[ ℓ , u ]และทดสอบว่ามันยอดเยี่ยมหรือไม่ หยุดถ้าคุณพบว่ามีนายกหรือถ้าคุณได้ลองทุกจำนวนเต็มใน[ ℓ , u ]และไม่มีใครเป็นนายก ตามหลักจรรยาเราควรคาดหวังว่าสิ่งนี้จะมีประสิทธิภาพในทางปฏิบัติ จำนวนนายกทฤษฎีบทบอกเราว่าถ้าคุณสุ่มเลือกตัวเลขที่อยู่ในบริเวณใกล้เคียงของยูน่าจะเป็นสิ่งที่สำคัญจะอยู่ที่ประมาณ1 / log n ดังนั้นในการแก้ปัญหาเราควรคาดหวังว่าหลังจากประมาณO ( log u )r[ℓ,u][ℓ,u]u1/log⁡nO(log⁡u)การทำซ้ำโดยทั่วไปคุณจะพบจุดสูงสุดและหยุดหากมีอยู่จริง บนมืออื่น ๆ เนื่องจากปัญหาสะสมคูปองถ้ามีเป็นสำคัญในช่วงไม่คุณจะหยุดหลังจากที่เกี่ยวกับO ( ( U - L ) เข้าสู่ระบบ( U - L ) )การทำซ้ำ ดังนั้นถ้าเรามีขอบเขตบนที่ดีกับขนาดของช่องว่างที่ยาวที่สุดระหว่างจำนวนเฉพาะสิ่งนี้ก็แปลว่าปัญหานั้นอยู่ใน BPP แม้ว่าจะไม่มีขอบเขตบน แต่มันก็ติดตามว่าปัญหาสุ่มนั้นง่าย[ℓ,u]O((u−l)log⁡(u−l))

  • อาจเป็นไปได้ว่าสามารถใช้วิธีการกรองเพื่อปรับปรุงเวลาทำงานในทางปฏิบัติ (เช่นเพื่อหลีกเลี่ยงการทดสอบแบบดั้งเดิมกับตัวเลขที่แบ่งได้โดยนายกขนาดเล็ก) ฉันไม่รู้ว่าสิ่งนี้สามารถแสดงให้เห็นว่านำไปสู่การปรับปรุงเชิงซีโมติกหรือไม่

  • เนื่องจากเทคนิคเหล่านี้ปัญหาอาจเป็นเรื่องง่ายในทางปฏิบัติ

  • เนื่องจากข้อสังเกตข้างต้นฉันเองสงสัยว่าปัญหานั้นเป็นปัญหาที่สมบูรณ์


O(ℓu)

O(poly(log⁡u))

O(poly(log⁡u))O(poly(u))

log⁡uu

ไม่จำเป็นคุณได้กำจัดความสับสนของฉันไปแล้ว ขอบคุณมาก!
— Quelklef
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.