जुड़े हुए प्रश्न के अनुसार, सरलतम उपाय यह है कि यदि संभव हो तो ऐसे कार्यों को करने के लिए शास्त्रीय प्रोसेसर प्राप्त करें । बेशक, यह संभव नहीं हो सकता है, इसलिए हम एक योजक बनाना चाहते हैं ।
एकल बिट योजक के दो प्रकार हैं - आधा योजक और पूर्ण योजक । अर्ध-योजक इनपुट और लेता है और 'sum' (XOR ऑपरेशन) और 'carry' (AND ऑपरेशन) । एक पूर्ण योजक के पास 'कैरी' ' इनपुट और' carry out 'आउटपुट , जो की । यह और ।बी एस = एक ⊕ बी सी = एक ⋅ बी सी मैं एन सी ओ यू टी सी एस = एक ⊕ बी ⊕ सी मैं एन सी ओ यू टी = सी मैं एन ⋅ ( ए + बी ) + एक ⋅ बीABS=A⊕BC=A⋅BCinCoutCS=A⊕B⊕CinCout=Cin⋅(A+B)+A⋅B
अर्ध-योजक का क्वांटम संस्करण
क्वोट रजिस्टर पर CNOT गेट को देखते हुए कंट्रोलिंग रजिस्टर : जो तुरंत रजिस्टर का आउटपुट । हालाँकि, हमारे पास अभी तक कै और की स्थिति की गणना हैB CNOT A → B | 0 ⟩ एक | 0 ⟩ बीAB
CNOTA→B|0⟩A|0⟩BCNOTA→B|0⟩A|1⟩BCNOTA→B|1⟩A|0⟩BCNOTA→B|1⟩A|1⟩B=|0⟩A|0⟩B=|0⟩A|1⟩B=|1⟩A|1⟩B=|1⟩A|0⟩B,
BA⊕B=SBरजिस्टर बदल गया है, इसलिए हमें AND ऑपरेशन करने की भी जरूरत है। यह 3-qubit Toffoli (नियंत्रित-CNOT / CCNOT) गेट का उपयोग करके किया जा सकता है। इसे रजिस्टर और रूप में नियंत्रण रजिस्टर का उपयोग करके किया जा सकता है और राज्य में में तीसरे रजिस्टर को इनिशियलाइज़ किया जा सकता है , तीसरे रजिस्टर के आउटपुट को । रजिस्टर और कंट्रोलिंग रजिस्टर टोफोली को करने के बाद सीएनओ द्वारा कंट्रोलिंग साथ रजिस्टर का उत्पादन राशि और रजिस्टर के आउटपुट के रूप में होता
AB(C)|0⟩A⋅B=CABCABBCकैरी के रूप में। अर्ध-योजक के एक क्वांटम सर्किट आरेख को आकृति 1 में दिखाया गया है।
चित्रा 1: एक आधा-योजक का सर्किट आरेख, टोफोली से मिलकर CNOT द्वारा पीछा किया गया। इनपुट बिट्स हैं और राशि दे रही है, बाहर ले जाने के साथ ।ABSC
पूर्ण योजक का क्वांटम संस्करण
आकृति 2 में दिखाया गया है, एकल बिट्स के लिए ऐसा करने का एक सरल तरीका है क्विट रजिस्टरों का उपयोग करके , यहां , , और का लेबल दिया गया है , जहां राज्य में शुरू होता है , इसलिए प्रारंभिक स्थिति :4ABCin11|0⟩|A⟩|B⟩|Cin⟩|0⟩
- Toffoli का उपयोग करके और को नियंत्रित करने के लिए :बी १ | एक ⟩ | बी ⟩ | सी मैं एन ⟩ | एक ⋅ बी ⟩AB1|A⟩|B⟩|Cin⟩|A⋅B⟩
- नियंत्रित साथ CNOT :AB|A⟩|A⊕B⟩|Cin⟩|A⋅B⟩
- और नियंत्रित करने के लिए Toffoli :BCin1|A⟩|A⊕B⟩|Cin⟩|A⋅B⊕(A⊕B)⋅Cin=Cout⟩
- साथ CNOT को नियंत्रित :BCin|A⟩|A⊕B⟩|A⊕B⊕Cin=S⟩|Cout⟩
इनपुट और को वापस पाने के लिए एक अंतिम चरण रजिस्टर कंट्रोलिंग साथ एक सीएनओटी लागू करना है , अंतिम आउटपुट कोABAB
|ψout⟩=|A⟩|B⟩|S⟩|Cout⟩
यह राशि के रूप रजिस्टर के आउटपुट और बाहर ले जाने के रूप में रजिस्टर के आउटपुट देता है।Cin2
चित्रा 2: एक पूर्ण योजक का सर्किट आरेख। इनपुट बिट्स हैं और एक कैरी में साथ-साथ , योग देने बाहर ले जाने के साथ ।बी सी आई एन एस सी ओ यू टीABCinSCout
रिपल कैरी योजक का क्वांटम संस्करण
पूर्ण योजक का एक साधारण विस्तार एक रिपल कैरी योजक है, जिसका नाम 'रिप्पल्स' है जिसे कैरी की श्रृंखला में अगले योजक के कैरी बनने के लिए 'रिपल्स' कहा जाता है, जो मनमाने ढंग से आकार (यदि धीमा है) के लिए अनुमति देता है। इस तरह के योजक का एक क्वांटम संस्करण यहां पाया जा सकता है
अर्ध-योजक का वास्तविक कार्यान्वयन
कई प्रणालियों के लिए, एक टोफोली गेट को लागू करना एक सिंगल क्वबिट (या यहां तक कि दो क्विबेट) गेट को लागू करने के रूप में सरल है। यह उत्तर टॉफोली को कई छोटे द्वारों में विघटित करने का एक तरीका देता है। हालांकि, वास्तविक प्रणालियों में, जैसे कि आईबीएमएक्सएक्स , ऐसे मुद्दे भी हो सकते हैं जिन पर लक्ष्य के रूप में क्वैब का उपयोग किया जा सकता है। जैसे, IBMQX2 पर एक वास्तविक जीवन कार्यान्वयन इस तरह दिखता है:
चित्र 3: IBMQX2 पर एक अर्ध-योजक का कार्यान्वयन। Toffoli गेट को कई छोटे गेटों में विघटित करने के अलावा, अतिरिक्त फाटकों की आवश्यकता होती है क्योंकि सभी qubit रजिस्टरों को लक्ष्य के रूप में उपयोग नहीं किया जा सकता है। रजिस्टरों q [0] और q [1] को q [1] और q [2] में ले जाने के लिए जोड़ दिया जाता है। इस स्थिति में, परिणाम q [2] q [1] 10. होना चाहिए। प्रोसेसर पर इसे चलाने से 42.8% की संभावना के साथ सही परिणाम मिला (हालांकि यह अभी भी सबसे संभावित परिणाम था)।