Đây là một đối số đơn giản để chỉ ra rằng chúng là không thể giải quyết được, tức là không có thuật toán nào để kiểm tra xem một thuật toán nhất định có tối ưu về thời gian chạy hay sử dụng bộ nhớ hay không.
Chúng tôi giảm vấn đề tạm dừng trên băng trống cho vấn đề của bạn về sự tối ưu thời gian chạy.
Đặt là một máy Turing đã cho. Đặt N là máy Turing sau:M
: trên đầu vào n
1. Chạy M trên băng trống cho (nhiều nhất) n bước.
2. Nếu M không dừng lại ở n bước, hãy chạy một vòng có kích thước 2 n , sau đó trả về NO.
3. Nếu không, hãy trả về CÓ.Nn
Mn
Mn2n
Có hai trường hợp:
Nếu không dừng trên băng trống, máy N sẽ chạy trong các bước Θ ( 2 n ) trên đầu vào n . Vì vậy, thời gian chạy của nó là Θ ( 2 n ) . Trong trường hợp này, N rõ ràng là không tối ưu.MNΘ(2n)nΘ(2n)N
Nếu dừng trên băng trống, thì máy N sẽ chạy với số bước không đổi cho tất cả n đủ lớn , vì vậy thời gian chạy là O ( 1 ) . Trong trường hợp này, N rõ ràng là tối ưu.MNnO(1)N
Nói ngắn gọn:
M halts on blank tape ⇔N is optimial
MNNM
Một đối số tương tự có thể được sử dụng cho không gian, tức là cũng không thể kiểm tra được nếu một máy Turing cụ thể có tối ưu về không gian mà nó sử dụng hay không.
Ngay cả một tuyên bố mạnh mẽ hơn cũng đúng: chúng ta không thể quyết định xem một hàm tính toán nhất định có bị giới hạn trên về độ phức tạp thời gian của việc tính toán một hàm tính toán nhất định hay không. Tương tự cho không gian. Tức là lý thuyết phức tạp cơ bản thậm chí không thể được tự động hóa bằng các thuật toán (có thể được coi là một tin tốt cho các nhà lý thuyết phức tạp;).