कैविट एम्प्टर: निम्नलिखित क्यूसी के क्षेत्र पर मेरे स्वयं के अनुसंधान और दृष्टिकोण पर भारी पक्षपातपूर्ण है। यह क्षेत्र की आम सहमति का गठन नहीं करता है और इसमें कुछ आत्म-प्रचार भी हो सकते हैं।
क्वांटम कंप्यूटिंग की एक 'हैलो दुनिया' दिखाने की समस्या यह है कि हम मूल रूप से क्वांटम कंप्यूटर से अभी भी दूर हैं क्योंकि लीबनिट्ज या बैबेज आपके वर्तमान कंप्यूटर से थे। जबकि हम जानते हैं कि उन्हें सैद्धांतिक रूप से कैसे काम करना चाहिए, वास्तव में एक भौतिक क्वांटम कंप्यूटर बनाने का कोई मानक तरीका नहीं है। इसका एक दुष्परिणाम यह है कि क्वांटम कंप्यूटिंग का एक भी प्रोग्रामिंग मॉडल नहीं है। नील्सन एट अल जैसी पाठ्यपुस्तकें। आपको एक 'क्वांटम सर्किट' आरेख दिखाएगा, लेकिन वे औपचारिक प्रोग्रामिंग भाषाओं से बहुत दूर हैं: उन्हें शास्त्रीय नियंत्रण या इनपुट / आउटपुट / माप परिणामों से निपटने जैसे विवरणों पर थोड़ा 'हाथ लहराते' मिलते हैं।
एक प्रोग्रामिंग लैंग्वेज कंप्यूटर साइंटिस्ट के रूप में मेरे शोध में मुझे सबसे अच्छा क्या मिला है, और क्यूसी को दूसरे कंप्यूटर साइंटिस्ट के पास पहुंचाने के लिए, सबसे सरल QC मॉडल का उपयोग करना है जो मैंने किया है।
सबसे सरल क्वांटम कंप्यूटिंग प्रोग्राम मैंने देखा है कि सभी आवश्यक तत्व शामिल हैं मैं जिस सरल क्वांटम प्रोग्रामिंग मॉडल को पार कर रहा हूं उसमें एक छोटा सा तीन-निर्देश कार्यक्रम है। मैं इसे 'हेल्लो वर्ल्ड' के रूप में उपयोग करता हूँ ताकि मूल बातें प्राप्त की जा सकें।
मुझे Danos एट अल द्वारा माप पथरी के त्वरित सरलीकृत सारांश देने की अनुमति दें । 1 जो एक तरह से क्वांटम कंप्यूटर 2 पर आधारित है : मापा जाने पर एक क्वाइब नष्ट हो जाता है, लेकिन इसे मापने से अन्य सभी क्वाइब प्रभावित होते हैं जो इसके साथ उलझ गए थे। यह 'सर्किट-आधारित' क्वांटम कंप्यूटरों पर कुछ सैद्धांतिक और व्यावहारिक लाभ है जैसा कि फोटोनिक चिप द्वारा महसूस किया जाता है, लेकिन यह एक अलग चर्चा है।
क्वांटम कंप्यूटर पर विचार करें जिसमें केवल पांच निर्देश हैं: एन, ई, एम, एक्स और जेड। इसकी "असेंबली भाषा" आपके नियमित कंप्यूटर के समान है, एक निर्देश को निष्पादित करने के बाद यह अनुक्रम में अगले निर्देश पर जाता है। प्रत्येक निर्देश एक लक्ष्य qubit पहचानकर्ता लेता है, हम यहां केवल एक संख्या का उपयोग करते हैं, और अन्य तर्क।
N 2 # create a new quantum bit and identify it as '2'
E 1 2 # entangle qubits '1' and '2', qubit 1 already exists and is considered input
M 1 0 # measure qubit '1' with an angle of zero (angle can be anything in [0,2pi]
# qubit '1' is destroyed and the result is either True or False
# operations beyond this point can be dependent on the signal of '1'
X 2 1 # if the signal of qubit '1' is True, execute the Pauli-X operation on qubit '2'
उपरोक्त कार्यक्रम इस प्रकार एक एनीला बनाता है, इसे इनपुट क्वबिट के साथ जोड़ देता है, इनपुट को मापता है और माप के परिणाम के आधार पर एनीला पर एक ऑपरेशन करता है। नतीजा यह है कि हद 2 में हैडमार्ड ऑपरेशन के बाद अब क्वेट 1 की स्थिति है ।
उपरोक्त स्वाभाविक रूप से इतने निचले स्तर पर है कि आप इसे हाथ से कोड नहीं करना चाहेंगे। माप पथरी का लाभ यह है कि यह 'पैटर्न' का परिचय देता है, कुछ प्रकार के कंपोजिट मैक्रोज़ जो आपको उप-प्रकारों के साथ बड़े एल्गोरिदम की रचना करने की अनुमति देते हैं। आप 1-निर्देश पैटर्न के साथ शुरू करते हैं और वहां से बड़े पैटर्न विकसित करते हैं।
कोडांतरक जैसे निर्देश अनुक्रम के बजाय, प्रोग्राम को ग्राफ़ के रूप में लिखना भी आम है:
input .........
\--> ( E ) ---> (M:0) v
(N) ---> ( ) ------------> (X) ---> output
जहाँ पूर्ण तीर निर्भरता पर निर्भर हैं और बिंदीदार तीर एक 'सिग्नल' निर्भरता है।
निम्नलिखित एक ही Hadamard उदाहरण थोड़ा प्रोग्रामिंग टूल में व्यक्त किया गया है जैसा कि मैं कल्पना करता हूं कि 'क्वांटम प्रोग्रामर' का उपयोग होगा।
संपादित करें: ('शास्त्रीय' कंप्यूटरों के साथ संबंध जोड़ते हुए) शास्त्रीय कंप्यूटर अभी भी वास्तव में कुशल हैं कि वे सबसे अच्छा क्या करते हैं, और इसलिए दृष्टि यह है कि क्वांटम कंप्यूटरों का उपयोग कुछ एल्गोरिदम को बंद करने के लिए किया जाएगा, जो कि वर्तमान कंप्यूटरों के ग्राफिक्स को एक में कैसे लोड करता है GPU। जैसा कि आपने ऊपर देखा है, सीपीयू क्वांटम कंप्यूटर को एक निर्देश स्ट्रीम भेजकर नियंत्रित करेगा और बूलियन 'सिग्नल' से माप परिणाम वापस पढ़ेगा। इस तरह आपके पास सीपीयू और क्वांटम स्थिति द्वारा शास्त्रीय नियंत्रण का एक सख्त अलगाव है और क्वांटम कंप्यूटर पर प्रभाव पड़ता है।
उदाहरण के लिए, मैं अपने क्वांटम सह-प्रोसेसर का उपयोग एक यादृच्छिक बूलियन या कॉइनटॉस की गणना करने के लिए करने जा रहा हूं। शास्त्रीय कंप्यूटर नियतात्मक होते हैं, इसलिए एक अच्छा यादृच्छिक संख्या वापस करने पर इसका बुरा होता है। क्वांटम कंप्यूटर स्वाभाविक रूप से संभाव्य हैं, हालांकि, मुझे एक यादृच्छिक 0 या 1 प्राप्त करने के लिए एक समान-संतुलित कक्षा को मापना है। CPU और 'QPU' के बीच का संचार कुछ इस तरह दिखाई देगा:
qrand() N 1; M 1 0;
==> | CPU | ------------> | QPU | ==> { q1 } , []
start()
| | ------------> | | ==> { } , [q1: 0]
read(q1)
| | ------------> | |
q1: 0
0 | | <----------- | |
<==
कहाँ { ... }
QPU के क्वांटम स्मृति युक्त qubits है और [...]
अपने शास्त्रीय (सिग्नल) बूलियन्स युक्त स्मृति है।
- दानोस एट अल। माप पथरी। अर्क्सिव (2007) वॉल्यूम। बल्ली से ढकेलना-पीएच
- Raussendorf और Briegel। एक तरह से क्वांटम कंप्यूटर। शारीरिक समीक्षा पत्र (2001) वॉल्यूम। 86 (22) पीपी। 5188-5191