Xây dựng một máy tính lượng tử trong mô phỏng


13

Nếu một người muốn bắt đầu xây dựng một máy tính lượng tử từ đầu trong các mô phỏng (như cách mọi người xây dựng một máy tính cổ điển từ đầu trong khóa học Nand2Tetris ), liệu có thể?

Nếu có, một số cách tiếp cận có thể là gì?

Ngoài ra, đâu sẽ là giới hạn của một cỗ máy mô phỏng như vậy, với một lượng sức mạnh tính toán cổ điển cụ thể? Ví dụ, nếu chúng tôi chọn máy tính để bàn / máy tính xách tay trung bình của bạn, giới hạn sẽ là gì? Nếu chúng ta có một siêu máy tính (như Titan) thì giới hạn sẽ là gì?


Câu trả lời:


5

Phần đầu tiên của câu hỏi của bạn có vẻ giống như một bản sao của bài đăng QC SE hiện có: Có trình giả lập cho máy tính lượng tử không? .

Tôi không hoàn toàn chắc chắn ý của bạn là gì khi xây dựng một máy tính lượng tử từ đầu trong các mô phỏng . Tuy nhiên, vâng, bạn có thể tạo mô phỏng phần mềm của máy tính lượng tử bằng máy tính xách tay / máy tính để bàn trung bình của bạn. "Giới hạn" chính xác sẽ phụ thuộc vào thông số kỹ thuật của máy tính.

Vì một máy tính lượng tử không vi phạm luận điểm Church-Turing , nên về lý thuyết, chắc chắn có thể mô phỏng một máy tính lượng tử sử dụng một máy Turing lý tưởng . Cách tiếp cận rõ ràng để mô phỏng một hệ thống như vậy đòi hỏi thời gian theo cấp số nhân trên một máy tính cổ điển và độ phức tạp không gian là một hàm số mũ của số lượng bit lượng tử được mô phỏng. Giả sử, bạn mô phỏng một máy tính lượng tử -bit, bạn cần lưu trữ khoảng 2 n bit thông tin trong máy tính cổ điển của mình mọi lúc. Hơn nữa, việc thực hiện các cổng lượng tử sẽ một lần nữa chiếm một lượng lớn tài nguyên về thời gian và độ phức tạp không gian. Việc triển khai một cổng lượng tử hoạt động trên n -qubit sẽ phải lưu trữ khoảngn2nn (vì bạn có thể biểu diễn tất cả các hoạt động của cổng lượng tử dưới dạng ma trận có kích thước 2 n × 2 n ) bit thông tin.4n2n×2n

Bạn có thể sắp xếp ước tính "giới hạn" tùy theo thông số kỹ thuật của máy tính cổ điển. Ví dụ: nếu kích thước bộ nhớ (có thể truy cập) của máy tính cổ điển của bạn là khoảng TB, tôi mong bạn có thể mô phỏng nhật ký 4 ( 8 × 10 12 ) Máy tính lượng tử 21 bit (để ở bên an toàn, giả sử là 20 ). Tuy nhiên, hãy nhớ rằng máy tính cổ điển sẽ mất nhiều thời gian hơn để truy cập tất cả các bit thông tin riêng lẻ, so với máy tính lượng tử thực tế (tùy thuộc vào phần cứng của máy tính lượng tử). Vì vậy, nó sẽ chậm hơn1đăng nhập4(số 8×1012)2120hơn một máy tính lượng tử thực tế! Một số hạn chế khác là sau mỗi hành động của cổng -bit bạn cần theo dõi các qubit đầu ra nào bị vướng, đây là một vấn đề khó NP . Ngoài ra, phép đo không thể được mô phỏng chính xác trên máy tính cổ điển, vì theo kinh điển không có trình tạo số thực sự ngẫu nhiên .n


Bạn thực sự có thể mô phỏng thêm một chút qubit nếu bạn chỉ sử dụng cổng 1 và 2 qubit để phân rã đơn vị lớn của bạn và hành động ở trạng thái tinh khiết. Với 8GB RAM, bạn có thể dễ dàng thực hiện 25 qubit với độ chính xác gấp đôi.
vsoftco

4

Chà, hiện tại tôi đang làm việc trên một trình giả lập của một máy tính lượng tử. Tất nhiên, ý tưởng cơ bản của điện toán lượng tử là các cổng được biểu thị bằng ma trận áp dụng cho các qubit được biểu thị bằng các vectơ. Sử dụng gói numpy của Python, điều này không khó để lập trình theo nghĩa cơ bản nhất.

Từ đó, người ta có thể mở rộng, tất nhiên, giao diện. Người ta cũng có thể xem xét việc cố gắng làm cho nó trở thành một trình giả lập của một máy tính lượng tử phi âm, nghĩa là tính đến thời gian trang trí và sửa lỗi.

Sau đó, bạn nhận được vào lãnh thổ chưa được khám phá. Làm thế nào để bạn xây dựng tập lệnh cho một máy tính lượng tử? Ai biết. Bạn sẽ phải tìm ra. Bạn cũng sẽ phải tìm ra phiên bản lắp ráp của bạn và thậm chí cả phiên bản ngôn ngữ lập trình cấp cao hơn của bạn.

Vì vậy, những hạn chế của một máy tính cổ điển trong này? Chà, đây là một câu hỏi thực sự phức tạp (và đáng để hỏi riêng, imho) nhưng đây là một bản tóm tắt nhanh:

  • chúng ta không biết máy tính lượng tử có thực sự tốt hơn máy tính cổ điển hay không; các thuật toán cho máy tính cổ điển có thể chưa đủ tốt (tối cao lượng tử)
  • giả sử, như có vẻ decently có khả năng, mà các máy tính lượng tử tốt hơn so với các máy tính cổ điển. sự cải thiện đó sẽ phụ thuộc rất nhiều vào vấn đề - ví dụ, máy tính lượng tử có thể thấy, sự cải thiện tốc độ cao hơn nhiều trong việc tìm kiếm các yếu tố chính so với việc kiểm tra email. (xem thêm này P.SE q / a.)
  • Ôi(e649(đăng nhậpN)13(đăng nhậpđăng nhậpN)23)Ôi((đăng nhậpN)2(đăng nhậpđăng nhậpN)(đăng nhậpđăng nhậpđăng nhậpN))
  • |0|1

4

Tôi cảm thấy câu trả lời này chủ yếu dựa vào sự hiểu lầm tiềm ẩn về ý nghĩa của việc "mô phỏng" một cái gì đó.

Nói chung, để "mô phỏng" một hệ thống phức tạp có nghĩa là tái tạo một số tính năng nhất định của hệ thống đó với một nền tảng dễ kiểm soát hơn (thường, nhưng không phải lúc nào cũng là máy tính cổ điển).

Do đó, câu hỏi liệu "người ta có thể mô phỏng một máy tính lượng tử trong một máy tính cổ điển" hay không được đặt ra. Nếu bạn muốn nói rằng bạn muốn sao chép mọi khía cạnh có thể có của một "máy tính lượng tử", thì điều đó sẽ không bao giờ xảy ra, giống như bạn sẽ không bao giờ có thể mô phỏng mọi khía cạnh của bất kỳ hệ thống cổ điển nào (trừ khi bạn sử dụng giống hệt nhau hệ thống tất nhiên).

Mặt khác, bạn chắc chắn có thể mô phỏng nhiều khía cạnh của một thiết bị phức tạp như "máy tính lượng tử". Ví dụ, người ta có thể muốn mô phỏng sự tiến hóa của một trạng thái trong mạch lượng tử. Thật vậy, điều này có thể cực kỳ dễ làm! Ví dụ: nếu bạn có python trên máy tính của mình, chỉ cần chạy như sau

import numpy as np
identity_2d = np.diag([1, 1])
pauliX_gate = np.array([[0, 1], [1, 0]])
hadamard_gate = np.array([[1, 1], [1, -1]]) / np.sqrt(2)

cnot_gate = np.kron(identity_2d, pauliX_gate)
H1_gate = np.kron(hadamard_gate, identity_2d)

awesome_entangling_gate = np.dot(cnot_gate, H1_gate)

initial_state = np.array([1, 0, 0, 0])
final_state = np.dot(awesome_entangling_gate, initial_state)
print(final_state)

Xin chúc mừng, bạn chỉ "mô phỏng" sự tiến hóa của trạng thái hai qubit có thể tách rời thành trạng thái Bell!

n2n(1)(2)

Các câu trả lời khác đã chạm vào các khía cạnh khác nhau của độ cứng này và câu trả lời cho câu hỏi khác này đã đề cập đến nhiều nền tảng có sẵn để mô phỏng / mô phỏng các khía cạnh khác nhau của thuật toán lượng tử, vì vậy tôi sẽ không đến đó.


(1) Một ví dụ thú vị về vấn đề này là vấn đề mô phỏng thiết bị lấy mẫu boson (đây không phải là thuật toán lượng tử theo nghĩa trạng thái phát triển qua một loạt cổng, nhưng dù sao đó cũng là một ví dụ về thiết bị lượng tử không cần thiết). BosonSampling là một vấn đề lấy mẫu , trong đó một có nhiệm vụ với các vấn đề về lấy mẫutừ một phân phối xác suất cụ thể, và điều này đã được thể hiện (theo các giả định có khả năng) là không thể thực hiện hiệu quả với một thiết bị cổ điển. Mặc dù nó chưa bao giờ được coi là một khía cạnh cơ bản của độ cứng này, nhưng một vấn đề chắc chắn không cần thiết liên quan đến việc mô phỏng thiết bị lấy mẫu boson là việc phải tính toán một số lượng lớn xác suất theo mẫu theo cấp số nhân. Tuy nhiên, gần đây đã cho thấy rằng thực sự người ta không cần phải tính toán toàn bộ xác suất để lấy mẫu từ chúng ( 1705.006861706.01260). Về nguyên tắc, điều này không quá xa so với việc mô phỏng sự tiến hóa của rất nhiều qubit trong mạch lượng tử mà không phải lưu trữ toàn bộ trạng thái của hệ thống tại bất kỳ điểm nào. Liên quan đến các mạch lượng tử trực tiếp hơn, các ví dụ về sự đột phá gần đây trong khả năng mô phỏng là 1704,011271710.05867 (cũng là một siêu gần đây, chưa được công bố, là 1802.06952 ).

(2) Trên thực tế, nó đã được chứng minh (hay đúng hơn là bằng chứng mạnh mẽ đã được cung cấp cho thực tế) rằng không thể mô phỏng hiệu quả hầu hết các mạch lượng tử, xem 1504.07999 .

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.