ความซับซ้อน - ทฤษฎียากที่จะตรวจสอบค่าของ ?


13

ฟังก์ชันนับจำนวนเฉพาะ , ลดระดับถูกกำหนดให้เป็นจำนวนตัวเลขที่สำคัญน้อยกว่าหรือเท่ากับxπ(x)x

เราสามารถกำหนดปัญหาการตัดสินใจจากπ(x)ดังนี้:

ได้รับตัวเลขสองxและnเขียนในไบนารีตัดสินใจว่าπ(x)=nn

วันนี้เพื่อนกับฉันกำลังพูดถึงปัญหานี้ มีอัลกอริทึม pseudopolynomial-time สำหรับปัญหานี้ - นับได้สูงสุดxโดยใช้การแบ่งการทดลองในแต่ละขั้นตอนเพื่อดูว่าตัวเลขมีจำนวนมากแค่ไหนและตรวจสอบว่าเท่ากับnหรือไม่ ปัญหายังอยู่ใน PSPACE เนื่องจากอัลกอริทึมที่ฉันเพิ่งอธิบายสามารถนำไปใช้เพื่อใช้พื้นที่เสริมพหุนามเท่านั้น

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

คลาสความซับซ้อนที่เหมาะสมที่สุดสำหรับปัญหานี้คืออะไร

ขอบคุณ!


โดยปกติแล้วปัญหาประเภทนี้มักจะขึ้นอยู่กับการคาดคะเนของ Riemann .... มีฟังก์ชั่น "ใกล้เคียง" มากมายสำหรับคุณที่มีการเชื่อมต่อนั้น ....
vzn

คำตอบ:


11

นี่เป็นปัญหาเปิดมาก ฉันจะวาดบางชั้นเรียนที่ปัญหาสามารถพอดีกับ "ธรรมชาติ"

คำจำกัดความของคุณค่อนข้างอึดอัดใจที่จะทำงานด้วยปัญหายากที่จะปรับให้เข้ากับระดับความซับซ้อนที่มีอยู่ ภาษาที่คุณได้กำหนดไว้เป็นจุดตัดของภาษาที่และ\} ดังนั้นถ้าเช่นอยู่ในชั้นเรียนแล้วจะอยู่ในcokสิ่งนี้ทำให้การกำหนดลักษณะของภาษาที่คุณกำหนดไว้ยากเพราะจะต้องระบุ "จุดตัดของภาษาในด้วยภาษาใน " เพื่อให้ขอบเขตที่แคบที่สุด{ ( x , n ) | π ( x ) n } { ( x , n ) | π ( x ) n } K { ( x , n ) | π ( x ) n } c o K K{(x,n)|π(x)n}{(x,n)|π(x)n}{(x,n)|π(x)n}K{(x,n)|π(x)n}coKKcoK

ปัญหา "Compute " เป็นปัญหาในโดยที่เป็นคลาสของปัญหาของรูปแบบ "คำนวณจำนวนเส้นทางการยอมรับของ nondeterministic, พหุนาม TM" เห็นได้ชัดว่าเราสามารถสร้าง nondeterministic TM ที่คาดเดาจำนวนและจากนั้น (ด้วย AKS) ทดสอบว่าเป็นนายกหรือไม่# Pπ(X)#P#PFPSPACEqxq

ตัวแปรการตัดสินใจของคือซึ่งเป็นคลาสของภาษาที่อยู่ในรูปแบบ: "เมื่อได้รับพหุนาม nondeterministic TM อย่างน้อยครึ่งหนึ่งของเส้นทางการคำนวณยอมรับ?" ทั้งและอาจจะเป็นปัญหาที่ลดลงใน (โดยทำบางอย่าง fudging กับ TM ที่กล่าวมาข้างต้นเพื่อสร้างสมดุลจำนวนเส้นทางที่ยอมรับ)#PPP{(x,n)|π(x)n}{(x,n)|π(x)n}PP


3

ปัญหาของคุณอยู่ในC P= ผ่านอัลกอริทึม,

ไม่ต้องเดาจำนวนเต็มเช่นและอีกเล็กน้อยถ้าปฏิเสธแล้ว ถ้าเป็นเช่นนั้น: หากยอมรับอย่างอื่นปฏิเสธ อื่น ๆ : ถ้าเป็นนายกแล้วก็ยอมรับคนอื่นปฏิเสธ[m0m<2log2(x+1)]b
x < m
b=1
m < n

m

.


โดยเฉพาะอย่างยิ่งปัญหาของคุณคือยังอยู่ใน PP, ตั้งแต่PP ปิดให้บริการภายใต้การลดลงของความจริงตาราง


2

ในทางปฏิบัติคุณอาจได้รับคำตอบเร็วขึ้นหรือช้าลง :-(

มีการประมาณที่ดีพอสมควรสำหรับπ (x) ดังนั้นคุณคำนวณการประมาณเช่นนี้และถ้ามันอยู่ไกลเกินไปคุณก็รู้ว่าπ (x) ≠ n ตัวอย่างเช่นถ้า n ≥ x ฉันรู้ว่าπ (x) ≠ n โดยไม่คำนวณอะไรเลย

มีอัลกอริทึมที่รวดเร็วซึ่งกำหนดว่าπ (x) เป็นเลขคู่หรือคี่วิ่งใน O (x ^ (1/2)) คุณสามารถเรียกใช้อัลกอริทึมนี้และอาจตรวจพบว่าความเท่าเทียมกันของ n ผิดและคุณเสร็จแล้ว มันมีโอกาสห้าสิบถ้า n เป็นจำนวนเต็มแบบสุ่มใกล้กับπ (x)

นอกจากนั้นฉันไม่รู้วิธีใดที่เร็วกว่าการคำนวณπ (x) ซึ่งไม่สะดวกมาก - ถ้าฉันเขียนโปรแกรมที่ควรจะคำนวณπ (10 ^ 25) และฉันได้รับผลลัพธ์ที่ไม่ผิดอย่างเห็นได้ชัดไม่มีทางที่จะตรวจสอบว่าผลลัพธ์ของฉันถูกต้องนอกเหนือจากการทำซ้ำ การคำนวณ และคุณไม่สามารถคำนวณซ้ำได้โดยใช้โปรแกรมของฉันคุณต้องเขียนโปรแกรมอื่นมิฉะนั้นคุณจะไม่ตรวจสอบว่าโปรแกรมของฉันมีข้อบกพร่องใด ๆ หรือไม่ที่ทำให้การคำนวณฟังก์ชั่นแตกต่างจากπ (x) เล็กน้อย

calculated (x) สามารถคำนวณได้อย่างง่ายดายในประมาณ O (n ^ (2/3)) และเร็วขึ้นด้วยคณิตศาสตร์ลึก ๆ


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