Làm thế nào để hoán vị (cải tổ) một đầu vào n-bit?


13

Tôi quan tâm đến một thuật toán lượng tử nhận đầu vào là một chuỗi n bit và nó tạo ra như là một phiên bản được xáo trộn lại (hoán vị) của chuỗi n bit này.

Ví dụ: nếu đầu vào là 0,0,1,1 (vì vậy n = 4 trong trường hợp này) thì các câu trả lời có thể là:

  • 0,0,1,1
  • 0,1,0,1
  • 0,1,1,0
  • 1,0,0,1
  • 1,0,1,0
  • 1,1,0,0

Lưu ý rằng chỉ có một đầu ra được tạo ngẫu nhiên trong số tất cả các đầu ra hợp lệ có thể.

Làm thế nào điều này có thể được thực hiện tốt nhất trong một thuật toán lượng tử ?

Một giải pháp cho vấn đề này đã được đề xuất như là một phần của một trong những câu trả lời cho Cách tạo thuật toán lượng tử tạo ra chuỗi 2 n bit với số lượng 1 bit bằng nhau? . Nhưng vấn đề với giải pháp này là điều này đòi hỏi khoảng qubit trợ giúp sẽ trở nên rất lớn nếu n lớn.(n2)

Ghi chú:

  • Xin vui lòng, không cung cấp một thuật toán cổ điển mà không có bất kỳ lời giải thích nào về cách các bước của thuật toán cổ điển có thể được ánh xạ tới một máy tính lượng tử phổ quát.
  • đối với tôi có 2 cách tốt để diễn giải "được chọn ngẫu nhiên trong số tất cả các kết quả đầu ra tốt" : (1) mỗi đầu ra tốt có thể có cơ hội được chọn như nhau. (2) mỗi đầu ra tốt có thể có cơ hội> 0 được chọn.

1
Đầu vào là một chuỗi nhị phân có độ dài n nơi k của các bit là 1, và đầu ra là bất kỳ của hoán vị có thể có của nó? Điều này có thể được thực hiện trên một máy tính cổ điển với 1 bước. Bạn có muốnalllđầu ra có thể? (nk)1
1271772

Không, chỉ có một đầu ra được tạo ngẫu nhiên trong số tất cả các đầu ra có thể.
JanVdA

Một thuật toán cổ điển sẽ đủ tốt? (Bạn vẫn có thể chạy nó trên máy tính lượng tử.) Hoặc bạn yêu cầu sth. cái nào vượt trội hơn thuật toán cổ điển tốt nhất?
Norbert Schuch

1
@JanVdA: Tại sao không chọn bất kỳ 1 và 0 nào và trao đổi hai trên một máy tính cổ điển?
1271772

1
Vì bạn chưa chỉ định phân phối ngẫu nhiên mà bạn muốn, tôi sẽ để chúng ở đây: DilbertXKCD ;)
Ali

Câu trả lời:


4

Nó có thể được thực hiện với qubit thêm cùng những dòng này:đăng nhậpn

  1. Chuyển đổi các qubit thêm để họ mã hóa một số chọn thống nhất một cách ngẫu nhiên.k{0,Giáo dục,n-1}

  2. Chuyển tuần hoàn các qubit đầu vào lần.k

  3. Đặt cố định cuối cùng của các qubit đầu vào ban đầu làm đầu ra và lặp lại trên trong số chúng.n-1

Đây là một thuật toán cổ điển, nhưng tất nhiên bạn có thể chạy nó trên một máy tính lượng tử, như Norbert đã đề xuất trong một bình luận. (Khía cạnh của câu hỏi liên quan đến thuật toán lượng tử vẫn chưa rõ ràng đối với tôi, vì vậy nếu chạy một thuật toán cổ điển như thuật toán mà tôi đã đề xuất trên máy tính lượng tử là không đủ, nó sẽ hữu ích cho câu hỏi được làm rõ.)

Lưu ý rằng vì câu hỏi yêu cầu một đầu ra ngẫu nhiên, thuật toán sẽ phải tạo entropy tại một số điểm, có lẽ thông qua các phép đo hoặc thực hiện các hoạt động không đơn nhất khác trên qubit (chẳng hạn như khởi tạo chúng). Trong thuật toán trên, đây là bước đầu tiên tạo ra entropy: bất kể trạng thái của các qubit bổ sung trước khi hoạt động ở bước 1 được thực hiện, chúng phải có trạng thái sau khi bước 1 được thực hiện (vớikđược mã hóa thành nhị phân, giả sử).

1nΣk= =0n-1|kk|
k

cảm ơn câu trả lời Tôi quan tâm đến một thuật toán lượng tử thực tế cho vấn đề - nếu bạn có thể ánh xạ thuật toán cổ điển lên trên một chương trình lượng tử thì nó cũng ổn nhưng tôi không biết làm thế nào để làm điều này.
JanVdA

2
Tôi nghĩ rằng câu hỏi hiện đang được chú trọng: bạn không thực sự tìm kiếm một thuật toán, bạn đang tìm kiếm mã. Những gì tôi đã mô tả là một thuật toán và nhiệm vụ còn lại là triển khai thuật toán đó (hoặc một thuật toán khác) dưới dạng mã trong một số ngôn ngữ hoặc như mô tả cấp thấp của mạch lượng tử. Tôi đề nghị bạn sửa lại câu hỏi để làm cho điều này rõ ràng hơn - nhưng lưu ý rằng bạn đang yêu cầu ai đó làm công việc tẻ nhạt và không quan tâm về mặt khái niệm cho bạn. Việc thay thế học cách tự làm điều này có vẻ khó khăn, nhưng cuối cùng có thể là giải pháp tốt hơn trong thời gian dài.
John Watky

Tôi đã thêm một lưu ý cho câu hỏi. Tôi nghĩ rằng chúng tôi đã giải thích thuật toán lượng tử khái niệm khác nhau. Đối với tôi a_groupical Thuật_ không phải là thuật toán lượng tử nhưng có thể được ánh xạ thành thuật toán lượng tử .
JanVdA

@JanVdA: Ý của thuật toán lượng tử là gì? Ví dụ, bạn có yêu cầu nó liên quan đến ít nhất một cổng không? Hoặc nó yêu cầu ít nhất một cổng Y ? Hoặc nó yêu cầu một số bộ cổng cụ thể khác? Bộ cổng nào bạn muốn cho thuật toán này sử dụng? HY
1271772

Thuật toán lượng tử là một thuật toán có thể được ánh xạ (ở cấp độ bước) đến một chương trình cho một máy tính lượng tử phổ quát. Đầu vào và đầu ra của các bước của thuật toán lượng tử là các qubit (hoặc có thể được ánh xạ tới một loạt các qubit). Bước cuối cùng của thuật toán lượng tử = đọc ra (quan sát) các giá trị của các qubit (vì vậy các qubit được ánh xạ tới các bit thực tế) Không có giới hạn nào đối với bộ cổng. Ý tưởng là thuật toán hoàn chỉnh có thể chạy trên một máy tính lượng tử phổ quát.
JanVdA

3

Lưu ý: câu trả lời này giả sử bạn muốn hoán vị được kết hợp , tức là bạn muốn thay vì một cơ hội 1/3001, một cơ hội 1/3010, và một cơ hội 1/3100.13(|001+|010+|100)001010100

Hãy cẩn thận cách bạn chỉ định nhiệm vụ này, bởi vì nó có thể rất dễ dàng là không thể do các ràng buộc đảo ngược. Ví dụ, cho đầu vào bạn muốn ra tình trạng GHZ | 3|001. Nhưng nếu bạn cũng muốn xuất trạng thái GHZ cho đầu vào| 010| 100, rằng sẽ không làm việc. Bạn không thể gửi nhiều trạng thái đầu vào đến cùng một trạng thái đầu ra (không có trang trí). Miễn là bạn nói "Tôi chỉ quan tâm đến các đầu vào tăng dần được sắp xếp như 0000111 chứ không phải 1110000 hoặc 0010110; bạn có thể làm bất cứ điều gì bạn muốn với những thứ đó", điều này sẽ ổn.|31=13(|001+|010+|100)|010|100

Một mẹo để tạo ra hoán vị lượng tử của đầu vào được sắp xếp là trước tiên hãy chuẩn bị "trạng thái hoán vị" bằng cách áp dụng một mạng sắp xếp vào danh sách các giá trị hạt giống trong một chồng chất thống nhất. Mạng phân loại sẽ tạo ra các qubit giữ các hạt được sắp xếp, nhưng cũng có các qubit giữ các so sánh mạng sắp xếp. Trạng thái hoán vị chỉ là các qubit so sánh. Để áp dụng nó cho đầu vào của bạn, bạn chỉ cần chạy đầu vào thông qua mạng sắp xếp theo chiều ngược lại. Lưu ý rằng có một số chi tiết khó khăn ở đây; xem bài viết " Các kỹ thuật được cải tiến để chuẩn bị bản địa của người Hamilton Fermionic ". Bạn sẽ phải khái quát kỹ thuật này để làm việc trên các đầu vào với các giá trị lặp lại, thay vì chỉ các giá trị duy nhất.

|nknk

|000114|41|0011|4216


13(|001+|010+|100)|00113(|001|010+i.|100)

1
@JanVdA Đúng, người ta có thể sử dụng các pha để tạo ra các đầu ra khác nhau trực giao. Tôi đọc câu hỏi của bạn là bạn muốn cùng một giai đoạn trong mọi trường hợp.
Craig Gidney

0

Một máy tính lượng tử có thể làm các tính toán cổ điển. Thuật toán tối ưu sẽ là:

  1. Chọn bất kỳ bit nào (nhanh nhất bạn có thể truy cập).
  2. Tìm một bit có giá trị ngược lại (nếu ở bước 1 bạn có 0, hãy tìm 1)
  3. Chuyển đổi chúng (0 trở thành 1 và 1 trở thành 0).

NO(N)nthO(N)


Cảm ơn nhưng thuật toán sẽ chỉ chuyển đổi 2 bit (vì vậy nó sẽ không tạo ra tất cả các hoán vị) và nó vẫn là một thuật toán cổ điển, trong khi tôi muốn xem một thuật toán lượng tử.
JanVdA
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.