ग्रोवर की खोज एल्गोरिथ्म में किस तरह से संकलित किया गया है?


27

ग्रोवर की खोज एल्गोरिथ्म अनसोल्ड डेटाबेस खोज के लिए एक सिद्ध द्विघात गति प्रदान करता है। एल्गोरिथ्म आमतौर पर निम्नलिखित क्वांटम सर्किट द्वारा व्यक्त किया जाता है:

सबसे अभ्यावेदन में, प्रोटोकॉल का एक महत्वपूर्ण हिस्सा "दैवज्ञ गेट" है यूω , जो "जादुई" प्रदर्शन आपरेशन |एक्स(-1)(एक्स)|एक्स । हालांकि यह अक्सर अनसुना छोड़ दिया जाता है कि वास्तव में इस तरह के गेट को साकार करना कितना मुश्किल है। वास्तव में, ऐसा लग सकता है कि एक "ओरेकल" का उपयोग कालीन के नीचे कठिनाइयों को स्वीप करने का एक तरीका है।

हमें कैसे पता चलेगा कि इस तरह का एक शानदार ऑपरेशन वास्तव में साकार है? और यदि हां, तो इसकी जटिलता क्या है (उदाहरण के लिए गेट अपघटन की जटिलता के संदर्भ में)?


5
यही कुछ मैंने सोचा है। में इस प्रयोग उदाहरण के लिए वे कड़ी मेहनत से तार ओरेकल, जो मेरे लिए धोखा दे की तरह एक सा स्वाद ... में समाधान
एम स्टर्न

सीएस थ्योरी एसई पर इस उत्तर में इस प्रश्न का एक और शानदार उत्तर प्रदान किया गया है।
glS

जवाबों:


20

फंक्शन एक बिट स्ट्रिंग का एक मनमाना बूलियन फंक्शन है: :{0,1}n{0,1} । क्रिप्टोग्राफी, जैसे कि [1] , [2] , या [3] को तोड़ने के अनुप्रयोगों के लिए , यह वास्तव में एक 'डेटाबेस लुकअप' नहीं है, जो पूरे डेटाबेस को किसी भी तरह क्वांटम सर्किट के रूप में संग्रहीत करने की आवश्यकता होगी, बल्कि एक फ़ंक्शन जैसे

एक्स{1,अगर एसएच-256(एक्स)=y;0,अन्यथा,

निश्चित y , जिसकी कोई संरचना नहीं है, हम एक शास्त्रीय खोज के लिए शोषण कर सकते हैं, इसके विपरीत, कहते हैं, फ़ंक्शन

एक्स{1,अगर 2एक्सy(आधुनिक22048-1942289),0,अन्यथा,

जिसके पास संरचना है जिसे एक शास्त्रीय कंप्यूटर पर भी तेजी से उलटा किया जा सकता है

विशेष लागत के सवाल का सामान्य रूप से उत्तर नहीं दिया जा सकता है क्योंकि किसी भी सर्किट हो सकता है - यह केवल एक शास्त्रीय सर्किट से क्वांटम सर्किट बनाने की बात है । लेकिन आमतौर पर, जैसा कि ऊपर दिए गए उदाहरण में, शास्त्रीय कंप्यूटर पर मूल्यांकन करने के लिए फ़ंक्शन बहुत सस्ता है, इसलिए इसे क्वांटम कंप्यूटर पर विशेष रूप से गंभीर बोझ नहीं डालना चाहिए, जिसके लिए ग्रोवर के एल्गोरिदम के बारे में बाकी सब कुछ आपके बजट के भीतर है।

शीर्ष पर एकमात्र सामान्य लागत एक अतिरिक्त सशर्त नहीं है जहाँ xor है, और इसके लिए एक अतिरिक्त सहायक qubit है। विशेष रूप से, यदि हमारे पास एक सर्किट है बाहर बनाया गया और लिए सर्किट , तो अगर हम इसे लागू करते हैं एक साथ प्रारंभिक स्थिति के साथ राज्य या शुरू करते हैं। जहां

सी:||||
एफ:|एक्स||कचरा|एक्स|(एक्स)|कचरा'
सी|एक्स|-=एच|1=(1/2)(|0-|1)एच हडामर्ड गेट है, तो हमें मिलता है

एफ|एक्स|-|कचरा=12(एफ|एक्स|0|कचरा-एफ|एक्स|1|कचरा)=12(|एक्स|(एक्स)|कचरा'-|एक्स|1(एक्स)|कचरा')

यदि तो , इसलिए सरलीकरण करके हम जबकि यदि तो , इसलिए और इस प्रकार सामान्य रूप से(एक्स)=01(एक्स)=1

एफ|एक्स|-|कचरा=|एक्स|-|कचरा',
(एक्स)=1= - | एक्स | - | जंक ', एफ | एक्स |1(एक्स)=0
एफ|एक्स|-|कचरा=-|एक्स|-|कचरा',
एफ|एक्स|-|कचरा=(-1)(एक्स)|एक्स|-|कचरा'


5

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

वास्तव में, कंप्यूटिंग में ओरेकल की अवधारणा का निर्माण एलन ट्यूरिंग द्वारा उन निर्माणों का वर्णन करने के लिए किया गया था, जिनके लिए एक UTM पर विवरण साकार नहीं हो सकता (विकिपीडिया)। यह है कुछ अर्थों जादुई में।

लेकिन निश्चित रूप से, आपके सवाल पर वापस आते हुए, हम वास्तव में ग्रोवर खोज (या किसी भी शानदार) एल्गोरिथ्म के लिए सर्किट कैसे बनाते हैं? क्या हमें परिणाम की खोज करने के लिए पहले से उत्तर जानने की आवश्यकता है? ठीक है, कुछ मायने में आप की जरूरत है। यह वही है जो ग्रोवर खोज पर किए गए चतुर सुधारों पर काम करने की कोशिश करता है, जैसे कि, हमें पहले से सटीक उत्तर नहीं पता है, लेकिन इसके कुछ गुण हैं। एक उदाहरण से बताता हूं।

ग्रोवर की खोज का उपयोग करते हुए पैटर्न की पहचान की समस्या के लिए, अगर मेरे पास 2 क्वैबिट (00, 01, 10, 11) पर 4 पैटर्न हैं और मैं 11 को चिह्नित करना और बढ़ाना चाहता हूं, तो मेरी ओरेकल की विकर्ण जैसी होनी चाहिए (1,1,1) , -1) समाधान के लिए पाई चरण पारी का ख्याल रखना। तो, इस सरल कार्यान्वयन के लिए, एकात्मक निर्माण के लिए, आपको पहले से पूर्ण उत्तर जानना होगा।

मैटिस और उमर द्वारा पेपर "क्वांटम पैटर्न मिलान" में दिए जाने पर पैटर्न पूरा होने का एक चतुर सुधार। संक्षेप में, यह सेट के रूप में कई निर्धारित oracles के रूप में वहाँ अक्षर का निर्माण करता है। तो हमारे बाइनरी स्ट्रिंग के लिए, एक ओरेकल होगा जो सभी 1s को चिह्नित करता है, और दूसरा जो सभी 0 को चिह्नित करता है। Oracles को सशर्त रूप से लागू किया जाता है जो मैं खोजना चाहता हूं। यदि मैं 11 को खोजना चाहता हूं, तो मैं एलएसक्यूबी पर ऑरेकल 1 को कॉल करता हूं, और एमक्यूल पर फिर से ऑर्केल 1। पहले दैवज्ञ द्वारा, मैं राज्यों (01, 11), यानी 1 के रूप में LSQ के साथ राज्यों को बढ़ाता हूं, और दूसरी कॉल में, यह 10 (10, 11) बढ़ेगा। तो जैसा कि आप देखते हैं, 11 एकमात्र राज्य है जो दो बार बढ़ जाता है, एक उच्च माप संभावना में समाप्त होता है। हालांकि संकलित क्वांटम सर्किट मेरे इनपुट खोज पैटर्न के आधार पर बदल जाएगा। क्वांटम एल्गोरिथ्म का एक उच्च-स्तरीय विवरण समान रहता है। आप oracles के बारे में सोच सकते हैं क्योंकि खोज स्ट्रिंग में प्रत्येक वर्ण के लिए लागू वर्णमाला सेट के स्विच मामले के आधार पर फ़ंक्शन कॉल होते हैं।


तो अगर आपको का निर्माण करने के लिए पता होना चाहिए तो बात क्या है? यदि नहीं, तो मैं स्पष्ट नहीं कर रहा हूँ लागू करने के लिए कैसे एक अज्ञात के लिए ! मैं आईबीएम पर कुछ कार्यान्वयन पर ध्यान दिया है, लेकिन वे जानते हुए भी यह मानें कि ! यू ω यू ω ω ωωयूωयूωωω
user185597
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.