กำหนดภาษา L ที่กำหนดโดยเครื่องจักรทัวริงที่ตัดสินใจเป็นไปได้หรือไม่ที่จะกำหนดอัลกอริทึมว่า L อยู่ใน NP หรือไม่
กำหนดภาษา L ที่กำหนดโดยเครื่องจักรทัวริงที่ตัดสินใจเป็นไปได้หรือไม่ที่จะกำหนดอัลกอริทึมว่า L อยู่ใน NP หรือไม่
คำตอบ:
ไม่ก่อนโดยทฤษฎีของไรซ์นี่เป็นคุณสมบัติของ TM ที่ขึ้นอยู่กับภาษาที่ใช้คำนวณเท่านั้นดังนั้นจึงไม่สามารถคำนวณได้
แต่ยิ่งไปกว่านั้นมันเป็นที่รู้กันว่าชุดดัชนีของ (นั่นคือชุดของ TM ที่คำนวณภาษาในN P ) คือΣ 0 3 - สมบูรณ์ ( Σ 0 3ในลำดับชั้นทางคณิตศาสตร์ของการคำนวณไม่ใช่ ลำดับชั้นพหุนาม)
คำถามเช่นนี้ถูกตรวจสอบครั้งแรกโดยHajek สำหรับข้อมูลเพิ่มเติมโปรดดูตัวอย่างบทความนี้โดย Ken Regan
นักเก็ตที่ยอดเยี่ยมอีกสองสามคนจากกระดาษของ Hajek:
คำตอบสำหรับคำถามที่แท้จริงของคุณคือไม่ตามที่ Joshua Grochow ชี้ให้เห็น
อย่างไรก็ตามตามที่ Holger ระบุไว้มีความเป็นไปได้ที่จะตรวจสอบเวลาเชิงเส้นว่าเครื่องทัวริง nositterministic (NTM) "หยุดตัวเอง" และหยุดหลังจาก n ^ k ขั้นตอนสำหรับค่าคงที่ k ผ่านทางมาตรฐานของการจำลองนาฬิกา (เช่น รหัสด้านล่าง) บ่อยครั้งที่กระดาษหรือหนังสือจะแนะนำ (ไม่ถูกต้อง) ว่าเป็นไปได้ที่จะตรวจสอบว่า NTM เป็นเวลาพหุนามนี่คือสิ่งที่พวกเขาหมายถึงจริงๆ บางทีนี่อาจเป็นเหตุผลที่คุณถามคำถาม (ฉันมีคำถามเดียวกันเมื่อฉันเรียนรู้ทฤษฎีความซับซ้อนเป็นครั้งแรกและบางแห่งเห็นคำสั่งว่าเป็นไปได้ที่จะตรวจสอบว่า TM นั้นเป็นโพลีไทม์หรือไม่) คำถามจริงคือทำไมคนเราอาจต้องการทำสิ่งนี้อย่างไร
มีหลายวิธีในการเพิ่มคุณสมบัตินาฬิกาดังกล่าว ตัวอย่างเช่นลองนึกถึงอินพุต x ของความยาว n สลับกันเรียกใช้คำสั่งหนึ่งของ "อัลกอริทึมหลัก" ที่มีสัญญาณนาฬิกาจากนั้นหนึ่งคำสั่งของอัลกอริทึมต่อไปนี้ซึ่งเสร็จสิ้นใน (ใกล้เคียง) n ^ k ขั้นตอน:
สำหรับ i_1 = 1 ถึง n สำหรับ i_2 = 1 ถึง n ... สำหรับ i_k = 1 ถึง n ไม่มี-op; กลับ;
หากโค้ดข้างต้นส่งคืนก่อนที่อัลกอริทึมหลักหยุดให้หยุดการคำนวณทั้งหมด (พูดพร้อมกับปฏิเสธ)
อัลกอริทึมที่ตัดสินว่า NTM เป็นของรูปแบบนี้หรือไม่หากตีความว่าเป็นความพยายามในอัลกอริทึมในการตัดสินใจว่าอินพุตนั้นเป็นโพลีไทม์ NTM หรือไม่จะรายงานว่ามีบางเนกาทีฟที่ผิดพลาด: พวกเขาจะไม่สลับการดำเนินการหนึ่งคำสั่งของอัลกอริทึมที่มีหนึ่งคำสั่งของนาฬิกาเช่นรหัสข้างต้น (ดังนั้นจะถูกปฏิเสธแม้จะเป็นโพลีเวลา)
แต่ไม่มีผลบวกปลอม หาก NTM ผ่านการทดสอบก็จะหยุดในเวลาพหุนามดังนั้นจึงกำหนดภาษา NP บางอย่าง อย่างไรก็ตามบางครั้งพฤติกรรมของอัลกอริธึมพื้นฐานของมันอาจเปลี่ยนแปลงหากบางครั้งนาฬิกาหมดก่อนที่อัลกอริทึมหลักจะหยุดทำให้การคำนวณปฏิเสธแม้ว่าอัลกอริธึมหลักอาจยอมรับถ้าให้เวลาพอที่จะทำให้เสร็จ ดังนั้นภาษาที่เลือกอาจแตกต่างจากอัลกอริทึมหลัก แต่และนี่คือกุญแจหากอัลกอริธึมหลักที่ถูกดำเนินการในความเป็นจริงอัลกอริทึมแบบพหุนามเวลาทำงานในเวลา p (n) และถ้าค่าคงที่ k ในนาฬิกามีขนาดใหญ่พอที่ n ^ k> p (n) อัลกอริทึมหลักจะหยุดก่อนที่นาฬิกาจะหมด ในกรณีนี้คำตอบของอัลกอริทึมหลักจะไม่เปลี่ยนแปลงดังนั้นอัลกอริธึมหลักและการจำลอง NTM แบบโอเวอร์คล็อกจึงทำการตัดสินใจภาษา NP เดียวกัน
ทำไมสิ่งนี้จึงสำคัญ ซึ่งหมายความว่าเป็นไปได้ที่จะ "แจกแจงภาษา NP ทั้งหมด" (ซึ่งฉันบอกว่าอยู่ในวรรณกรรมมักจะไม่ถูกต้องตามที่ระบุไว้ใน "การตัดสินใจว่า NTM ที่กำหนดเป็นโพลีเวลา" หรือ "แจกแจงโพลีเวลา NTM ทั้งหมด") แม่นยำยิ่งขึ้นเป็นไปได้ที่จะแจกแจงรายการไม่มีที่สิ้นสุดของ M_1 M_2, ... ของ NTM ด้วยคุณสมบัติที่
สิ่งที่ไม่ได้เกิดขึ้นคือNTM พหุนามทุกเวลาอยู่ในรายการ แต่ภาษา NP แต่ละภาษามีจำนวน NTM ที่ไม่สิ้นสุดที่เป็นตัวแทนของมัน ดังนั้นภาษา NP แต่ละภาษารับประกันว่าจะมีตัวแทน NTM บางส่วนในรายการโดยเฉพาะอย่างยิ่ง NTM ทั้งหมดที่มีดัชนีขนาดใหญ่เพียงพอที่ k ที่ n ^ k เกินเวลาทำงานของ M_k
สิ่งนี้มีประโยชน์สำหรับการทำลูกเล่นเช่น diagonalization ซึ่งต้องการอัลกอริธึมแจงนับรายการ infinite (หรือไม่ จำกัด ) ของภาษา NP ทั้งหมด และแน่นอนการสนทนาทั้งหมดนี้นำไปใช้กับเครื่องจักรประเภทอื่น ๆ นอกเหนือจากโพลีไทม์ NTMs เช่นโพลีกำหนดเวลา TM