मैं Deutsch के एल्गोरिथ्म में क्वांटम ऑरेकल को कैसे लागू करूंगा?


13

मैं Deutsch के एल्गोरिथ्म (Deutsch-Josza एल्गोरिथम का प्राथमिक मामला) का अनुकरण करने की कोशिश कर रहा हूं, और मुझे पूरी तरह से यकीन नहीं है कि मैं एल्गोरिथ्म के उद्देश्य को पराजित किए बिना और एल्गोरिथ्म के लिए फ़ंक्शन के लिए आवश्यक क्वांटम ऑरेकल को लागू करने के बारे में कैसे जाऊंगा " इनपुट किए गए फ़ंक्शन क्या है, फ़ंक्शन का मूल्यांकन करके।


यह मददगार हो सकता है: quantumcomputing.stackexchange.com/a/2262/2645
meowzz

हर बार जब आप परीक्षण चलाते हैं तो इसे यादृच्छिक पर क्यों नहीं चुना जाता है? इस तरह आप जान नहीं सकते।
DaftWullie

@DaftWullie क्या आप प्रत्येक अनुकरण में यादृच्छिक पर एक समारोह चुनने की बात कर रहे हैं? समस्या अभी भी उठती है कि कंप्यूटर को यह जानना है कि इनपुट फ़ंक्शन के आउटपुट क्या हैं, आवश्यक फ़ंक्शन बनाने के लिए, क्वांटम ऑरेकल के माध्यम से।
जैक सेरोनी

हां, कंप्यूटर को जानने की जरूरत है, लेकिन आप इसे एक एकल फ़ंक्शन के लिए स्थानीय कर सकते हैं जो इनपुट क्वांटम राज्य के रूप में लेता है, और आउटपुट के रूप में एक क्वांटम राज्य देता है। केवल वह फ़ंक्शन इसे जानता होगा (और कुछ को इसे जानना होगा)। इसके अलावा, अगर यादृच्छिक पसंद उस फ़ंक्शन के लिए स्थानीय है, और हर बार इसे कॉल करने के लिए अलग है, तो यह इस तथ्य के साथ अच्छी तरह से बैठता है कि इसे केवल एक बार कॉल किया जाना चाहिए
DaftWullie

@DaftWullie यदि आप एक यादृच्छिक फ़ंक्शन की संपत्ति की गणना करते हैं, तो तुरंत एक यादृच्छिक उत्पादन क्यों नहीं करें?
नॉर्बर्ट शुच

जवाबों:


9

यहां दो सवाल हैं। पहला पूछता है कि आप वास्तव में इसे कोड में कैसे लागू कर सकते हैं, और दूसरा पूछता है कि क्या बात है अगर आपको पता है कि आप कौन से ओरेकल से गुजर रहे हैं।

कार्यान्वयन

संभवतः सबसे अच्छा तरीका एक फ़ंक्शन बनाना है IsBlackBoxConstantजो ऑरेकल को इनपुट के रूप में लेता है, फिर यह निर्धारित करने के लिए कि क्या यह निरंतर है, Deutsch Oracle प्रोग्राम चलाता है। यदि आप चाहें, तो आप यादृच्छिक पर ओरेकल का चयन कर सकते हैं। यहाँ यह Q # में लागू किया गया है:

operation IsBlackBoxConstant(blackBox: ((Qubit, Qubit) => ())) : (Bool)
{
    body
    {
        mutable inputResult = Zero;
        mutable outputResult = Zero;

        // Allocate two qbits
        using (qbits = Qubit[2])
        {
            // Label qbits as inputs and outputs
            let input = qbits[0];
            let output = qbits[1];

            // Pre-processing
            X(input);
            X(output);
            H(input);
            H(output);

            // Send qbits into black box
            blackBox(input, output);

            // Post-processing
            H(input);
            H(output);

            // Measure both qbits
            set inputResult = M(input);
            set outputResult = M(output);

            // Clear qbits before release
            ResetAll(qbits);
        }

        // If input qbit is 1, then black box is constant; if 0, is variable
        return One == inputResult;
    }
}

क्या बात है?

क्वेरी की जटिलता

कम्प्यूटेशनल जटिलता एक क्षेत्र है जो एल्गोरिदम को वर्गीकृत करने से संबंधित है संसाधनों की मात्रा के अनुसार वे इनपुट आकार के कार्य के रूप में उपभोग करते हैं। इन संसाधनों में समय (चरणों / निर्देशों में मापा जाता है), मेमोरी, और क्वेरी जटिलता नामक कुछ भी शामिल हैं । क्वेरी की जटिलता एक ब्लैक-बॉक्स ओरेकल फ़ंक्शन को क्वेरी करने के लिए एल्गोरिथ्म की संख्या से संबंधित है।

डिक्शनरी ओरेकल समस्या जटिलता सिद्धांतकारों के लिए दिलचस्प है क्योंकि क्वांटम एल्गोरिथ्म में केवल एक बार ब्लैक बॉक्स को क्वेरी करना है, लेकिन शास्त्रीय एल्गोरिथ्म को इसे दो बार क्वेरी करना होगा। सामान्यीकृत Deutsch-Josza समस्या के साथ, जहां एक -bit oracle में एक फ़ंक्शन होता है जो या तो स्थिर या संतुलित होता है, क्वांटम एल्गोरिथम को फिर से केवल एक बार क्वेरी करनी होती है लेकिन (निर्धारक) शास्त्रीय एल्गोरिथ्म में प्रश्नों की आवश्यकता होती है ।n2n1

यह ध्यान दिया जाना चाहिए कि एक संभाव्य शास्त्रीय एल्गोरिथ्म मौजूद है, जो से कम Deutsch-Josza समस्या को हल करता है बेतरतीब ढंग से नमूने के नमूने द्वारा प्रश्न: यदि ओरेकल उसी मूल्य को आउटपुट करना जारी रखता है, तो इनपुट कोई फर्क नहीं पड़ता, संभावना है कि दैवज्ञ निरंतर बढ़ता है बहुत जल्दी। इसका मतलब है कि क्वांटम वर्चस्व / लाभ की समस्या के लिए Deutsch-Josza एक अच्छा उम्मीदवार नहीं है, जो आगे बढ़ता है ...2n1

वास्तविक दुनिया में अनुप्रयोग

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

अगर हम एक-बिट Deutsch Oracle के सबसे सरल प्रतिनिधित्व को देखते हैं, तो गेट निर्माण निम्नानुसार है:

पहचान:C1,0

नकार:X0C1,0

लगातार -0:I4

लगातार -1:X0

हालांकि, ये किसी भी तरह से ओरेकल को लागू करने का एकमात्र तरीका नहीं हैं। इन सभी को सैकड़ों, हजारों, लाखों तर्क गेट्स का उपयोग करके फिर से लिखा जा सकता है! वह सभी मामले इन लॉजिक गेटों के संचयी प्रभाव के ऊपर के साधारण निर्माण के बराबर हैं। कॉन्स्टेंट -1 के निम्नलिखित वैकल्पिक कार्यान्वयन पर विचार करें:

H0Z0H0

यह पता चला है कि किसी भी इनपुट के लिए आप कभी भी दे सकते हैं:

H0Z0H0|ψ=X0|ψ

इसका कारण मैट्रिक्स गुणन की संबद्धता है। यदि आप लिए वास्तविक मैट्रिक्स और उन्हें एक साथ गुणा करते हैं, तो आपको मिलता है :H0Z0H0X0

H0Z0H0=[12121212][1001][12121212]=[0110]=X0

तो हमारे पास:

(H0(Z0(H0|ψ)))=(((H0Z0)H0)|ψ)=X0|ψ

तो आप सर्किट को (या कुछ और अधिक जटिल) में अपने क्वांटम Deutsch Oracle Oracle में बजाय पास कर सकते हैं , और एल्गोरिथ्म अभी भी काम करता है! यह आपको बताएगा कि ओरेकल स्थिर या परिवर्तनशील है, चाहे इसके इंटर्नल कितने जटिल हों। इसलिए एक एल्गोरिथ्म जो "धोखा" देता है और ब्लैक बॉक्स के अंदर दिखता है, उतना आसान समय नहीं है जितना आप सोच सकते हैं। आई के मामले पर विचार करें, इंटरनेट पर एक अजनबी, आपको निरंतर या परिवर्तनशील होने की गारंटी देने वाला एक बहुत ही जटिल सर्किट देता है जो आपसे पूछता है कि यह कौन सा है। इतनी आसानी से देखने से कुछ हल नहीं होता है!H0Z0H0X0

ऐतिहासिक और शैक्षणिक कारणों से महत्वपूर्ण

मुख्य रूप से, जर्मन ओरेकल समस्या ऐतिहासिक और शैक्षणिक कारणों से महत्वपूर्ण है। यह छात्रों को सिखाया गया पहला एल्गोरिथम है क्योंकि यह सबसे सरल है, और जब तक आप बहुत सारे प्रश्न नहीं पूछते हैं तब तक क्वांटम स्पीडअप प्रदर्शित करता है। यह साइमन की आवधिकता समस्या और फिर शोर के एल्गोरिथम सीखने के लिए एक अच्छे लॉन्चिंग बिंदु के रूप में भी कार्य करता है।


मैं तुम्हारे साथ था जब तक गॉटमैन-निल बात। आप अपने जटिल सर्किट को (i) वन-क्वैबिट गेट्स और (ii) स्टेबलाइजर गेट्स तक सीमित क्यों करते हैं?
नोर्बर्ट शुच

जैसा कि मैं इसे समझता हूं, यह निर्धारित करने के लिए कुशल एल्गोरिदम हैं कि क्या एक मनमाना क्वांटम सर्किट कई सरल शास्त्रीय सर्किटों में से एक को लागू करता है। क्वांटम लाभ के लिए अध्ययन किए जा रहे रैंडम सर्किट को अधिक जटिल व्यवहार की आवश्यकता होती है।
ahelwer

मुझे नहीं लगता कि यह सच है। अगर मैं गलत नहीं हूं, तो पूछें कि क्या दो सर्किट एक ही काम करते हैं क्यूएमए-पूर्ण। यह केवल क्लिफोर्ड द्वार के लिए आपका प्रतिबंध है जो गोट्समैन-नॉट के माध्यम से अनुकरणीयता की अनुमति देता है।
नोर्बर्ट शुच

आप सही हैं, मैं सर्किट में कमी की बात पर कुछ और शोध करूंगा और फिर गोट्समैन-न्यूल की भूमिका को स्पष्ट करने के लिए अपनी पोस्ट को अपडेट करूंगा।
ऐहेल्वर

मैंने रोबिन कोठारी से ईमेल पर कुछ सवाल पूछने के बाद अपना जवाब अपडेट किया ।
एहेल्वर

3

एक तरह से ओरेकल बनाने का कोई तरीका नहीं है जो Deutsch के एल्गोरिथ्म के बिंदु को नहीं हराएगा - यही कारण है कि यह एक ऑरेकल-आधारित एल्गोरिथ्म है।

xf(x)f(0)=f(1)

f(x)1xNf(x)yf(x+y)=f(x)f(x)

तो मुद्दा यह है कि ऑरेकल-आधारित एल्गोरिदम यह साबित करते हैं कि यदि आपको उस संरचना के साथ कोई समस्या है, तो आप एक गति प्राप्त कर सकते हैं (यानी जहां आप केवल किसी फ़ंक्शन की कुछ विशिष्ट संपत्ति सीखना चाहते हैं), लेकिन यह आपको यह नहीं बताता है कि क्या ऐसी समस्या मौजूद है।

इसलिए यदि आप Deutsch को लागू करना चाहते हैं, तो ऑरेकल करने का कोई भी तरीका ठीक है - यह एक "प्रूफ-ऑफ-थ्योरी" एल्गोरिथम है और वास्तविक समस्या पर वास्तविक स्पीड-अप प्राप्त नहीं करता है (कम से कम कोई भी हम नहीं जानते हैं)।



2

मेरे पास Deutsch के एल्गोरिदम के लिए एक उदाहरण नहीं है, लेकिन यहाँ और यहाँ दो ट्यूटोरियल हैं जो आपको Deutsch-Jozsa एल्गोरिथ्म को लागू करने और Q # में उपयोग होने वाले oracles के माध्यम से चलते हैं।

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

जाहिर है, यह अभी भी एक समस्या है जो बार-बार आने वाले एल्गोरिदम में होती है: एक मानव परीक्षण के कार्यान्वयन को देख सकता है और पास किए गए ओरेकल का पता लगा सकता है और यह पता लगा सकता है कि कौन सा ऑरेकल लागू किया गया है। जैसा कि DaftWullie ने सुझाव दिया था, यह ओरेकल पसंद को यादृच्छिक करके काउंटर किया जा सकता है।


1

मुझे लगता है कि ahelwerइसका उत्तर कुछ तरीकों पर है जो हम एल्गोरिदम की जटिलता के बारे में सोचते हैं। हालाँकि - यह देखते हुए कि हमारे पास वास्तविक दुनिया में "oracles" नहीं है जिसे हम क्वेरी करना चाहते हैं, आपको आश्चर्य हो सकता है कि हम क्वेरी जटिलता या ऑर्केल्स के विचार के बारे में चिंता क्यों करेंगे। मैं इस पर कुछ परिप्रेक्ष्य देने की कोशिश करूंगा, और विशेष रूप से यह वर्णन करने के लिए कि आप "Deutsch-Josza oracle" के निर्माण के तरीकों के बारे में सोचने की कोशिश कैसे कर सकते हैं, जैसा कि आप महसूस नहीं कर रहे हैं कि आप धोखा दे रहे हैं।

(जैसा कि Norbert Schuchइंगित करता है, Deutsch समस्या के लिए, जो कि Deutsch-Josza का प्राथमिक मामला है, अंतर्दृष्टि के लिए बहुत गुंजाइश नहीं है, लेकिन मुझे उम्मीद है कि oracles के बारे में आपका प्रश्न अधिक सामान्यतः लागू होता है। यही मैं यहां बात करूंगा।)

Oracles के बारे में एक अंतर्ज्ञान

एक दैवज्ञ की अवधारणा खुद को सरल बनाने की अनुमति देने का एक तरीका है कि हम कम्प्यूटेशनल समस्याओं के बारे में कैसे बात करते हैं।

एक दैवज्ञ की अवधारणा का मूल अनुप्रयोग काल्पनिक रूप से विचार करना था कि हम क्या कर सकते हैं यदि हम कठिन समस्याओं को, यहां तक ​​कि असंभव समस्याओं को हल कर सकते हैं, बिना यह किए कि हम सिद्धांत रूप में भी कैसे कर सकते हैं। लेकिन इन दिनों कम्प्यूटेशनल जटिलता में - विशेष रूप से क्वांटम कम्प्यूटेशन में, जैसे  कि Deutsch-जोज़ा, बर्नस्टीन-वाज़िरानी और अन्य ओरेकल समस्याओं के मामलों में - स्थिति अलग है: ओरेकल एक फ़ंक्शन का वर्णन करता है जो समस्या का आधार है। तथ्य यह है कि यह 'एक दैवज्ञ' है संरचना का एक तरीका है कि हम उस फ़ंक्शन का वर्णन कैसे करें जो समस्या के केंद्र में है: ऐसा नहीं है कि हमें कभी यह नहीं सोचना चाहिए कि फ़ंक्शन की गणना कैसे की जाती है, लेकिन यह जानकारी केवल भाग के रूप में प्रदान नहीं की गई है समस्या, और यह कि हम उस फ़ंक्शन से जुड़े समय या अन्य जटिलता से चिंतित नहीं हैं।

जब हम इस दृष्टिकोण को लेते हैं, तो हम वास्तव में ऐसे उत्तर प्राप्त कर सकते हैं जो गणना में बहुत कठिन प्रश्नों से संबंधित हैं। उदाहरण के लिए, आप हम नहीं जानते है कि या तो साबित करने के लिए कैसे पता कर सकते हैं पी  ≠  एनपी या पी  =  एनपी , लेकिन हम उस कर सकते हैं दिखाने के दैवज्ञ देखते हैं कि एक ऐसी है कि हम चाहते हैं कि दिखा सकते हैं पी  ≠  एनपी एक । एक समस्या का समाधान करने के लिए ओरेकल यहां क्या करता है, कंप्यूटर की मदद नहीं करता है (अधिक सटीक रूप से, एक नियतात्मक ट्यूरिंग मशीन या एक nondeterministic ट्यूरिंग मशीन) - यह उस समस्या का प्रतिनिधित्व करता है जिसे कंप्यूटर को हल करना चाहिए। तथ्य यह है कि हम कुछ उदाहरणों में दिखा सकते हैं कि पी  ≠  एनपी एक , मतलब नहीं है कि पी है वास्तव में से अलग एनपी : यह सिर्फ मतलब है कि सिर्फ nondeterminism का उपयोग कर वास्तव में करने के लिए गणना की एक मॉडल के लिए एक महत्वपूर्ण संसाधन है - यह आप कुशलतापूर्वक कुछ समस्याओं को हल करने की अनुमति देता है, और वहाँ कोई रास्ता नहीं है सामान्य रूप से एक नियतात्मक कंप्यूटर पर कुशलतापूर्वक नंदवादवाद का अनुकरण करना। इसलिए यदि आप A की गणना से संबंधित समस्या को हल करना चाहते हैं , तो आपको किसी भी फ़ंक्शन की संरचना के बारे में कुछ जानकारी की आवश्यकता होगी जो कुशलतापूर्वक A की गणना कर सकता है ।

यह उन मुख्य चीजों में से एक है जिनके बारे में oracles हैं: वे आपको उन तरीकों के बारे में बात करने की अनुमति देते हैं जो गणना के मॉडल समस्याओं को हल कर सकते हैं या नहीं कर सकते हैं , जब आपको समस्या के बारे में सीमित जानकारी प्रदान की जाती है।

गैर-ओरेकल समस्याओं को हल करने के लिए oracle एल्गोरिदम का उपयोग करना

Deutsch-जोज़ा एल्गोरिथ्म, या बर्नस्टीन-वाज़िरानी एल्गोरिथ्म, सिद्धांतों में नहीं एल्गोरिदम हैं जो कोई अपने स्वयं के लिए करता है। (खैर, वास्तव में नहीं - अगला खंड देखें।) वे ऐसे तरीकों के लिए खड़े होते हैं जिससे आप एक समस्या को हल कर सकते हैं । वे किन समस्याओं का समाधान करते हैं? वे आपको किसी ऐसे फ़ंक्शन की कुछ विशेषताओं की खोज करने की अनुमति देते हैं, जिसमें आप रुचि रखते हैं - चाहे वह निरंतर / संतुलित हो, या वेक्टर वेक्टर पर कुछ स्केलर-मूल्यवान रैखिक फ़ंक्शन में क्या जुड़ा हुआ है।

आप उन पर क्या कार्य करते हैं? - आप उन्हें किसी भी फ़ंक्शन पर प्रदर्शन करते हैं जिसके लिए आप उत्तर में रुचि रखते हैं।

ऑर्कल-आधारित एल्गोरिदम के रूप में इनका वर्णन बिंदु के बगल में है। ओरेकल समस्याएं मूल रूप से आपको यह जानने की अनुमति देती हैं कि, एक आदर्श क्वांटम कंप्यूटर के साथ, आप समस्या को हल कर सकते हैं, भले ही आप फ़ंक्शन के बारे में बहुत कम जानते हों , बशर्ते कि आप वास्तव में व्यवहार में फ़ंक्शन का कुशलता से मूल्यांकन कर सकते हैं। वास्तव में इस तरह के एक फ़ंक्शन का मूल्यांकन करने के लिए, निश्चित रूप से आपको ऐसा करने के लिए कुछ विवरण की आवश्यकता होगी, और इसलिए आपको ओरेकल सेटिंग की तुलना में अधिक जानकारी है; लेकिन यह आपको एक ही एल्गोरिथ्म का उपयोग करने से नहीं रोकता है।

जब आपको ओरेकल सेटिंग की तुलना में अधिक जानकारी होती है, तो क्या होता है कि अचानक ऐसे अन्य तरीके हैं जिनसे आप समस्या को हल करने में सक्षम हो सकते हैं। विशेष रूप से, यह समस्या को कुशलतापूर्वक शास्त्रीय रूप से हल करना संभव हो सकता है । (यह के साथ के रूप में ही अवलोकन है पी  ≠  एनपी एक : यह साबित होता है वहाँ समस्या है, जिसमें कर रहे हैं कि एनपी , जो किसी भी कुशल नियतात्मक एल्गोरिथ्म कम से कम की आवश्यकता होगी वास्तविक संरचनात्मक जानकारी हल करने के लिए सक्षम होने के लिए - ताकि जब आप एक विवरण प्रदान एक 'oracle' के बजाय एक कुशलता से कम्प्यूटेशनल फ़ंक्शन के लिए, यह संभव है कि समस्या अंदर होपी ।) इसका मतलब है कि क्वांटम एल्गोरिदम का शास्त्रीय एल्गोरिदम पर समान लाभ नहीं हो सकता है जो आपके द्वारा पेश की गई विशेष समस्या को हल करने में है - और वास्तव में यह हो सकता है कि शास्त्रीय दृष्टिकोण बेहतर है (विशेष रूप से हमारे पास वर्तमान में मौजूद उपकरणों के साथ)।

अंत में, सिर्फ इसलिए कि आपके पास कुछ हल करने के लिए क्वांटम एल्गोरिदम है, इसका मतलब यह नहीं है कि यह जरूरी है कि कुछ हल करने का सबसे अच्छा तरीका है। यह निश्चित रूप से Deutsch-Josza एल्गोरिथम का सच है: अलंकृत सेटिंग में भी, यादृच्छिकता का उपयोग करना लगभग उतना ही अच्छा है, और यह बहुत बेहतर है कि हमारे पास अभी तक बड़े विश्वसनीय क्वांटम कंप्यूटर नहीं हैं! लेकिन उसके बाद फिर से...

"कार्यान्वयन" एक अलंकृत

Deutsch-जोसा एल्गोरिदम को लागू करने का उद्देश्य " हैलो, वर्ल्ड! " को लागू करने के समान है - एक दबाने वाली अनसुलझी समस्या को हल करने के लिए नहीं, बल्कि एक उपकरण का उपयोग करने का अभ्यास करने के लिए जिसे आप उम्मीद करते हैं कि अन्य चीजें करने के लिए उपयोगी होगा।

कोडिंग का अभ्यास करने के लिए, आपको एक ऑरेकल को लागू करने के विचार के साथ, और कंप्यूटर के आइनेकल के मूल्यांकन के विचार के साथ बिल्कुल आराम और आरामदायक महसूस करना चाहिए । सिद्धांत रूप में, यह वह बिंदु है जो आप करना चाहते हैं। यहां तक ​​कि अगर आप एक शास्त्रीय एमुलेटर का उपयोग कर रहे हैं, जिसमें शास्त्रीय कंप्यूटर वास्तव में सुपरपोजिशन की सभी शाखाओं का मूल्यांकन कर रहा है और इसलिए स्पष्ट रूप से एक समस्या का उत्तर ढूंढने के लिए यह दिखावा करने के लिए कि यह क्वांटम कंप्यूटर थोड़े अधिक गोल चक्कर में काम कर रहा है, इसलिए यह बनो - आप अभ्यास कर रहे हैं कि कैसे एक उपकरण का उपयोग करें जो अन्य चीजों के लिए उपयोगी हो सकता है, और जो एक दिन शास्त्रीय कंप्यूटर पर नहीं चलाया जाएगा।

तो आपको अपने ऑरेकल को लागू करने के बारे में कैसे जाना चाहिए?

(i) यदि आप वास्तव में इस विचार के लिए प्रतिबद्ध हैं कि आप केवल अभ्यास कर रहे हैं, तो आपको यह दिखावा करने की ज़रूरत नहीं है कि आप कुछ भी जादुई कर रहे हैं। ओरेकल फ़ंक्शन को लागू करने के लिए बस किसी भी तरह से आओ, भले ही यह आकस्मिक पर्यवेक्षक के लिए स्पष्ट रूप से स्पष्ट हो या नहीं कि परिणाम निरंतर या संतुलित है। आप बस एक एल्गोरिथ्म को साकार करने का अभ्यास करने की कोशिश कर रहे हैं - चिंता न करें कि कोई आप पर दोष लगाने का आरोप लगाएगा, कि आप कैंसर का इलाज करने का दिखावा कर रहे हैं लेकिन वास्तव में लेगो के साथ खेल रहे हैं। आप कैंसर का इलाज करने का नाटक नहीं कर रहे थे , और आप जानबूझकर पसंद करके लेगो के साथ खेल रहे हैं । गले लगाओ और बस करो।

f(x)=g(x,r)rg(x,r)xr, और जहाँ यह स्पष्ट नहीं है कि इसे शास्त्रीय रूप से कैसे हल किया जाए, गैर-तुच्छ है।

  • g(x,r)=xrx,r{0,1}ng(x,r)f(x)f(x)r0

  • यह बोधगम्य है कि उपरोक्त निर्माण को कुछ हद तक विस्तृत / बाधित किया जा सकता है, एक निर्माण प्राप्त करने के लिए जिसे एक स्थिर फ़ंक्शन या एक संतुलित फ़ंक्शन का मूल्यांकन करने की गारंटी दी जाती है, और जहां इन दोनों में से कोई भी स्पष्ट या मुश्किल नहीं है - लेकिन मैं ' t कैसे, इस समय के बारे में सोचो।

ध्यान रखें कि यह वास्तव में करना बहुत मुश्किल है - लेकिन अगर आप इसे करने का एक तरीका देख सकते हैं, तो यह बहुत ही सार्थक हो सकता है: ब्रेवी, गॉसेट, और कोइनिंग ने बर्नस्टीन-वाज़िरानी समस्या के लिए कुछ ऐसा किया, और इसने उन्हें अनुमति दी। क्वांटम और शास्त्रीय जटिलता के बीच एक छोटी लेकिन बिना शर्त जुदाई दिखाने के लिए , जो पिछले कई वर्षों में क्वांटम जटिलता में होने वाली अधिक दिलचस्प चीजों में से एक थी।

टी एल; डॉ

  • इस तथ्य पर पसीना मत करो कि आप एक '' मूल्यांकन कर रहे हैं।

  • यदि आपको कुछ भी पसीना आता है, तो केवल चिंता करें कि फ़ंक्शन का वास्तविक विवरण क्वांटम कंप्यूटर के बिना उसी समस्या को आसानी से हल करना संभव बना सकता है।

  • यदि आपकी प्रेरणा केवल क्वांटम प्रोग्रामिंग के साथ अभ्यास करना है, तो उसके बारे में भी चिंता न करें। ग्लोबल वार्मिंग जैसी योग्य समस्याओं के लिए अपनी चिंता को बचाएं। इस दौरान आप कुछ और बनाने के दौरान लेगोस के साथ खेलने का आनंद लें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.