MathLabs
Định lýĐã chứng minh

Tính không giải được của bài toán dừng

Phát biểu

Không tồn tại thuật toán nào, khi nhận một chương trình (máy Turing) PP và đầu vào xx bất kỳ, luôn quyết định đúng trong thời gian hữu hạn xem PP có dừng khi chạy trên xx hay không.

Vì sao đúng?

Giả sử tồn tại bộ quyết định dừng HH như vậy. Xây dựng chương trình DD mà, với đầu vào là một chương trình QQ, chạy HH để kiểm tra xem QQ có dừng khi chạy trên chính nó hay không, rồi làm điều ngược lại (lặp mãi nếu QQ dừng, dừng nếu QQ lặp mãi). Chạy DD với chính nó làm đầu vào dẫn tới mâu thuẫn dù theo hướng nào, nên HH không thể tồn tại.

Phác thảo chứng minh

Lập luận đường chéo: giả sử tồn tại bộ quyết định H(P,x)H(P,x) cho biết PP có dừng trên xx hay không; định nghĩa D(P)=D(P) = 'lặp mãi' nếu H(P,P)H(P,P) trả lời 'dừng', ngược lại 'dừng'; rồi tự hỏi D(D)D(D) có dừng không. Nếu nó dừng thì theo định nghĩa H(D,D)H(D,D) đã trả lời 'lặp mãi', mâu thuẫn; nếu nó lặp mãi thì H(D,D)H(D,D) đã trả lời 'dừng', cũng mâu thuẫn. Vậy HH không thể tồn tại.

Người chứng minh

Chủ đề chứa định lý này

Định lý liên quan

Chứng minh từng bước

Chưa có chứng minh từng bước cho định lý này.

Tài liệu tham khảo

  1. Alan M. Turing (1936). On Computable Numbers, with an Application to the Entscheidungsproblem · DOI:10.1112/plms/s2-42.1.230
  2. Michael Sipser (2012). Introduction to the Theory of Computation