การพิจารณาว่ามีช่วงเวลาสำคัญที่รู้ว่าอยู่ในช่วง 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((logn)2),+1,+2,+3,uการทดสอบเบื้องต้นเพื่อให้อัลกอริทึมนั้นทำงานในเวลาพหุนามO((log)2)

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

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

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

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

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


O(u)

O(poly(logu))

O(poly(logu))O(poly(u))

loguu

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