Tính không quyết định của bài toán dừng
Phát biểu
Không tồn tại thuật toán mà, với mọi chỉ số chương trình và đầu vào , luôn dừng và cho ra chính xác việc (chạy chương trình trên đầu vào ) có dừng hay không.
Vì sao đúng?
Đây là lý do toán học vì sao không phần mềm diệt vi-rút, trình biên dịch, hay IDE nào có thể phát hiện hoàn hảo vòng lặp vô hạn, mã chết, hay "hàm này luôn lỗi" một cách tổng quát — không phải giới hạn kỹ thuật hiện tại, mà là một bức tường toán học cứng.
Phác thảo chứng minh
Giả sử phản chứng tồn tại bộ quyết định : nếu (dừng) và nếu (chạy mãi), và bản thân luôn dừng với đáp án đúng.
Dùng , xây một chương trình mới mà, với đầu vào : tính ; nếu , thì vào vòng lặp vô hạn; nếu , thì dừng ngay. được xây hiệu quả từ (chỉ là cộng một câu lệnh if và một vòng lặp), nên nó có chỉ số chương trình nào đó , tức .
Giờ đặt câu hỏi tự quy chiếu: có dừng không?
Trường hợp 1: nếu dừng, thì theo tính đúng của , . Nhưng theo định nghĩa của , làm chạy mãi ở đầu vào — tức không dừng. Mâu thuẫn.
Trường hợp 2: nếu không dừng, thì theo tính đúng của , . Nhưng theo định nghĩa của , làm dừng ở đầu vào — tức có dừng. Mâu thuẫn.
Cả hai trường hợp đều mâu thuẫn, nên giả thiết tồn tại là sai. Bài toán dừng không quyết định được.
Chủ đề chứa định lý này
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
- Wikipedia contributors (2024). Halting problem
- Wikipedia contributors (2024). Rice's theorem
- Wikipedia contributors (2024). Ackermann function