Nếu vấn đề tạm dừng quá mơ hồ, hãy nghĩ về nó theo cách này.
Đi một vấn đề toán học mà được tin là đúng đối với tất cả các số nguyên dương của n , nhưng chưa được chứng minh là đúng đối với mỗi n . Một ví dụ điển hình sẽ là phỏng đoán của Goldbach , rằng bất kỳ số nguyên dương nào lớn hơn hai có thể được biểu diễn bằng tổng của hai số nguyên tố. Sau đó (với một thư viện bigint thích hợp) chạy chương trình này (mã giả theo sau):
for (BigInt n = 4; ; n+=2) {
if (!isGoldbachsConjectureTrueFor(n)) {
print("Conjecture is false for at least one value of n\n");
exit(0);
}
}
Việc thực hiện isGoldbachsConjectureTrueFor()
được để lại như một bài tập cho người đọc nhưng với mục đích này có thể là một phép lặp đơn giản trên tất cả các số nguyên tố ít hơnn
Bây giờ, về mặt logic ở trên phải tương đương với:
for (; ;) {
}
(tức là một vòng lặp vô hạn) hoặc
print("Conjecture is false for at least one value of n\n");
theo phỏng đoán của Goldbach phải đúng hoặc không đúng. Nếu một trình biên dịch luôn có thể loại bỏ mã chết, chắc chắn sẽ có mã chết để loại bỏ ở đây trong cả hai trường hợp. Tuy nhiên, khi làm như vậy ít nhất trình biên dịch của bạn sẽ cần phải giải quyết các vấn đề khó khăn tùy ý. Chúng tôi có thể cung cấp những vấn đề có thể chứng minh khó khăn mà nó sẽ phải giải quyết (vấn đề ví dụ như NP-đầy đủ) để xác định chút mã để loại bỏ. Ví dụ: nếu chúng tôi thực hiện chương trình này:
String target = "f3c5ac5a63d50099f3b5147cabbbd81e89211513a92e3dcd2565d8c7d302ba9c";
for (BigInt n = 0; n < 2**2048; n++) {
String s = n.toString();
if (sha256(s).equals(target)) {
print("Found SHA value\n");
exit(0);
}
}
print("Not found SHA value\n");
chúng tôi biết rằng chương trình sẽ in ra "Giá trị SHA được tìm thấy" hoặc "Không tìm thấy giá trị SHA" (điểm thưởng nếu bạn có thể cho tôi biết cái nào là đúng). Tuy nhiên, để một trình biên dịch có thể tối ưu hóa một cách hợp lý sẽ có thứ tự lặp lại 2 ^ 2048. Thực tế nó sẽ là một sự tối ưu hóa tuyệt vời khi tôi dự đoán chương trình trên sẽ (hoặc có thể) chạy cho đến khi cái chết nóng của vũ trụ thay vì in bất cứ thứ gì mà không tối ưu hóa.