Tạo các thông báo được kiểm soát lớn hơn từ các cổng đơn, Toffoli và CNOT, không có không gian làm việc


8

Bài tập 4.29 từ tính toán lượng tử và thông tin lượng tử của Nielsen và Chuang đã làm tôi bối rối.

Tìm một mạch chứa Toffoli, CNOT và các cổng qubit đơn thực hiện cổng (cho ), không sử dụng qubit nào.Ôi(n2)Cn(X)n>3

Tôi đã nhận ra rằng điều này không thể được thực hiện một cách cổ điển .

Tôi đã tìm ra cách thực hiện với cổng chính xác theo cấp số nhân (lồng tổ chức điều khiển kép từ điều khiển đơn-điều khiển và căn bậc hai của hoạt động bên trong chính nó lần).Ôi(2n)n-2

Tôi đã cố gắng khái quát hóa việc xây dựng ở trên để tích lũy một tổ hợp tuyến tính của các hoạt động được kiểm soát. Ví dụ: nếu tôi có 3 điều khiển được gọi là A và B và C và tạo một vectơ của các trường hợp khác nhau [0, A, B, C, AB, BC, AC, ABC] thì:

  • Áp dụng một hoạt động vô điều kiện thêm [1, 1, 1, 1, 1, 1, 1, 1]
  • Kiểm soát một hoạt động trên A thêm [0, 1, 0, 0, 1, 1, 0, 1]
  • Xending A vào C sau đó điều khiển một thao tác trên C (sau đó hoàn tác xor) sẽ thêm [0, 1, 0, 1, 1, 1, 0, 0]
  • Xoring (A và B) vào C thông qua cổng toffoli sau đó kiểm soát thao tác trên C sẽ thêm [0, 0, 0, 1, 1, 1, 1, 0]

Sau đó, tôi sẽ cố gắng thêm (áp dụng một gốc của X) và trừ (áp dụng căn bậc hai nghịch đảo) các vectơ khác nhau mà tôi có thể thực hiện cho đến khi kết quả xuất hiện dưới dạng [0, 0, 0, 0, 0, 0, 0, N] .

Nhưng tôi tiếp tục va vào nhiều bức tường khác nhau, chẳng hạn như các giải pháp kết thúc bằng bội số lớn (tức là các cổng tôi đang sử dụng trở nên chính xác theo cấp số nhân, mà tôi nghĩ là không) hoặc chỉ không thể giải quyết hệ thống do sự tương tác giữa tạo các phần tử với AND / XOR sau đó giải quyết với + / * là không chuẩn hoặc tạo số cổng theo cấp số nhân.

Một số phương pháp khác để thử là gì?

Câu trả lời:


5

Ôi(n)

  1. Xây dựng các công cụ kiểm soát lớn (theo cách cổ điển, với ancilla)

  2. Xây dựng các phần tăng lớn (theo cách cổ điển, với một ancilla)

  3. Sử dụng Cổng lượng tử thay vì Ancilla Bits

Tất nhiên sẽ rất tệ nếu bạn tìm thấy điều này hai mươi năm kể từ bây giờ và trang web của tôi đã mất từ ​​lâu, vì vậy các bước cơ bản tuân theo hình ảnh được mô tả nhanh chóng.

1. Bootstrap một bit Ancilla có thể vay

Sử dụng một căn bậc hai và nghịch đảo của nó để giảm số lượng điều khiển tối đa xuống một, tạo ra một dây chưa được xử lý cho mỗi thao tác. Sau đó, lặp đi lặp lại điều khiển các hoạt động không phải của Không hoạt động, và sắp xếp lại hành trình dẫn đến các cổng tăng lớn và cổng pha đơn qubit.

Khởi động một bit Ancilla

2. Sử dụng Bit Ancilla đơn để cắt giảm một nửa hoạt động

Đối với mỗi hoạt động lớn, sử dụng dây chưa được xử lý như một bit ancilla mượn. Sử dụng nó để biến đổi các bước tăng khổng lồ và các cổng không được kiểm soát thành các hoạt động nhỏ hơn mà mỗi cổng có khoảng một nửa số dây không được giải quyết. Lặp lại hai lần, nếu cần cho bước tiếp theo để có đủ không gian làm việc.

Giảm một nửa kích thước được kiểm soát-Không phải với Ancilla

Giảm một nửa kích thước tăng dần với Ancilla

3. Sử dụng nhiều bit Ancilla để kết thúc

Đối với mỗi hoạt động vẫn còn quá lớn, hãy mượn nhiều dây chưa được xử lý dưới dạng các bit ancilla. Sử dụng chúng để đi xuống cổng Toffoli hoặc nhỏ hơn.

Giảm kiểm soát-Không đến Toffolis

Giảm phần tăng lên Toffolis

Ba bước này sẽ giúp bạn hoàn toàn từ một cổng Toffoli, CNOT và một qubit tuyến tính được kiểm soát hoàn toàn. Có một vài phần ngụ ý, như cách hợp nhất một điều khiển vào một cổng tăng, nhưng chúng khá đơn giản.

(Xin lỗi vì phong cách không nhất quán của sơ đồ.)

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.