มีโปรแกรมที่ไม่เคยหยุดและไม่มีข้อพิสูจน์ที่ไม่สิ้นสุดหรือไม่?


23

เหมือนหลุมดำในวิทยาการคอมพิวเตอร์ เราสามารถรู้ได้ว่ามีอยู่จริง แต่เมื่อเรามีหนึ่งในนั้นเราจะไม่มีทางรู้ว่ามันเป็นหนึ่งในนั้น


1
การตัดสินใจหยุดชะงักของปัญหาอย่างน้อยก็ยากเท่าการพิสูจน์ทฤษฎีบท (เนื่องจากทฤษฎีบทTคุณสามารถเขียนโปรแกรมเช่นif T is true then halt else loop foreverนั้นได้โปรแกรมจะยุติถ้าทฤษฎีบทนั้นเป็นจริง) หากไม่มีโปรแกรมดังกล่าวก็หมายความว่าคุณสามารถพิสูจน์ทฤษฎีบททั้งหมดซึ่งเป็นที่รู้จักกันดีว่าเป็นเท็จ
Bakuriu

@Bakuriu: คุณจะเขียนยังif T is trueไง?
ruakh

@ruakh: วิธีการแบบดั้งเดิมคือFor each string S in the (countable) universe of possible strings: If S is a syntactically valid proof of T, halt.
Quuxplusone

@Quuxplusone: ใช่ แต่ดูเหมือนจะไม่เหมาะกับการก่อสร้างของ Bakuriu . .
ruakh

สิ่งนี้น่าสนใจ แต่เกินความรู้ของฉัน กรุณาอธิบายเพิ่มเติมหน่อยได้ไหม?
Evorlor

คำตอบ:


23

มีโปรแกรมเช่นนี้แน่นอน เพื่อพิสูจน์สิ่งนี้เราสมมุติว่าตรงกันข้ามกับทุกเครื่องที่ไม่หยุดมีหลักฐานที่ไม่หยุด

พิสูจน์เหล่านี้เป็นสตริงที่มีความยาว จำกัด เพื่อให้เราสามารถระบุพิสูจน์ทั้งหมดของความยาวน้อยกว่าสำหรับบางจำนวนเต็มssss

จากนั้นเราสามารถใช้สิ่งนี้เพื่อแก้ปัญหาการหยุดพักดังต่อไปนี้: เนื่องจากเครื่องทัวริงและอินพุตเราใช้อัลกอริทึมต่อไปนี้:xMx

s := 0
while (True)
    test if machine M halts on input x in s steps
    look at all proofs of length s and see if they prove M doesn't halt on input x
    set s := s + 1

หากหยุดกับการป้อนข้อมูลแล้วก็หยุดในบางจำนวน จำกัด ของขั้นตอนเพื่อสิ้นสุดขั้นตอนวิธีการของเราx sMxs

หากไม่หยุดที่อินพุตจากนั้นโดยสมมติฐานของเรามีความยาวการพิสูจน์ที่มีการพิสูจน์ว่าไม่หยุด ดังนั้นในกรณีนี้อัลกอริทึมของเราจะสิ้นสุดลงเสมอx s MMxsM

ดังนั้นเราจึงมีอัลกอริทึมในการตัดสินใจปัญหาการหยุดชะงักซึ่งจะสิ้นสุดลงเสมอ แต่เรารู้ว่าสิ่งนี้ไม่สามารถเกิดขึ้นได้ดังนั้นสมมติฐานของเราว่าการพิสูจน์ว่าไม่มีการหยุดพักต้องเป็นเท็จเสมอ


2
ฉันคิดว่าทฤษฎีบทความไม่สมบูรณ์ที่ไม่สมบูรณ์ของ godel อ่อนแอลงตามมาจากเรื่องนี้เช่นกัน โดยพื้นฐานแล้วมีสิ่งต่าง ๆ ที่เป็นจริง แต่ไม่สามารถพิสูจน์ได้ นี่เป็นหนึ่งในการทดลองความคิดใหม่ที่ฉันโปรดปราน
Jake

คุณคิดว่าการพยายามพิสูจน์ P = NP หรือพยายามหาตัวเลขสมบูรณ์แบบแปลก ๆ อาจเป็นหนึ่งในโปรแกรมเหล่านี้หรือไม่?
Otakar MolnárLópez

1
มันไม่สมเหตุสมผลนักเนื่องจากโปรแกรมที่ไม่ได้จบการทำงานนั้นไม่ได้เป็นบทพิสูจน์หรือเป็นตัวเลข แต่เป็นแนวคิดที่คุณได้รับ บางคนบอกว่า PvsNP ไม่สามารถพิสูจน์ได้
Jake

1
@ เจคฉันเชื่อว่าส่วนหนึ่งของแรงจูงใจของเครื่องจักรทัวริงคือการแสดงออกอย่างชัดเจนของแนวคิดเบื้องหลังทฤษฎีของ Godel
cpast

6

สำหรับตัวอย่างที่เป็นรูปธรรมมากขึ้นให้เราสมมติว่าทฤษฎีที่เราใช้สำหรับการพิสูจน์ของเรามีคุณสมบัติดังต่อไปนี้ (ค่อนข้างสมเหตุสมผล IMO):

  1. มันเป็นเรื่องที่เป็นที่สอดคล้องกัน ; นั่นคือมันไม่สามารถพิสูจน์ได้ว่าความขัดแย้ง
  2. ชุดสัจพจน์ของมันนับซ้ำได้
  3. หลักฐานของมันสามารถเขียนลงในฐานะ bitstrings จำกัด
  4. คำถามที่ว่าสตริงที่กำหนดนั้นได้รับการพิสูจน์แล้วว่ามีรูปแบบที่ถูกต้องและถูกต้องหรือไม่นั้นจะถูกนำมาใช้ในเวลา จำกัด
  5. เป็นการแสดงออกที่เพียงพอที่จะยอมรับการพิสูจน์ทฤษฎีบทที่สองที่ไม่สมบูรณ์ของGödelซึ่งบอกว่ามันไม่สามารถพิสูจน์ความมั่นคงของตนเองได้

ด้วยสมมติฐานเหล่านี้โปรแกรมต่อไปนี้จะไม่หยุด แต่ไม่สามารถพิสูจน์ได้ (ภายในขอบเขตของทฤษฎีที่เราใช้) ไม่ให้หยุด:

let k := 0;
repeat:
    let k := k + 1;
    let s := binary expansion of k, excluding leading 1 bit;
while s does not encode a proof of a contradiction;
halt.

รายละเอียดที่สำคัญที่นี่เป็นข้อสมมติฐานแรกข้างต้นกล่าวคือทฤษฎีที่เราใช้สำหรับการพิสูจน์ของเรานั้นสอดคล้องกัน เห็นได้ชัดว่าเราจำเป็นต้องสันนิษฐานว่าสิ่งนี้เพื่อพิสูจน์ให้เห็นว่ามีค่าอะไร แต่ทฤษฎีบทความไม่สมบูรณ์ที่สองของGödelบอกว่าสำหรับทฤษฎีที่แสดงออกอย่างมีเหตุผลและมีประสิทธิภาพเราไม่สามารถพิสูจน์เรื่องนี้ได้จริง (ยกเว้นในทฤษฎีอื่น ๆต้องสมมติ ฯลฯ ฯลฯ )

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