Tự động biên dịch mạch lượng tử


12

Một câu hỏi gần đây đã hỏi làm thế nào để biên dịch CCCZ cổng 4 qubit (kiểm soát được kiểm soát có kiểm soát-Z) thành các cổng 1 qubit và 2 qubit đơn giản, và câu trả lời duy nhất cho đến nay cần 63 cổng !

Bước đầu tiên là sử dụng cấu trúc C n U do Nielsen & Chuang đưa ra:n

Với n=3 điều này có nghĩa là 4 cổng CCNOT và 3 cổng đơn giản (1 CNOT và 2 Hadamards là đủ để thực hiện CZ cuối cùng trên qubit mục tiêu và qubit công việc cuối cùng).

Định lý 1 của bài viết này , nói rằng nói chung, CCNOT yêu cầu 9 cổng một qubit và 6 cổng hai qubit (tổng cộng 15):

enter image description here


Điều này có nghĩa là:

(4 CCNOT) x (15 cổng mỗi CCNOT) + (1 CNOT) + (2 Hadamards) = 63 tổng số cổng .

Trong một bình luận , người ta đã đề xuất 63 cổng sau đó có thể được biên dịch thêm bằng cách sử dụng "thủ tục tự động", ví dụ từ lý thuyết về các nhóm tự động .

Làm thế nào việc "biên dịch tự động" này có thể được thực hiện, và nó sẽ làm giảm bao nhiêu số cổng 1 qubit và 2 qubit trong trường hợp này?


1
Tôi đang ở giữa một vài điều nhưng phát hiện ra câu hỏi của bạn. Cổng Sørenen toàn cầu là 2 cổng qubit và bài báo Sử dụng các tương tác toàn cầu trong các công trình mạch lượng tử hiệu quả mô tả: "Tối ưu hóa việc thực hiện cổng CCCZ bằng ba cổng GMS", xem hình 9. Bạn được hoan nghênh viết câu trả lời nếu đó là Hữu ích.
Rob

Đại diện trong hình ảnh chỉ cần 4 CCNOT, và do đó 63 cổng thay vì 93.
Dyon J Don Kiwi van Vreumingen

@DonKiwi, lưu ý! 4 CCNOT thay vì 6. Tôi đang cập nhật nó ngay bây giờ.
1271772

1
@Rob: Có vẻ như bạn đang đề xuất kết hợp X trong CCCX bằng hai Hadamards. Sau đó, CCCX có thể được phân tách giống như trong mạch Nielsen & Chaung ở trên. Đúng không? Trong câu trả lời thứ hai cho câu hỏi của DonKiwi, tôi đã làm một cái gì đó như thế này. Có vẻ như bình luận của bạn xuất hiện giống như tôi đang gõ câu trả lời đó, vì chúng cách nhau 5 phút (và tôi mất hơn 5 phút để gõ nó). Câu hỏi về "biên dịch tự động" vẫn còn tồn tại, vì thật tuyệt khi có thể xây dựng một mạch theo "cách rõ ràng" và sau đó tự động biên dịch thành một thứ gì đó hiệu quả hơn.
1271772

1
@ user1271772 - Mỗi (qu) bit giúp.
Rob

Câu trả lời:


6

Hãy g1gM là cổng cơ bản mà bạn được phép sử dụng. Cho mục đích nàyCNOT12CNOT13 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 g1gMR1 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 w1gi1w2gi2wk 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=aababbaw2=bbaba để w 1w 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à đã g1gMR1 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 đặtg12=id như một mối quan hệ, bạn sẽ có đượcsản phẩm miễn phí Z2Z 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+1s01,s02,s12,s23,s24,s34R1

R(θ)XR(θ)1X

(gigj)mij=1mij

mijkmij22k1mij=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=28K=20m

[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']

TiTin=1Tiiw1gi1w2gi2wkwiX1T2X1T2X1T2X1

HiHimij1,2


+1 !!! Rất nhiều chi tiết! Tôi đang đọc nó :)
1271772

1
@AHussain, có thể làm việc thông qua một ví dụ trong đó điều này được áp dụng cho việc xây dựng CCCZ "ngây thơ" trong câu hỏi của tôi và kết thúc với số lượng cổng nhỏ hơn không? Câu hỏi ban đầu về CCCZ hiện có 6 câu trả lời, và nhiều câu hỏi trong số đó có số lượng cổng nhỏ hơn nhiều. Tôi tự hỏi cách tiếp cận của bạn sẽ cung cấp cho số cổng.
1271772

4

Sử dụng quy trình được mô tả trong https://arxiv.org/abs/quant-ph/0303063 1 , bất kỳ cổng chéo nào - đặc biệt là cổng CCCZ - có thể được phân tách theo các ví dụ như CNOT và cổng chéo một qubit, trong đó các CNOT có thể được tối ưu hóa theo cách riêng của chúng theo quy trình tối ưu hóa cổ điển.

Tham chiếu cung cấp một mạch sử dụng 16 CNOT cho các cổng 4 qubit chéo tùy ý (Hình 4).


iIxiI{1,2,3,4}

Cũng lưu ý rằng việc xây dựng này không có nghĩa là cần phải tối ưu.


1 Lưu ý: Tôi là tác giả


Hấp dẫn. Tôi vẫn phải đọc bài báo để xem thủ tục là gì. Ngoài ra, tôi đang chờ @AHussain cho chúng tôi biết cách thực hiện bằng lý thuyết về các nhóm tự động.
1271772
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.