7 ms·
An oracle is basically any device/API that you can plug into a Turing Machine to give you the answer to some problem. You can have an oracle to answer the quest
by woolion 2y ago
An oracle is basically any device/API that you can plug into a Turing Machine to give you the answer to some problem.
You can have an oracle to answer the question "what is the optimal path that visits all these points" (an NP-complete problem) or even "does this program have an input that makes it loop infinitely" (an undecidable problem).
The point is simply to explore the consequences regarding computability and complexity if Turing machines can access such oracles. By definition, a machine with access to the first type of oracle gives you a O(1) solution to any NP-complete problem. But how does it react on more complicated problems, such as NEXP-TIME (non-deterministic exponential time) or PSPACE (polynomial space)? Does it even help or not?
The idea is to test different class of problems with different classes of oracles to create analogs of the complexity hierarchy.
The hope is that the relationships between these analogs provide a deeper understanding of the standard hierarchy.