Hãy g1⋯gM là cổng cơ bản mà bạn được phép sử dụng. Cho mục đích nàyCNOT12 vàCNOT13 vv được coi là riêng biệt. VậyM phụ thuộc đa số vàon , số lượng qubit. Sự phụ thuộc chính xác liên quan đến chi tiết về các loại cổng bạn sử dụng và mức độk chúng. Ví dụ: nếu cóx cổng qubit đơn vày cổng2 qubit không phụ thuộc vào thứ tự nhưCZ thìM=xn+(n2)y.
Một mạch sau đó là một sản phẩm của những máy phát điện theo thứ tự nào đó. Nhưng có nhiều mạch không làm gì cả. Giống như CNOT12CNOT12=Id . Vì vậy, những người đưa ra quan hệ trên nhóm. Đó là nó là một bài thuyết trình nhóm ⟨g1⋯gM∣R1⋯⟩ nơi có nhiều mối quan hệ mà chúng ta không biết.
Vấn đề chúng tôi muốn giải quyết được đưa ra một từ trong nhóm này, đâu là từ ngắn nhất đại diện cho cùng một yếu tố. Đối với các bài thuyết trình nhóm nói chung, điều này là vô vọng. Loại trình bày nhóm trong đó vấn đề này có thể truy cập được gọi là tự động.
Nhưng chúng ta có thể xem xét một vấn đề đơn giản hơn. Nếu chúng ta loại bỏ một số gi , thì các từ từ trước trở thành dạng w1gi1w2gi2⋯wk trong đó mỗi từ wi chỉ là các từ trong các chữ cái còn lại. Nếu chúng tôi quản lý để làm cho chúng ngắn hơn bằng cách sử dụng các mối quan hệ không liên quan đến gi , thì chúng tôi sẽ làm cho toàn bộ mạch ngắn hơn. Điều này giống như việc tối ưu hóa các CNOT theo cách riêng của họ được thực hiện trong câu trả lời khác.
Ví dụ: nếu có ba máy phát điện và từ là aababbacbbaba , nhưng chúng tôi không muốn đối phó với c , thay vào đó chúng tôi sẽ rút ngắn w1=aababba và w2=bbaba để w 1 và w 2 . Sau đó chúng tôi đặt chúng lại với nhau như w 1 cw^1w^2w^1cw^2và đó là phần làm gọn của từ gốc.
Vì vậy, wlog (mà không mất tính tổng quát), chúng ta hãy giả sử chúng ta đang ở vấn đề mà đã ⟨g1⋯gM∣R1⋯⟩ nơi bây giờ chúng tôi sử dụng tất cả các cổng cụ thể. Một lần nữa đây có lẽ không phải là một nhóm tự động. Nhưng nếu chúng ta vứt bỏ một số mối quan hệ. Sau đó, chúng tôi sẽ có một nhóm khác có bản đồ thương số xuống nhóm chúng tôi thực sự muốn.
Nhóm ⟨g1g2∣−⟩ không quan hệ là mộtnhóm tự do, nhưng sau đó nếu bạn đặtg21=id như một mối quan hệ, bạn sẽ có đượcsản phẩm miễn phí Z2⋆Z và có một bản đồ thương từ các cựu để sau này giảm số lượngg1 'trong mỗi phân đoạn modulo2 .
Các mối quan hệ chúng tôi đưa ra sẽ sao cho một tầng trên (nguồn của bản đồ thương số) sẽ được tự động theo thiết kế. Nếu chúng ta chỉ sử dụng các mối quan hệ còn lại và rút ngắn từ đó, thì nó vẫn sẽ là một từ ngắn hơn cho nhóm thương. Nó chỉ sẽ không được tối ưu cho các nhóm thương (mục tiêu của bản đồ thương), nhưng nó sẽ có độ dài ≤ chiều dài nó bắt đầu với.
Đó là ý tưởng chung, làm thế nào chúng ta có thể biến điều này thành một thuật toán cụ thể?
Làm thế nào để chúng ta chọn gi và các mối quan hệ để loại bỏ để có được một nhóm tự động? Đây là nơi kiến thức về các loại cổng cơ bản mà chúng ta thường sử dụng xuất hiện. Có rất nhiều sự liên quan, vì vậy chỉ giữ lại những cổng đó. Hãy chú ý cẩn thận đến thực tế rằng đây chỉ là những ràng buộc cơ bản, vì vậy nếu phần cứng của bạn gặp khó khăn trong việc hoán đổi các qubit được phân tách rộng rãi trên chip của bạn, thì điều này chỉ viết chúng thành những điều bạn có thể dễ dàng thực hiện và giảm từ đó thành càng ngắn càng tốt.
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
Mỗi khi từ đó trở nên ngắn hơn hoặc giữ nguyên độ dài và chúng tôi chỉ sử dụng các thuật toán có hành vi tuyến tính hoặc bậc hai. Đây là một thủ tục khá rẻ vì vậy cũng có thể thực hiện và đảm bảo bạn không làm điều gì ngu ngốc.
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