ในกรณีทั่วไปเป็นไปไม่ได้ที่จะสร้างอัลกอริทึมที่ยืนยันว่าอัลกอริทึมนั้นเทียบเท่ากับสเปคหรือไม่ นี่คือหลักฐานที่ไม่เป็นทางการ:
เกือบทุกภาษาโปรแกรมทัวริงเสร็จสมบูรณ์ ดังนั้นภาษาใดก็ตามที่ TM ตัดสินใจสามารถถูกตัดสินโดยโปรแกรมที่เขียนด้วยภาษานี้
ปัญหาในการพิจารณาว่า TM สองตัวยอมรับภาษาเดียวกันหรือไม่ซึ่งเรียกว่านั้นไม่สามารถตัดสินใจได้ ผลที่ตามมาของทัวริงครบถ้วนถือเดียวกันสำหรับโปรแกรมของภาษาที่กำหนด กล่าวอีกนัยหนึ่งคือไม่สามารถตัดสินใจได้ว่าอินพุตที่คุณต้องการให้โปรแกรมของคุณยอมรับหรือไม่และอินพุตนั้นเหมือนกันจริงหรือไม่Equivalence/TM
นอกจากนี้นั้นไม่สามารถเรียกซ้ำได้ นั่นเป็นเพราะ (ระบุว่า TM ยอมรับอย่างน้อยหนึ่งอินพุต) หรือไม่นั้นเป็นภาษาที่ยอมรับได้เนื่องจากคุณสามารถวนซ้ำอินพุตที่เป็นไปได้ทั้งหมด หาก TM ไม่ว่างเปล่าในที่สุดคุณจะพบคำที่เป็นที่ยอมรับ ดังนั้นจึงไม่สามารถยอมรับได้มิฉะนั้นจะสามารถตัดสินใจได้ (ซึ่งเรารู้ว่ามันไม่ใช่) อย่างไรก็ตามความว่างเปล่า / TM สามารถลดลงเป็นดังนั้นจึงไม่สามารถยอมรับได้ ดังนั้นคุณสามารถใช้อัลกอริธึมว่าเครื่องสองเครื่องนั้นไม่เท่ากันหรือไม่ แต่คุณไม่สามารถแน่ใจได้ว่ามันเทียบเท่าหรือไม่ได้ให้อัลกอริทึมของคุณเพียงพอEquivalence/TMNon−emptiness/TMEmptiness/TMEmptiness/TMEquivalence/TMEquivalence/TM
อย่างไรก็ตามนี่เป็นเพียงกรณีทั่วไป เป็นไปได้ว่าคุณสามารถตัดสินใจได้ว่าข้อมูลจำเพาะนั้นเทียบเท่ากับโปรแกรมหรือไม่โดยการแก้ไขปัญหาที่ผ่อนคลายมากขึ้น ตัวอย่างเช่นคุณอาจตรวจสอบเพียงอินพุตจำนวนหนึ่งหรือพูดว่าโปรแกรมทั้งสองนั้นเทียบเท่ากับความไม่แน่นอน นี่คือสิ่งที่ทดสอบซอฟต์แวร์เกี่ยวกับ
สำหรับคำถามที่เหลือของคุณ:
หมายเหตุ: ส่วนนี้ได้รับการแก้ไขเพื่อความกระจ่าง ปรากฎว่าฉันทำผิดพลาดที่ฉันพยายามหลีกเลี่ยงขอโทษ
ให้เป็นชุดของภาษาที่เรารู้ว่าสามารถตัดสินใจได้ แน่นอนR จากนั้นหนึ่งสามารถพิสูจน์ต่อไปนี้:TrueRTrueR⊆R
ProvableR=TrueRtruer มันเป็นเรื่องง่ายที่จะเห็นว่าเซตที่แท้จริง แต่ก็ยังเป็นProvableR หลักฐานเป็นเรื่องง่ายมาก: Letแท้จริง ตามคำนิยามในทุกอินพุตส่งคืน YES หรือ NO ดังนั้นหยุดการทำงานทุกอินพุต มันตามที่ProvableRProvableR⊂TrueRTrueR⊂ProvableRAϵTrueRAAAϵProvableR
อย่างไม่เป็นทางการซึ่งสามารถสรุปได้ดังนี้: คุณไม่ทราบว่าภาษานั้นสามารถตัดสินใจได้จนกว่าคุณจะพิสูจน์ได้ว่าเป็น ดังนั้นหากในระบบที่เป็นทางการคุณมีความรู้ว่าภาษานั้นสามารถตัดสินใจได้ความรู้นี้สามารถใช้เป็นหลักฐานในการพิสูจน์ได้ ดังนั้นคุณไม่สามารถมีความรู้พร้อมกันว่าทั้งสองภาษาสามารถถอดรหัสได้และไม่สามารถพิสูจน์ได้ดังนั้นงบสองคำนี้จึงไม่สามารถเกิดขึ้นพร้อมกันได้
จุดสุดท้ายของฉันอยู่ที่ความรู้ของเราเป็นบางส่วนและว่าวิธีเดียวของการศึกษาคือผ่านProvableRความแตกต่างอาจสมเหตุสมผลในวิชาคณิตศาสตร์และเราสามารถรับรู้ได้ แต่เราไม่มีเครื่องมือในการศึกษา เนื่องจากเราถูกผูกมัดว่าจะไม่รู้จักทั้งหมดอย่างสมบูรณ์RProvableRProvableR⊂RR
@Kaveh สรุปว่าดีที่สุด: พิสูจน์ได้เสมอหมายถึงพิสูจน์ได้ในบางระบบ / ทฤษฎีและไม่ตรงกับความจริงโดยทั่วไป
การถือครองแบบเดียวกันสำหรับคลาสความซับซ้อนอื่น ๆ : ในการกำหนดความเป็นสมาชิกคุณต้องมีหลักฐานก่อน นี่คือเหตุผลที่ฉันเชื่อว่าคำถามที่สองของคุณกว้างเกินไปเนื่องจากมันมีเพียงทฤษฎีความซับซ้อนเท่านั้น แต่ยังรวมถึงทฤษฎีการคำนวณด้วยเช่นกันขึ้นอยู่กับคุณสมบัติที่คุณต้องการให้ภาษามี