Let g1⋯gM sen kullanımına izin verildiğini temel kapıları olun. Bu CNOT12 ve CNOT13 vb. Amaçlarına yönelik olarak ayrı muamele edilir. Dolayısıyla M , polinom olarak n , kubit sayısına bağımlıdır . Kesin bağımlılık, kullandığınız çeşitli kapıların detaylarını ve ne kadar k yerel olduklarını içerir. Örneğin, x tek kübit kapıları ve C Z gibi düzene bağlı olmayan y 2-kubit kapıları varsa .CZM=xn+(n2)y
Bir devre daha sonra bir sıra bu jeneratörlerin bir ürünüdür. Ama hiçbir şey yapmayan birden fazla devre var. Gibi . Böylece grup üzerinde ilişkiler kurarlar. Bu, birçok ilişkinin olduğu bir grup sunumu .CNOT12CNOT12=Id ⟨ g 1 ⋯ g E | R ' 1 ⋯ ⟩ ⟨g1⋯gM∣R1⋯⟩
Çözmek istediğimiz soruna bu grupta aynı öğeyi temsil eden en kısa kelime olan bir kelime verilmiştir. Genel grup sunumları için bu umutsuzdur. Bu sorunun erişilebilir olduğu grup sunumuna otomatik denir.
Ancak daha basit bir sorunu düşünebiliriz. Biz bazılarını atarsan , biçimi haline gelmeden dan sonra kelimeler her yerde kelimeler geriye kalan tek harfler bulunmaktadır. içermeyen ilişkileri kullanarak onları daha kısa hale getirmeyi , tüm devreyi kısaltırız. Bu, CNOT'ları diğer cevapta kendi başlarına optimize etmeye benzer.giw1gi1w2gi2⋯wkwigi
Örneğin, orada üç jeneratörler ve kelime olup olmadığını , ama biz uğraşmak istemiyoruz , edeceğiz yerine kısaltması ve için ve . Daha sonra onları olarak bir araya getirdik ve bu orijinal kelimenin kısalmasıdır.aababbacbbabacw1=aababbaw2=bbabaw^1w^2w^1cw^2
Diyelim ki WLOG (genelleme kaybı olmadan), şimdi belirtilen tüm kapıları kullandığımız yerde zaten olduğumuzu . Yine bu muhtemelen otomatik bir grup değildir. Ama ya bazı ilişkileri dışarı atarsak. Daha sonra, gerçekten istediğimiz noktaya kadar bir bölüm haritası olan başka bir grubumuz olacak.⟨g1⋯gM∣R1⋯⟩
Grup hiçbir ilişkileri olan bir serbest grup Eğer koyarsanız, ama sonra bir ilişki olarak elde edersiniz ücretsiz ürün ve her bölüm modülo sayısını azaltan bir bölüm haritası vardır .⟨g1g2∣−⟩g21=id Z2⋆Zg12
Ortaya koyduğumuz ilişkiler, üstteki (bölüm haritasının kaynağı) tasarımla otomatik olacak. Yalnızca sözcüğü kalan ve kısaltan ilişkileri kullanırsak, bölüm grubu için daha kısa bir kelime olacaktır. Sadece bölüm grubu (bölüm haritasının hedefi) için uygun olmaz, ancak başlangıç uzunluğu ile uzunluğuna sahip olur.≤
Genel fikir buydu, bunu belirli bir algoritmaya nasıl dönüştürebiliriz?
Otomatik bir grup almak için atılacak ve ilişkileri nasıl ? Bu, tipik olarak kullandığımız temel kapı türleri hakkında bilginin devreye girdiği yerdir. Çok fazla katılım vardır, bu yüzden sadece bunları saklayın. Bunların sadece temel konular olduğuna dikkat edin, bu yüzden donanımınızın çipinizde büyük ölçüde ayrılmış kübitleri değiştirmekte zorlanıyorsa, bu onları sadece kolayca yapabileceğinizlere yazıyor ve bu kelimeyi olabildiğince kısa olmalıdır.gi
Örneğin , IBM yapılandırmanız olduğunu varsayalım . Sonra izin verilen kapılardır. Genel bir permütasyon yapmak istiyorsanız, bunu faktörlerine . Bu gruptaki bir kelimedir istediğimiz o kısaltmak için .s01,s02,s12,s23,s24,s34si,i+1⟨s01,s02,s12,s23,s24,s34∣R1⋯⟩
Bunların standart müdahaleler olması gerekmediğini unutmayın. Örneğin ek olarak 'yi atabilirsiniz . Gottesman-Knill teoremini düşünün , ancak soyut bir şekilde genellemenin daha kolay olacağı anlamına gelir. Kısa tam diziler altında özelliği kullanmak gibi, eğer iki taraf için sonlu tam yeniden yazma sistemleriniz varsa, o zaman orta grup için bir tane alırsınız. Bu yorum cevabın geri kalanı için gereksizdir, ancak bu cevabındakilerden daha büyük daha genel örnekleri nasıl oluşturabileceğinizi gösterir.R(θ)XR(θ)−1X
ilişkiler sadece biçimindedir . Bu bir Coxeter grubu verir ve otomatiktir. Aslında, bu otomatik yapı için algoritmayı kodlamak için sıfırdan başlamak zorunda bile değiliz. Zaten Sage'de (Python tabanlı) genel amaçlı olarak uygulanmaktadır. Tek yapmanız gereken belirtmektir ve kalan uygulama zaten yapılır. Bunun üzerine bazı hızlandırmalar yapabilirsiniz.(gigj)mij=1mij
mij , kapıların yerellik özellikleri nedeniyle hesaplamak gerçekten kolaydır. Kapılar en ise -lokal, daha sonra hesaplama bir yapılabilir boyutlu bir Hilbert alanı. Bunun nedeni, endekslerin çakışmaması durumunda olduğunu bilirsiniz . , ve gidip . Ayrıca, girişlerin yalnızca yarısından daha azını hesaplamanız gerekir. Bunun nedeni, matrisinin simetrik olması, diyagonalde '(s) olması ( ). Ayrıca girişlerin çoğu sadece ilgili qubits yeniden adlandırıyor, böylece sırasını biliyorsanızkmij22k−1mij=2mij=2gigjmij1(gigi)1=1(CNOT12H1) , hesaplamayı tekrarlamadan .CNOT37H3
Bu, yalnızca en fazla iki ayrı kapıyı kapsayan tüm ilişkileri halletti (kanıt: egzersiz). ya da daha fazlasını içeren ilişkilerin tamamı atıldı. Şimdi onları geri koyduk. Diyelim ki elimizde Dehn'in açgözlü algoritmasını yeni ilişkiler kullanarak yapabiliriz . Bir değişiklik olsaydı, tekrar Coxeter grubundan geçmek için geri çektik. Hiçbir değişiklik kalmayana kadar bu tekrarlanır.3
Kelime her zaman kısalıyor veya aynı uzunlukta kalıyor ve yalnızca doğrusal veya karesel davranışa sahip algoritmalar kullanıyoruz. Bu oldukça ucuz bir işlemdir, bu yüzden de yapabilir ve aptalca bir şey yapmadığınızdan emin olabilirsiniz.
Kendiniz test etmek istiyorsanız, jeneratör sayısını , denediğiniz rastgele kelimenin uzunluğunu ve Coxeter matrisini .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)
Bir ile örnek N=28
ve K=20
ilk iki hat girişi indirgenmemiş sözcük sonraki iki indirgenmiş kelimedir. Umarım matrisine girerken yazım hatası yapmadım .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']
gibi jeneratörleri geri koyarsak, sadece gibi ilişkileri geri koyarız ve qubit içermeyen kapılarla gidip gelmesi . Bu, daha önce mümkün olduğunca uzun süre . gibi durumlardan kaçınmak istiyoruz . (Cliff + T'de genellikle T-sayısını en aza indirmeye çalışır). Bu kısım için, bağımlılığı gösteren yönlendirilmiş asiklik grafik çok önemlidir. Bu, iyi bir topolojik DAG türü bulma problemidir. Bu, daha sonra hangi tepe noktasının kullanılacağına dair bir seçeneğe sahip olduğunda önceliği değiştirerek yapılır. (Bu parçayı optimize etmek için zaman harcamam.)TiTni=1Tiiw1gi1w2gi2⋯wkwiX1T2X1T2X1T2X1
Kelime zaten en uygun uzunluğa yakınsa, yapacak çok şey yoktur ve bu prosedür yardımcı olmaz. Birden birimleri varsa ve bir olduğunu unutmuşum Ama eğer bu sorgulama en temel örneği olarak ise birinin sonunda bir , o çiftin kurtulmak gelecek başında. Bu, ortak rutinleri, onları bir araya getirdiğinizde, bu bariz iptallerin hepsinin yerine getirileceğinden daha güvenli bir şekilde kara kutuya alabileceğiniz anlamına gelir. O kadar açık olmayan başkalarını yapar; Bu kullanım sırasında .HiHimij≠1,2