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) và đầu vào bất kỳ, luôn quyết định đúng trong thời gian hữu hạn xem có dừng khi chạy trên hay không.
Vì sao đúng?
Giả sử tồn tại bộ quyết định dừng như vậy. Xây dựng chương trình mà, với đầu vào là một chương trình , chạy để kiểm tra xem 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 dừng, dừng nếu lặp mãi). Chạy 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 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 cho biết có dừng trên hay không; định nghĩa 'lặp mãi' nếu trả lời 'dừng', ngược lại 'dừng'; rồi tự hỏi có dừng không. Nếu nó dừng thì theo định nghĩa đã trả lời 'lặp mãi', mâu thuẫn; nếu nó lặp mãi thì đã trả lời 'dừng', cũng mâu thuẫn. Vậy 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
- Alan M. Turing (1936). On Computable Numbers, with an Application to the Entscheidungsproblem · DOI:10.1112/plms/s2-42.1.230
- Michael Sipser (2012). Introduction to the Theory of Computation