जटिलता सिद्धांत में ओरेकल होने का सबसे आम तरीका इस प्रकार है: एक निश्चित ऑरेकल को कुछ सीमित संसाधनों के साथ एक ट्यूरिंग मशीन उपलब्ध कराई जाती है, और एक अध्ययन करता है कि ऑरेकल मशीन की कम्प्यूटेशनल शक्ति को कैसे बढ़ाता है।
हालांकि, एक और तरीका है जिसमें कभी-कभी ओर्कल्स होता है: इनपुट के हिस्से के रूप में । उदाहरण के लिए, मान लें कि मैं किसी दिए गए उच्च-आयामी पॉलीटॉप की मात्रा की गणना के लिए एल्गोरिदम का अध्ययन करना चाहता हूं। शास्त्रीय रूप से, पॉलीटोप को इसके पहलुओं की सूची या कुछ अन्य स्पष्ट प्रतिनिधित्व प्रदान करके निर्दिष्ट करने की आवश्यकता होगी। हालाँकि, हम एक बहुवचन की मात्रा की गणना करने की समस्या भी उत्पन्न कर सकते हैं जो एक मात्रा के द्वारा निर्दिष्ट की जाती है, कि अंतरिक्ष में एक बिंदु के निर्देशांक को इनपुट के रूप में लेता है और "हां" को आउटपुट करता है यदि और केवल यदि दिए गए बिंदु पॉलीटोप के अंदर स्थित है। फिर हम पूछ सकते हैं कि इस तरह से निर्दिष्ट एक पॉलीटॉप की मात्रा की गणना करने के लिए कौन से कम्प्यूटेशनल संसाधनों की आवश्यकता है। इस विशेष मामले में हमारे पास डायर, फ्रेज़ और कन्नन की बहुत अच्छी बहुपद समय सन्निकटन योजना है, और दिलचस्प रूप से जटिलता सिद्धांत बिंदु से, एक प्रमाण है कि यादृच्छिकता इस समस्या के लिए एक आवश्यक तरीके से मदद करती है, जिसमें कोई नियतात्मक एल्गोरिथ्म नहीं हो सकता है। डायर-फ्रीज़-कन्नन एल्गोरिदम के साथ-साथ प्रदर्शन करें।
क्या समस्याओं के जटिलता सिद्धांत का अध्ययन करने के लिए एक व्यवस्थित तरीका है जिसमें इनपुट के भाग के रूप में oracles प्रदान किया जाता है? क्या यह किसी तरह oracles के साथ जटिलता वर्गों के सामान्य सिद्धांत को कम करता है? मेरा अनुमान है कि नहीं, और यह कि बहुत सारे अलग-अलग तरीके हैं कि इनपुट के हिस्से के रूप में एक ओरेकल की आपूर्ति की जा सकती है, इस तरह की हर समस्या को तदर्थ तरीके से संभालना होगा। हालाँकि, मुझे इस बिंदु पर गलत साबित होने में खुशी होगी।