क्वांटम सर्किट का स्वचालित संकलन


12

यहाँ हाल ही में एक प्रश्न पूछा गया कि 4-qubit गेट CCCZ (नियंत्रित-नियंत्रित-नियंत्रित-जेड) को सरल 1-qubit और 2-qubit फाटकों में कैसे संकलित किया गया है, और अब तक दिए गए एकमात्र उत्तर में 63 द्वार की आवश्यकता है !

पहला कदम नीलसन और चुआंग द्वारा दिए गए C U निर्माण का उपयोग करना था :n

साथ इसका मतलब 4 CCNOT गेट्स और 3 सिंपल गेट्स (1 CNOT और 2 Hadamards टारगेट क्वाइब और लास्ट वर्क क्विट पर अंतिम CZ करने के लिए पर्याप्त है)।n=3

इस पत्र के प्रमेय 1 में कहा गया है कि सामान्य तौर पर CCNOT को 9 एक-qubit और 6 दो-qubit gates (कुल 15) की आवश्यकता होती है:

यहाँ छवि विवरण दर्ज करें


इसका मतलब है की:

(4 CCNOTs) x (15 गेट प्रति CCNOT) + (1 CNOT) + (2 Hadamards) = 63 कुल गेट्स

एक टिप्पणी में , यह सुझाव दिया गया है कि 63 फाटकों को फिर "स्वचालित प्रक्रिया" का उपयोग करके संकलित किया जा सकता है, उदाहरण के लिए स्वचालित समूहों के सिद्धांत से ।

यह "स्वचालित संकलन" कैसे किया जा सकता है, और यह इस मामले में 1-qubit और 2-qubit फाटकों की संख्या को कितना कम करेगा?


1
मैं कुछ चीजों के बीच में हूं लेकिन आपके प्रश्न को देखा। ग्लोबल मॉल्मर-सोरेंसन गेट्स 2 क्विट गेट हैं, और कागज का उपयोग क्वांटम सर्किट निर्माण में वैश्विक इंटरैक्शन का वर्णन करता है: "तीन GMS गेट्स का उपयोग करके CCCZ गेट का ऑप्टिमाइज्ड कार्यान्वयन", यह देखने के लिए कि क्या आप जवाब लिखने के लिए स्वागत करते हैं। उपयोगी।
रोब

छवि में प्रतिनिधित्व के लिए केवल 4 CCNOTs की आवश्यकता होती है, और इसलिए 93 के बजाय 63 गेट होते हैं।
डायन जे डॉन कीवी वैन वरुमिंगिन

@DonKiwi, ने नोट किया! 4 CCNOTs के बजाय 6. अब मैं इसे अपडेट कर रहा हूं।
user1271772

1
@ रब: आपको लगता है कि दो हैडमर्ड्स का उपयोग करके सीसीसीएक्स में एक्स को संयुग्मित करने का सुझाव दिया गया है। फिर CCCX को ऊपर नीलसन और चुंग सर्किट में ही विघटित किया जा सकता है। क्या वो सही है? डोनकिवी के सवाल के मेरे दूसरे जवाब में, मैंने ऐसा कुछ किया। ऐसा लगता है कि आपकी टिप्पणी ठीक उसी समय आई जब मैं उस उत्तर को टाइप कर रहा था, क्योंकि वे 5 मिनट अलग हैं (और मुझे टाइप करने में 5 मिनट से अधिक समय लगा)। "स्वचालित संकलन" के बारे में यह प्रश्न अभी भी खड़ा है, क्योंकि "स्पष्ट तरीके" में एक सर्किट का निर्माण करने में सक्षम होना अच्छा होगा और फिर स्वचालित रूप से कुछ अधिक कुशल में संकलित किया जाएगा।
user1271772

1
@ user1271772 - हर (qu) बिट मदद करता है।
रोब

जवाबों:


6

बता दें कि मूल द्वार हैं जिनका आपको उपयोग करने की अनुमति है। इस और आदि के प्रयोजनों के लिए अलग-अलग व्यवहार किया जाता है। तो बहुपद है जो पर निर्भर करता है , की संख्या। सटीक निर्भरता में आपके द्वारा उपयोग किए जाने वाले फाटकों के प्रकार और वे कितने -ocal हैं, का विवरण शामिल है। उदाहरण के लिए, यदि सिंगल क्वैब गेट्स और 2-qubit गेट्स हैं जो कि जैसे ऑर्डर पर निर्भर नहीं करते हैं तो ।g1gMCNOT12CNOT13MnkxyCZM=xn+(n2)y

सर्किट तब किसी क्रम में उन जनरेटर का एक उत्पाद है। लेकिन कई सर्किट हैं जो कुछ भी नहीं करते हैं। जैसे । तो वे समूह पर संबंध देते हैं। वह यह है कि एक समूह प्रस्तुति जहां कई संबंध हैं जो हम नहीं जानते हैं।CNOT12CNOT12=Id g1gMR1

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

लेकिन हम एक सरल समस्या पर विचार कर सकते हैं। यदि हम कुछ को बाहर , तो पहले से शब्द जहाँ प्रत्येक शेष अक्षरों में केवल शब्द हैं। यदि हम शामिल नहीं करने वाले संबंधों का उपयोग करके उन्हें छोटा बनाने में कामयाब रहे , तो हमने पूरे सर्किट को छोटा कर दिया है। यह अन्य जवाब में किए गए अपने दम पर CNOT के अनुकूलन के लिए एक समान है।giw1gi1w2gi2wkwigi

उदाहरण के लिए, यदि तीन जेनरेटर हैं और यह शब्द , लेकिन हम के साथ सौदा नहीं करना चाहते हैं , तो हम इसके बजाय और से और । फिर हम उन्हें वापस में एक साथ रखते हैं और यह मूल शब्द का एक छोटा हिस्सा है।aababbacbbabacw1=aababbaw2=bbabaw^1w^2w^1cw^2

तो WLOG (सामान्यता की हानि के बिना), मान लें कि हम उस समस्या में पहले से ही हैं जहाँ हम अब निर्दिष्ट सभी गेटों का उपयोग करते हैं। फिर यह शायद एक स्वचालित समूह नहीं है। लेकिन अगर हम कुछ संबंधों को तोड़ दें तो क्या होगा। तब हमारे पास एक और समूह होगा जिसका एक भागफल नक्शा होगा जिसे हम वास्तव में चाहते हैं।g1gMR1

समूह कोई संबंध एक स्वतंत्र समूह नहीं है , लेकिन तब यदि आप को एक संबंध के रूप में रखते हैं, तो आपको मुफ्त उत्पाद और पूर्व से बाद में प्रत्येक खंड modulo में की संख्या को कम करने के लिए एक भागफल मानचित्र है ।g1g2g12=id Z2Zg12

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

यह सामान्य विचार था, हम इसे एक विशिष्ट एल्गोरिथ्म में कैसे बदल सकते हैं?

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

उदाहरण के लिए, मान लें कि आपके पास IBM कॉन्फ़िगरेशन है । फिर अनुमति गेट हैं। यदि आप एक सामान्य क्रमपरिवर्तन करना चाहते हैं, तो इसे कारकों में विघटित करें । यह समूह में एक शब्द है जिसे हम छोटा करना चाहते हैं ।s01,s02,s12,s23,s24,s34si,i+1s01,s02,s12,s23,s24,s34R1

ध्यान दें कि ये मानक इनवोल्यूशन नहीं हैं। आप उदाहरण के लिए अलावा में फेंक सकते हैं । गोट्समैन-निल प्रमेय के बारे में सोचें , लेकिन एक सार तरीके से इसका मतलब है कि इसे सामान्य करना आसान होगा। जैसे कि संपत्ति का उपयोग करना, जो कि कम सटीक अनुक्रमों के तहत, यदि आपके पास दो पक्षों के लिए पूर्ण पुनर्लेखन प्रणाली है, तो आपको मध्य समूह के लिए एक मिलता है। यह टिप्पणी शेष उत्तर के लिए अनावश्यक है, लेकिन यह बताती है कि आप इस उत्तर में लोगों से बड़े सामान्य उदाहरण कैसे बना सकते हैं।R(θ)XR(θ)1X

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

mij फाटकों के स्थानीयता गुणों के कारण गणना करना वास्तव में आसान है। यदि द्वार अधिकांश -local पर हैं, तो की गणना आयामी हिल्बर्ट स्थान पर की जा सकती है । ऐसा इसलिए है क्योंकि यदि सूचकांक ओवरलैप नहीं होते हैं, तो आप जानते हैं कि । तब है जब और लघुकरण करते हैं। आपको केवल आधे से भी कम प्रविष्टियों की गणना करनी होगी। इसका कारण यह है मैट्रिक्स है सममित है, है विकर्ण (पर की )। इसके अलावा, अधिकांश प्रविष्टियाँ सिर्फ शामिल किए गए चैंबरों का नाम बदल रही हैं, यदि आप के आदेश को जानते हैंkmij22k1mij=2mij=2gigjmij1(gigi)1=1(CNOT12H1) , आप फिर से गणना किए बिना का क्रम जानते हैं ।CNOT37H3

इसने उन सभी संबंधों का ध्यान रखा जो केवल दो अलग-अलग द्वारों में शामिल थे (प्रमाण: व्यायाम)। जिन संबंधों में या अधिक शामिल थे, वे सभी बाहर फेंक दिए गए थे। अब हम उन्हें वापस रख देते हैं। मान लें कि हमारे पास वह है, तो हम नए संबंधों का उपयोग करके Dehn के लालची एल्गोरिथ्म का प्रदर्शन कर सकते हैं । यदि कोई परिवर्तन होता है, तो हम इसे फिर से कॉक्सटर समूह के माध्यम से चलाने के लिए दस्तक देते हैं। यह तब तक दोहराता है जब तक कि कोई बदलाव न हो।3

हर बार शब्द या तो छोटा हो रहा है या समान लंबाई में रह रहा है और हम केवल उन एल्गोरिदम का उपयोग कर रहे हैं जिनमें रैखिक या द्विघात व्यवहार होता है। यह एक सस्ती प्रक्रिया है इसलिए यह भी हो सकता है और सुनिश्चित करें कि आपने कुछ भी बेवकूफ नहीं किया है।

यदि आप इसे स्वयं परखना चाहते हैं, तो जनरेटर की संख्या रूप में दें , जिस यादृच्छिक शब्द की आप कोशिश कर रहे हैं उसकी लंबाई और रूप में Coxeter मैट्रिक्स है ।NKm

edge_list=[]
for i1 in range(N):
    for j1 in range(i):
        edge_list.append((j1+1,i1+1,m[i1,j1]))
G3 = Graph(edge_list)
W3 = CoxeterGroup(G3)
s3 = W3.simple_reflections()
word=[choice(list([1,..,N])) for k in range(K)]
print(word)
wTesting=s3[word[0]]
for o in word[1:]:
    wTesting=wTesting*s3[o]
word=wTesting.coset_representative([]).reduced_word()
print(word)

के साथ एक उदाहरण N=28और K=20, पहली दो पंक्तियां इनपुट अनरेड्ड शब्द हैं, अगले दो कम शब्द हैं। मुझे आशा है कि मैट्रिक्स में प्रवेश करते समय मैंने एक टाइपो नहीं बनाया था ।m

[26, 10, 13, 16, 15, 16, 20, 22, 21, 25, 11, 22, 25, 13, 8, 20, 19, 19, 14, 28]

['CNOT_23', 'Y_1', 'Y_4', 'Z_2', 'Z_1', 'Z_2', 'H_1', 'H_3', 'H_2', 'CNOT_12', 'Y_2', 'H_3', 'CNOT_12', 'Y_4', 'X_4', 'H_1', 'Z_5', 'Z_5', 'Y_5', 'CNOT_45']

[14, 8, 28, 26, 21, 10, 15, 20, 25, 11, 25, 20]

['Y_5', 'X_4', 'CNOT_45', 'CNOT_23', 'H_2', 'Y_1', 'Z_1', 'H_1', 'CNOT_12', 'Y_2', 'CNOT_12', 'H_1']

उन जनरेटरों को तरह वापस लाना हम केवल जैसे संबंधों को वापस रखते हैं और गेट्स के साथ करता है जिसमें qubit शामिल नहीं है । इससे हम अपघटन कर सकते हैं, जब तक संभव हो है। हम जैसी स्थितियों से बचना चाहते हैं । (क्लिफ + टी में अक्सर टी-काउंट कम से कम करना चाहता है)। इस भाग के लिए, निर्भरता दिखाने वाला निर्देशित चक्रीय ग्राफ महत्वपूर्ण है। यह डीएजी का एक अच्छा टोपोलॉजिकल प्रकार खोजने की समस्या है। यह पूर्ववर्ती परिवर्तन के द्वारा किया जाता है जब किसी के पास विकल्प होता है कि आगे क्या उपयोग करना है। (मैं इस भाग को भी कठिन बनाने में समय बर्बाद नहीं करूँगा।)TiTin=1Tiiw1gi1w2gi2wkwiX1T2X1T2X1T2X1

यदि शब्द पहले से ही इष्टतम लंबाई के करीब है, तो करने के लिए बहुत कुछ नहीं है और यह प्रक्रिया मदद नहीं करेगी। लेकिन यह क्या पाता है की सबसे बुनियादी उदाहरण के रूप में आप कई इकाइयों है और आप भूल गया एक था अगर है एक के अंत में और एक अगले की शुरुआत में, यह उस जोड़ी से छुटकारा मिल जाएगा। इसका मतलब यह है कि आप सामान्य विश्वास के साथ ब्लैक बॉक्स को रूटीन कर सकते हैं कि जब आप उन्हें एक साथ रखेंगे, तो उन सभी को रद्द कर दिया जाएगा। यह दूसरों को स्पष्ट नहीं करता है; जब लोग उपयोग करते हैं ।HiHimij1,2


+1 !!! लूत का विस्तार! मैं इसे पढ़ रहा हूं :)
user1271772

1
@ हुसैन, क्या यह एक उदाहरण के माध्यम से काम करना संभव है, जहां यह मेरे प्रश्न में "भोले" CCCZ निर्माण पर लागू होता है, और गेट्स की एक छोटी संख्या के साथ समाप्त होता है? CCCZ के बारे में मूल प्रश्न के अब 6 उत्तर हैं, और उनमें से बहुत से छोटे गेट मायने रखते हैं। मुझे आश्चर्य है कि गेट अप के लिए आपका दृष्टिकोण क्या देगा।
user1271772

4

Https://arxiv.org/abs/quant-ph/0303063 1 में वर्णित प्रक्रिया का उपयोग करते हुए , कोई भी विकर्ण द्वार - किसी भी प्रकार विशेष रूप से CCCZ गेट - जैसे CNOT और एक-चतुर्थ विकर्ण द्वार के संदर्भ में विघटित किया जा सकता है, जहाँ शास्त्रीय अनुकूलन प्रक्रिया के बाद CNOT को अपने दम पर अनुकूलित किया जा सकता है।

संदर्भ मनमाना विकर्ण 4-qubit फाटक (छवि 4) के लिए 16 CNOT का उपयोग करते हुए एक सर्किट प्रदान करता है।


टिप्पणी: जबकि सिद्धांत में एक सरल सर्किट हो सकता है (कहा जाता है कि सर्किट को अधिक विवश सर्किट आर्किटेक्चर को ध्यान में रखकर अनुकूलित किया गया है), यह इष्टतम के करीब होना चाहिए - सर्किट को फॉर्म सभी राज्यों को बनाने की आवश्यकता है में किसी भी गैर-तुच्छ उपसमुच्चय के लिए , और 4 की संख्या में से 15 हैं।iIxiI{1,2,3,4}

यह भी ध्यान दें कि किसी भी तरह से यह निर्माण इष्टतम होने की आवश्यकता नहीं है।


1 नोट: मैं एक लेखक हूं


दिलचस्प। फिर भी मुझे यह देखने के लिए कागज पढ़ना होगा कि प्रक्रिया क्या है। इसके अलावा, मैं @Ahussain की प्रतीक्षा कर रहा हूं कि वह हमें बताए कि कैसे यह स्वचालित समूहों के सिद्धांत का उपयोग करके किया जाता है।
user1271772
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.