คำถามนี้เกิดขึ้นกับฉันเกี่ยวกับปัญหาการหยุดชะงักและฉันไม่สามารถหาคำตอบที่ดีทางออนไลน์ได้โดยสงสัยว่ามีใครสามารถช่วยได้บ้าง
เป็นไปได้หรือไม่ว่าปัญหาการหยุดชะงักนั้นสามารถตัดสินใจได้สำหรับ TM ใด ๆ บนอินพุตใด ๆ ตราบใดที่อินพุตไม่ใช่ TM เอง? โดยทั่วไป:
Halts(TM, I)
IF TM == I:
Undecidable, return a random result/throw an exception, whatever
ELSE:
Solve the problem
Halts'(X)
IF Halts(X, X):
Loop infinitely
ELSE:
Print 'done'
สิ่งนี้ดูเหมือนจะช่วยแก้ไขความขัดแย้ง เมื่อเราเรียก Halts ที่ขัดแย้งกัน (Halts ') เราไม่สามารถคาดหวังพฤติกรรมที่สอดคล้องกันได้ แต่การโทรไปยัง Halts (และ Halts') อื่น ๆ นั้นถูกต้องตามกฎหมายและสามารถแก้ไขได้
ฉันเข้าใจว่านี่ใช้งานง่ายมาก หากรูปแบบบางอย่างในบิตสามารถเปิดเผยพฤติกรรมของโปรแกรมที่เป็นไปได้ทั้งหมดทำไมมันถึงแตกสลายเมื่อ TM และอินพุตตรงกัน? แต่เราสามารถกำจัดสิ่งนี้ในทางคณิตศาสตร์ได้หรือไม่?
และปัญหาการหยุดชะงักที่ลดลงนี้จะไม่ทำให้ไม่น่าสนใจเลย แม้ว่าจะมีโปรแกรมที่มีความหมายบางอย่างที่เอารหัสของตัวเองมาเป็นอินพุทมันอาจจะถูกเขียนใหม่เพื่อทำงานกับอินพุตที่ต่างกันเล็กน้อย แน่นอนข้อเสนอแนะนี้ทำให้เข้าใจน้อยลงว่าทำไมการแก้ปัญหาการหยุดชะงักอาจเกิดขึ้นกับข้อแม้นี้ แต่อีกครั้งเราจะกำจัดความเป็นไปได้ทางคณิตศาสตร์ได้หรือไม่?
ขอบคุณสำหรับความช่วยเหลือ