Có những chương trình không bao giờ dừng lại và không có bằng chứng không chấm dứt?


23

Giống như lỗ đen trong khoa học máy tính. Chúng ta chỉ có thể biết chúng tồn tại nhưng khi chúng ta có một trong số chúng, chúng ta sẽ không bao giờ biết đó là một trong số chúng.


1
Quyết định bài toán tạm dừng ít nhất cũng khó như các định lý chứng minh (đưa ra một định lý bạn có thể chỉ cần viết một chương trình như thế , chương trình chấm dứt khi và chỉ khi định lý là đúng). Nếu không có những chương trình như vậy, điều đó có nghĩa là bạn có thể chứng minh tất cả các định lý, vốn nổi tiếng là sai. Tif T is true then halt else loop forever
Bakuriu

@Bakuriu: Bạn sẽ viết if T is truenhư thế nào?
ruakh

@ruakh: Phương pháp truyền thống làFor each string S in the (countable) universe of possible strings: If S is a syntactically valid proof of T, halt.
Quuxplusone

@Quuxplusone: Vâng, vâng, nhưng điều đó dường như không phù hợp với công trình của Bakuriu. . .
ruakh

Điều này là thú vị, nhưng ngoài kiến ​​thức của tôi. Bạn có thể giải thích, xin vui lòng?
Evorlor

Câu trả lời:


23

Có những chương trình thực sự như thế này. Để chứng minh điều này, hãy giả sử ngược lại rằng đối với mọi máy không dừng lại, có một bằng chứng là nó không dừng lại.

Các bằng chứng này là các chuỗi có độ dài hữu hạn, vì vậy chúng ta có thể liệt kê tất cả các bằng chứng về độ dài nhỏ hơn cho một số s .SS

Sau đó, chúng ta có thể sử dụng điều này để giải quyết vấn đề tạm dừng như sau: Cho Turing Machine và đầu vào x , chúng tôi sử dụng thuật toán sau:Mx

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

Nếu dừng trên đầu vào x , thì nó dừng trong một số bước hữu hạn s , vì vậy thuật toán của chúng tôi chấm dứt.MxS

Nếu không ngừng trên đầu vào x , sau đó theo giả thiết của chúng tôi, có một số bằng chứng chiều dài s nơi có một bằng chứng cho thấy M không làm dừng lại. Vì vậy, trong trường hợp này, thuật toán của chúng tôi luôn chấm dứt.MxSM

Vì vậy, chúng tôi có một thuật toán quyết định vấn đề Dừng luôn luôn chấm dứt. Nhưng chúng tôi biết điều này không thể tồn tại, vì vậy, giả định của chúng tôi rằng luôn có bằng chứng về việc không tạm dừng phải là sai.


2
Tôi nghĩ rằng một dạng yếu hơn của định lý bất toàn của Godel cũng xuất phát từ điều này. Về cơ bản là có tồn tại những điều đó là sự thật nhưng không thể được chứng minh. Đây là một trong những thí nghiệm suy nghĩ yêu thích mới của tôi.
Jake

Bạn có nghĩ rằng cố gắng chứng minh P = NP hoặc cố gắng tìm một số hoàn hảo kỳ lạ có thể là một trong những chương trình này không?
Otakar Molnár López

1
Điều đó không thực sự có ý nghĩa bởi vì các chương trình không kết thúc không phải là bằng chứng cũng không phải là số nhưng ý tưởng bạn đang có đã được đưa ra. Một số người nói rằng PvsNP là không thể chứng minh
Jake

1
@Jake Tôi tin rằng một phần động lực của máy Turing là sự thể hiện rõ ràng hơn về ý tưởng đằng sau định lý của Godel.
cpast

6

Đối với một ví dụ cụ thể hơn, chúng ta hãy giả sử rằng lý thuyết mà chúng ta đang sử dụng cho các bằng chứng của mình có các tính năng sau (khá hợp lý, IMO):

  1. Nó là phù hợp ; đó là, nó không thể chứng minh một mâu thuẫn.
  2. Tập hợp tiên đề của nó là vô số đệ quy.
  3. Bằng chứng của nó có thể được viết ra dưới dạng bitstr hữu hạn.
  4. Câu hỏi liệu một chuỗi nhất định có mã hóa một bằng chứng đúng đắn và chính xác trong chuỗi đó có thể quyết định bằng thuật toán trong thời gian hữu hạn hay không.
  5. Nó đủ biểu cảm để thừa nhận một bằng chứng về định lý bất toàn thứ hai của Gôdel , nói rằng nó không thể chứng minh tính nhất quán của chính nó.

Với những giả định đó, chương trình sau sẽ không bao giờ dừng lại, nhưng không thể được chứng minh (trong phạm vi của lý thuyết chúng tôi đang sử dụng) không dừng lại:

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.

Chi tiết chính ở đây là giả định đầu tiên ở trên, cụ thể là lý thuyết chúng tôi đang sử dụng cho các bằng chứng của chúng tôi là phù hợp. Rõ ràng, chúng ta cần phải giả sử điều này, để chứng minh của chúng ta có giá trị bất cứ điều gì, nhưng định lý không hoàn chỉnh thứ hai của Gôdel nói rằng, đối với bất kỳ lý thuyết axiomatized hợp lý và hiệu quả nào, chúng ta thực sự không thể chứng minh điều này (ngoại trừ trong một số lý thuyết khác , khi đó chúng ta có sự nhất quán cần giả định, v.v.).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.