एक बहुत ही सरल क्वांटम कार्यक्रम कैसा दिखेगा?


76

दुनिया की पहली प्रोग्राम योग्य क्वांटम फोटोनिक चिप की घोषणा के प्रकाश में , मैं सोच रहा था कि क्वांटम उलझाव का उपयोग करने वाले कंप्यूटर के लिए क्या सॉफ्टवेयर होगा। मेरे द्वारा लिखे गए पहले कार्यक्रमों में से कुछ ऐसा था

for i = 1 to 10
  print i
next i

क्या कोई तुलनीय सरलता के कोड का उदाहरण दे सकता है जो क्वांटम फोटोनिक चिप्स (या समान हार्डवेयर) का उपयोग करता है, छद्मकोड या उच्च स्तरीय भाषा में? मुझे पारंपरिक प्रोग्रामिंग से उलझाव आदि के लिए वैचारिक छलांग लगाने में कठिनाई हो रही है।


आपका लिंक टूट गया है
सुरेश वेंकट

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

जवाबों:


59

कैविट एम्प्टर: निम्नलिखित क्यूसी के क्षेत्र पर मेरे स्वयं के अनुसंधान और दृष्टिकोण पर भारी पक्षपातपूर्ण है। यह क्षेत्र की आम सहमति का गठन नहीं करता है और इसमें कुछ आत्म-प्रचार भी हो सकते हैं।

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

एक प्रोग्रामिंग लैंग्वेज कंप्यूटर साइंटिस्ट के रूप में मेरे शोध में मुझे सबसे अच्छा क्या मिला है, और क्यूसी को दूसरे कंप्यूटर साइंटिस्ट के पास पहुंचाने के लिए, सबसे सरल 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 है और [...]अपने शास्त्रीय (सिग्नल) बूलियन्स युक्त स्मृति है।


  1. दानोस एट अल। माप पथरी। अर्क्सिव (2007) वॉल्यूम। बल्ली से ढकेलना-पीएच
  2. Raussendorf और Briegel। एक तरह से क्वांटम कंप्यूटर। शारीरिक समीक्षा पत्र (2001) वॉल्यूम। 86 (22) पीपी। 5188-5191

विषय की उत्कृष्ट चर्चा, धन्यवाद, बीफ। Btw, ओपी बोलते हैं "मुझे पारंपरिक प्रोग्रामिंग से उलझाव, आदि तक वैचारिक छलांग लगाने में कठिनाई हो रही है" तो, उस संक्रमण में मदद करने वाली किसी चीज का स्वागत किया जाना चाहिए।
क्रिश

आप कर रहे हैं ठीक है, मैं वास्तव में वह हिस्सा खो दिया है, शर्म की बात है के लिए लग रहा था: / एक paragraph.≈ जोड़ा जा रहा है
बीफ

"एक क्वांटम कंप्यूटर पर विचार करें जिसमें केवल पांच निर्देश हैं: एन, ई, एम, एक्स और जेड।" अनुदेश Z का कोई स्पष्टीकरण नहीं :(
फर्नांडो गोंजालेज

Z, X की तरह बहुत है;) en.wikipedia.org/wiki/Pauli_matrices X ऑपरेशन वेक्टर [ab] को [ba] में बदल देता है, Z ऑपरेशन इसे [a -b] में बदल देता है।
बीफ

21

मुझे लगता है कि सी के libquantum , हास्केल के क्वांटम मोनाड्स या पर्ल के क्वांटम :: Entanglement सभी क्वांटम कम्प्यूटेशन का ईमानदारी से प्रतिनिधित्व करते हैं। आप उनके उदाहरण देख सकते हैं।

सामान्य तौर पर, आप एक क्वांटम एल्गोरिथ्म को शास्त्रीय एल्गोरिथ्म के रूप में वर्णित करते हैं जो रैखिक ऑपरेटरों की एक श्रृंखला को आपके क्वांटम सिस्टम की स्थिति का प्रतिनिधित्व करने वाले सुपर-पोजिशन पर लागू करता है। जर्नल लेख अक्सर क्वांटम बिट्स / रजिस्टरों और रैखिक ऑपरेटरों के लिए बक्से के लिए लाइनों के साथ एक सर्किट को दर्शाते हैं।

बेशक, कठिन भाग एल्गोरिथ्म का वर्णन नहीं कर रहा है, लेकिन यह समझ में आता है कि यह क्यों काम करता है, संभाव्य एल्गोरिदम की तरह। मैंने हमेशा ग्रोवर के एल्गोरिथ्म को काफी समझदार माना है । आप शोर के एल्गोरिथ्म द्वारा उपयोग किए जाने वाले क्वांटम फूरियर रूपांतरण के बारे में भी पढ़ सकते हैं ।


11

यह इस तरह दिख रहा है: यहाँ छवि विवरण दर्ज करें

आप भी एक वास्तविक क्वांटम प्रोसेसर तक पहुँच सकते हैं। यहां जाएं और साइन अप करें: http://www.research.ibm.com/quantum/

इसमें एक सिम्युलेटर भी शामिल है ताकि आप वास्तविक हार्डवेयर का उपयोग किए बिना परीक्षण कर सकें, या वास्तविक हार्डवेयर पर चलने के लिए क्रेडिट (मुक्त) का उपयोग कर सकें।



3

मुझे लगता है कि उत्तर "एक साधारण शास्त्रीय कार्यक्रम की तरह है।"

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

nk

तो, अगर STLC कार्टेशियन बंद श्रेणियों के लिए है, तो बंद सममित मोनोडल श्रेणियां क्या हैं? ठीक है, हम जानते हैं कि एक सममित मोनोइडल श्रेणी का आंतरिक तर्क MILL है । तो हमें क्या जरूरत है एक प्रकार का सिद्धांत है जो MILL से संबंधित है - एक रैखिक प्रकार का सिद्धांत।

अमूर्त बकवास से दूर, हम एक रैखिक प्रकार के सिद्धांत के साथ क्या प्राप्त करते हैं? रैखिकता। हमें संसाधनों की रैखिकता मिलती है। और ठीक यही हम चाहते हैं। आपको क्वांटम बिट्स क्लोन करने की अनुमति नहीं है। आपको स्पष्ट रूप से मापने की अनुमति नहीं है। और रैखिकता का मतलब है कि आप इनमें से कोई भी कमी के दौरान नहीं कर सकते।

रैखिक प्रकार के सिद्धांतों पर कुछ काम हुआ है, लेकिन एक टन नहीं। मुझे इस पोस्ट के कुछ विचार इस पत्र से मिले: भौतिकी, टोपोलॉजी, तर्क और संगणना: ए रोसेटा स्टोन बाई माइक स्टे और जॉन बैज़, जो कि मेरे हैंडवॉइंग की तुलना में बहुत अधिक है।


0

मैं शायद शुरू करने के लिए छोटे एन "काउंटर कार्यान्वयन द्वारा एक सरल" विभाजन के साथ जाऊंगा।

उदाहरण के लिए: 10GHz स्रोत दिया गया, एक 5GHz आउटपुट उत्पन्न करें (लेकिन ये संख्याएं मनमानी हैं और केवल अवधारणा को चित्रित करने के लिए हैं)।

यह हमें भंडारण और वॉन न्यूमैन वास्तुकला जैसे मुद्दों की अनदेखी करने देता है, और हमें इस बात पर ध्यान केंद्रित करने देता है कि क्या घटक वास्तव में कुछ भी समझने योग्य हैं।

अगला लक्ष्य, तब "छोटा n" का एक छोटा सा प्रदर्शन करना होगा (लेकिन मैं अपने शोधकर्ताओं से पुशबैक के लिए भी सुनूंगा - अगर उन्हें लगा कि अन्य छोटे लक्ष्य अधिक तुरंत फलदायी होंगे, तो मैं निश्चित रूप से समझना चाहता हूं। वे मुझे क्या बता रहे थे।)

दीर्घकालिक लक्ष्यों में सूचनाओं को प्रणाली से बाहर पंप करने के लिए तंत्र शामिल होगा, और उस जानकारी को लंबे समय तक उपयोग करने के लिए धारण करना होगा।

(यह शायद याद रखने योग्य है कि शुरुआती कंप्यूटर प्रोग्राम सभी "हार्डवेड" थे। यह उन प्रणालियों के साथ व्यापक अनुभव के बाद ही था जो हम संग्रहीत कार्यक्रमों को लागू करने में सक्षम थे।)


-6

मुझे लगता है कि एक क्वांटम कंप्यूटर को प्रोग्रामिंग करना एक अलग दृष्टिकोण से देखा जाना चाहिए जो सामान्य ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग है।

QC में मस्तिष्क की सोचने और निर्णय लेने की क्षमता समान है। सोचने की क्षमता में डेटा-माइनिंग की शक्ति होती है, जो डेटा का एक स्रोत है, जो संभव विकल्प होगा, और यह तय करना होगा कि सभी संभावित राज्यों में से कौन चुनना है।

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

QC में एक डेटा-माइनर होना चाहिए जो डेटा पढ़ने की प्रक्रिया करता है, अलग-अलग विकल्प को एक साथ जोड़कर डेटासोर्स का अलग-अलग समूह बनाता है जो रैपर्सेंट informations, सभी संभावित राज्यों को पढ़ता है और जिसे चुनना है।

हमारा दिमाग कैसे काम करता है। QC क्वांटम मैकेनिक कानून के अनुसार समझने और कार्य करने में सक्षम है, इसका मतलब है कि आप एक समस्या देते हैं और क्यूसी आपको इसे हल करने के लिए सभी संभव समाधान दिखाते हैं।

क्यूसी कितना शक्तिशाली हो सकता है, क्या आप सहमत हैं?

https://www.cs.rutgers.edu/~mlittman/papers/openhouse11.pdf यह आरंभ करने का बिंदु है, फिर क्वांटम डिवाइस को गेटों आदि के साथ बनाने के लिए एक डेटामिनर बनाएं, जिसे पढ़ने और पढ़ने के लिए डेट से जुड़े पाठक अपनी राय बताएं। क्वांटम डेटासोर्स घटक होस्ट डेटा और ज्ञान का दायरा जहां डेटाामिनर कार्य करता है।

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