बता दें कि मूल द्वार हैं जिनका आपको उपयोग करने की अनुमति है। इस और आदि के प्रयोजनों के लिए अलग-अलग व्यवहार किया जाता है। तो बहुपद है जो पर निर्भर करता है , की संख्या। सटीक निर्भरता में आपके द्वारा उपयोग किए जाने वाले फाटकों के प्रकार और वे कितने -ocal हैं, का विवरण शामिल है। उदाहरण के लिए, यदि सिंगल क्वैब गेट्स और 2-qubit गेट्स हैं जो कि जैसे ऑर्डर पर निर्भर नहीं करते हैं तो ।g1⋯gMCNOT12CNOT13MnkxyCZM=xn+(n2)y
सर्किट तब किसी क्रम में उन जनरेटर का एक उत्पाद है। लेकिन कई सर्किट हैं जो कुछ भी नहीं करते हैं। जैसे । तो वे समूह पर संबंध देते हैं। वह यह है कि एक समूह प्रस्तुति जहां कई संबंध हैं जो हम नहीं जानते हैं।CNOT12CNOT12=Id ⟨g1⋯gM∣R1⋯⟩
जिस समस्या को हम हल करना चाहते हैं उसे इस समूह में एक शब्द दिया गया है, जो सबसे छोटा शब्द है जो एक ही तत्व का प्रतिनिधित्व करता है। सामान्य समूह प्रस्तुतियों के लिए, यह निराशाजनक है। समूह प्रस्तुति का प्रकार जहां यह समस्या सुलभ है, को स्वचालित कहा जाता है।
लेकिन हम एक सरल समस्या पर विचार कर सकते हैं। यदि हम कुछ को बाहर , तो पहले से शब्द जहाँ प्रत्येक शेष अक्षरों में केवल शब्द हैं। यदि हम शामिल नहीं करने वाले संबंधों का उपयोग करके उन्हें छोटा बनाने में कामयाब रहे , तो हमने पूरे सर्किट को छोटा कर दिया है। यह अन्य जवाब में किए गए अपने दम पर CNOT के अनुकूलन के लिए एक समान है।giw1gi1w2gi2⋯wkwigi
उदाहरण के लिए, यदि तीन जेनरेटर हैं और यह शब्द , लेकिन हम के साथ सौदा नहीं करना चाहते हैं , तो हम इसके बजाय और से और । फिर हम उन्हें वापस में एक साथ रखते हैं और यह मूल शब्द का एक छोटा हिस्सा है।aababbacbbabacw1=aababbaw2=bbabaw^1w^2w^1cw^2
तो WLOG (सामान्यता की हानि के बिना), मान लें कि हम उस समस्या में पहले से ही हैं जहाँ हम अब निर्दिष्ट सभी गेटों का उपयोग करते हैं। फिर यह शायद एक स्वचालित समूह नहीं है। लेकिन अगर हम कुछ संबंधों को तोड़ दें तो क्या होगा। तब हमारे पास एक और समूह होगा जिसका एक भागफल नक्शा होगा जिसे हम वास्तव में चाहते हैं।⟨g1⋯gM∣R1⋯⟩
समूह कोई संबंध एक स्वतंत्र समूह नहीं है , लेकिन तब यदि आप को एक संबंध के रूप में रखते हैं, तो आपको मुफ्त उत्पाद और पूर्व से बाद में प्रत्येक खंड modulo में की संख्या को कम करने के लिए एक भागफल मानचित्र है ।⟨g1g2∣−⟩g21=id Z2⋆Zg12
हमारे द्वारा फेंके गए संबंध ऐसे होंगे जो डिजाइन के आधार पर ऊपर की ओर (भागफल मानचित्र का स्रोत) स्वचालित होंगे। यदि हम केवल उन संबंधों का उपयोग करते हैं जो शब्द बने हुए हैं और शब्द को छोटा करते हैं, तो यह अभी भी भागफल समूह के लिए एक छोटा शब्द होगा। यह सिर्फ भागफल समूह (भागफल मानचित्र का लक्ष्य) के लिए इष्टतम नहीं होगा, लेकिन इसके साथ शुरू होने वाली लंबाई के लिए इसकी लंबाई होगी।≤
यह सामान्य विचार था, हम इसे एक विशिष्ट एल्गोरिथ्म में कैसे बदल सकते हैं?
स्वचालित समूह प्राप्त करने के लिए हम और संबंधों को कैसे चुनते हैं ? यह वह जगह है जहां हम आमतौर पर उपयोग किए जाने वाले प्राथमिक फाटकों के प्रकार के बारे में जानकारी प्राप्त करते हैं। बहुत सारे प्रस्ताव हैं, इसलिए केवल उन्हीं को रखें। इस तथ्य पर ध्यान रखें कि ये केवल प्राथमिक आक्रमण हैं, इसलिए यदि आपके हार्डवेयर में एक कठिन समय स्वैपिंग क्वैबिट है, जो आपकी चिप पर अलग-अलग हैं, तो यह उन्हें केवल उन लोगों में लिख रहा है जिन्हें आप आसानी से कर सकते हैं और उस शब्द को कम कर सकते हैं जितना संभव हो उतना कम हो।gi
उदाहरण के लिए, मान लें कि आपके पास IBM कॉन्फ़िगरेशन है । फिर अनुमति गेट हैं। यदि आप एक सामान्य क्रमपरिवर्तन करना चाहते हैं, तो इसे कारकों में विघटित करें । यह समूह में एक शब्द है जिसे हम छोटा करना चाहते हैं ।s01,s02,s12,s23,s24,s34si,i+1⟨s01,s02,s12,s23,s24,s34∣R1⋯⟩
ध्यान दें कि ये मानक इनवोल्यूशन नहीं हैं। आप उदाहरण के लिए अलावा में फेंक सकते हैं । गोट्समैन-निल प्रमेय के बारे में सोचें , लेकिन एक सार तरीके से इसका मतलब है कि इसे सामान्य करना आसान होगा। जैसे कि संपत्ति का उपयोग करना, जो कि कम सटीक अनुक्रमों के तहत, यदि आपके पास दो पक्षों के लिए पूर्ण पुनर्लेखन प्रणाली है, तो आपको मध्य समूह के लिए एक मिलता है। यह टिप्पणी शेष उत्तर के लिए अनावश्यक है, लेकिन यह बताती है कि आप इस उत्तर में लोगों से बड़े सामान्य उदाहरण कैसे बना सकते हैं।R(θ)XR(θ)−1X
जो संबंध रखे गए हैं, वे केवल फॉर्म । यह एक कॉक्सेटर समूह देता है और यह स्वचालित है। वास्तव में, हमें इस स्वचालित संरचना के लिए एल्गोरिथ्म को कोड करने के लिए खरोंच से शुरू करने की भी आवश्यकता नहीं है। यह पहले से ही सामान्य प्रयोजन में सेज (पायथन आधारित) में लागू किया गया है । आपको केवल निर्दिष्ट करना है और इसका शेष कार्यान्वयन पहले ही हो चुका है। आप उसके ऊपर कुछ स्पीडअप कर सकते हैं।(gigj)mij=1mij
mij फाटकों के स्थानीयता गुणों के कारण गणना करना वास्तव में आसान है। यदि द्वार अधिकांश -local पर हैं, तो की गणना आयामी हिल्बर्ट स्थान पर की जा सकती है । ऐसा इसलिए है क्योंकि यदि सूचकांक ओवरलैप नहीं होते हैं, तो आप जानते हैं कि । तब है जब और लघुकरण करते हैं। आपको केवल आधे से भी कम प्रविष्टियों की गणना करनी होगी। इसका कारण यह है मैट्रिक्स है सममित है, है विकर्ण (पर की )। इसके अलावा, अधिकांश प्रविष्टियाँ सिर्फ शामिल किए गए चैंबरों का नाम बदल रही हैं, यदि आप के आदेश को जानते हैंkmij22k−1mij=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 शामिल नहीं है । इससे हम अपघटन कर सकते हैं, जब तक संभव हो है। हम जैसी स्थितियों से बचना चाहते हैं । (क्लिफ + टी में अक्सर टी-काउंट कम से कम करना चाहता है)। इस भाग के लिए, निर्भरता दिखाने वाला निर्देशित चक्रीय ग्राफ महत्वपूर्ण है। यह डीएजी का एक अच्छा टोपोलॉजिकल प्रकार खोजने की समस्या है। यह पूर्ववर्ती परिवर्तन के द्वारा किया जाता है जब किसी के पास विकल्प होता है कि आगे क्या उपयोग करना है। (मैं इस भाग को भी कठिन बनाने में समय बर्बाद नहीं करूँगा।)TiTni=1Tiiw1gi1w2gi2⋯wkwiX1T2X1T2X1T2X1
यदि शब्द पहले से ही इष्टतम लंबाई के करीब है, तो करने के लिए बहुत कुछ नहीं है और यह प्रक्रिया मदद नहीं करेगी। लेकिन यह क्या पाता है की सबसे बुनियादी उदाहरण के रूप में आप कई इकाइयों है और आप भूल गया एक था अगर है एक के अंत में और एक अगले की शुरुआत में, यह उस जोड़ी से छुटकारा मिल जाएगा। इसका मतलब यह है कि आप सामान्य विश्वास के साथ ब्लैक बॉक्स को रूटीन कर सकते हैं कि जब आप उन्हें एक साथ रखेंगे, तो उन सभी को रद्द कर दिया जाएगा। यह दूसरों को स्पष्ट नहीं करता है; जब लोग उपयोग करते हैं ।HiHimij≠1,2