Đối với mọi hàm tính toán đều tồn tại một vấn đề có thể giải quyết tốt nhất trong thời gian hoặc có một hàm tính toán sao cho mọi vấn đề có thể giải quyết trong cũng có thể được giải quyết trong thời gian ?
Câu hỏi này xuất hiện trong đầu tôi ngày hôm qua. Tôi đã suy nghĩ về nó một chút bây giờ, nhưng không thể tìm ra nó. Tôi thực sự không biết làm thế nào tôi google cho điều này, vì vậy tôi hỏi ở đây. Đây là những gì tôi nghĩ ra:
Suy nghĩ đầu tiên của tôi là câu trả lời là có: Với mọi hàm tính toán , vấn đề "Đầu ra chấm" (hoặc tạo một chuỗi có dấu chấm hoặc bất cứ điều gì) rõ ràng không thể giải quyết được trong thời gian. Vì vậy, chúng ta chỉ cần chỉ ra rằng nó có thể được giải quyết trong thời gian . Không có vấn đề, chỉ cần lấy mã giả sau đây:
x = f(n)
for i from 1 to x:
output(".")
Rõ ràng thuật toán đó giải quyết vấn đề đã nêu. Và đó là thời gian chạy là rõ ràng trong , vì vậy vấn đề giải quyết. Điều đó thật dễ dàng, phải không? Ngoại trừ không, không phải vì bạn phải xem xét chi phí của dòng đầu tiên. Thời gian chạy thuật toán trên của duy nhất là trong nếu thời gian cần thiết để tính toán là . Rõ ràng điều đó không đúng với tất cả các chức năng 1 .
Vì vậy, cách tiếp cận này đã không đưa tôi đến bất cứ nơi nào. Tôi rất biết ơn cho bất cứ ai chỉ cho tôi đi đúng hướng để tìm ra điều này đúng.
1 Hãy xem xét ví dụ hàm . Rõ ràng O ( p ( n ) ) = O ( 1 ) , nhưng không có thuật toán nào tính được p trong thời gian O ( 1 ) .