g1⋯gMCNOT12CNOT13MnkxyCZM=xn+(n2)y
CNOT12CNOT12=Id ⟨g1⋯gM∣R1⋯⟩
ปัญหาที่เราต้องการแก้ไขได้รับคำในกลุ่มนี้สิ่งที่เป็นคำที่สั้นที่สุดที่แสดงถึงองค์ประกอบเดียวกัน สำหรับการนำเสนอของกลุ่มทั่วไปสิ่งนี้จะสิ้นหวัง การเรียงลำดับของงานนำเสนอกลุ่มที่สามารถเข้าถึงปัญหานี้เรียกว่าอัตโนมัติ
giw1gi1w2gi2⋯wkwigi
aababbacbbabacw1=aababbaw2=bbabaw^1w^2w^1cw^2
⟨g1⋯gM∣R1⋯⟩
⟨g1g2∣−⟩g21=id Z2⋆Zg12
≤
นั่นคือแนวคิดทั่วไปเราจะเปลี่ยนมันเป็นอัลกอริทึมเฉพาะได้อย่างไร
gi
s01,s02,s12,s23,s24,s34si,i+1⟨s01,s02,s12,s23,s24,s34∣R1⋯⟩
R(θ)XR(θ)−1X
(gigj)mij=1mij
mijkmij22k−1mij=2mij=2gigjmij1(gigi)1=1(CNOT12H1)CNOT37H3
3
ทุกครั้งที่คำนั้นสั้นลงหรือมีความยาวเท่ากันและเราใช้อัลกอริทึมที่มีพฤติกรรมเชิงเส้นหรือกำลังสองเท่านั้น นี่เป็นขั้นตอนที่ค่อนข้างถูกดังนั้นจึงควรทำและแน่ใจว่าคุณไม่ได้ทำอะไรโง่ ๆ
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']
TiTni=1Tiiw1gi1w2gi2⋯wkwiX1T2X1T2X1T2X1
HiHimij≠1,2