Thứ nhất, một máy tính cổ điển thực hiện các phép toán cơ bản ở cấp độ phần cứng trong đơn vị số học và logic (ALU). Các cổng logic có điện áp đầu vào thấp và cao và sử dụng CMOS để thực hiện các cổng logic cho phép các cổng riêng lẻ được thực hiện và xây dựng để thực hiện các hoạt động lớn hơn, phức tạp hơn. Theo nghĩa này, gõ trên bàn phím là gửi tín hiệu điện, cuối cùng kết thúc bằng một lệnh (dưới dạng nhiều tín hiệu điện hơn) được gửi đến ALU, các hoạt động chính xác được thực hiện và nhiều tín hiệu được gửi trở lại, được chuyển đổi thành hiển thị pixel theo hình dạng của một số trên màn hình của bạn.
Một máy tính lượng tử thì sao?
Có hai cách có thể mà bộ xử lý lượng tử được sử dụng: tự chúng hoặc kết hợp với bộ xử lý cổ điển. Tuy nhiên, hầu hết (bao gồm ví dụ về siêu dẫn) của bạn, bộ xử lý lượng tử không thực sự sử dụng tín hiệu điện, mặc dù đây vẫn là cách chuột, bàn phím và màn hình của bạn truyền tải và nhận thông tin. Vì vậy, cần có một cách để chuyển đổi tín hiệu điện thành bất kỳ tín hiệu nào mà bộ xử lý lượng tử sử dụng (mà tôi sẽ sử dụng sau này), cũng như một số cách để nói cho bộ xử lý biết bạn muốn làm gì. Cả hai vấn đề này có thể được giải quyết cùng một lúc bằng quá trình tiền xử lý và hậu xử lý cổ điển, như trong QISKit của IBM . Microsoft đang thực hiện thêm một chút cách tiếp cận từ trên xuống trong Q #, trong đó các chương trình cho bộ xử lý lượng tử được viết giống như chương trình 'cổ điển', trái ngược với kịch bản, sau đó được biên dịch và có khả năng tối ưu hóa cho phần cứng. Đó là, nếu bạn đã có một chức năng, nó có thể thực hiện các hoạt động cổ điển, cũng như thực hiện các cuộc gọi đến bộ xử lý lượng tử để thực hiện bất kỳ hoạt động lượng tử cần thiết nào. Điều này dẫn tôi đến điểm đầu tiên:
Nếu bạn định yêu cầu một máy tính có quyền truy cập vào bộ xử lý lượng tử để tính toán một cái gì đó như , một giải pháp rất hợp lệ là chỉ cần tính toán nó trên bộ xử lý cổ điển như bình thường.2+3
OK, giả sử rằng bạn đang buộc bộ xử lý cổ điển sử dụng bộ xử lý lượng tử, trong trường hợp này là một trong những chip siêu dẫn của IBM, sử dụng các qubit transmon , giả sử, QX4 của IBM . Điều này là quá nhỏ để sửa lỗi, vì vậy hãy bỏ qua điều đó. Có ba phần để sử dụng bộ xử lý mô hình mạch: khởi tạo, tiến hóa đơn vị và đo lường, được giải thích chi tiết hơn dưới đây. Trước đó,
Transmon là gì?
Đi một vòng siêu dẫn để cho phép cặp Cooper và thêm một hoặc hai lớp tiếp xúc Josephson để cung cấp cho một Cooper hộp cặp hòn đảo ở khu vực giữa hai nút giao với Josephson ghép năng lượng Josephson , nơi mà các từ thông lượng tử Φ 0 = h / 2 e và I c là dòng tới hạn của đường giao nhau. Áp dụng điện áp V g vào hộp này sẽ tạo ra 'điện dung cổng' C g và biến đây thành một qubit điện tíchEJ=IcΦ0/2π Φ0=h/2eIcVgCgEC=(2e)2/2CC
H=EC(n−ng)2−EJcosϕ,
nϕng=CgVg/2e|n⟩=|0⟩|n⟩=|1⟩E0=ℏω0E1=ℏω1ω=ω1−ω0EC=5EJEJ≫EC and we have a
transmon. This has the advantage of longer coherence times, at a cost of reduced anharmonicity (where energy levels beyond the first two are closer together, potentially causing leakage).
Finally, we get to the main question:
How do we initialise, evolve and measure a transmon?
Adding 2 and 3 is now a 'simple' matter of initialising the qubits, performing the gates equivalent to a classical reversible adder and measuring the result, all implemented automatically. The measurement result is then returned by a classical computer as per usual.
As a bonus, it seems a little pointless to go through all that in order to implement gates that could be done on a classical computer anyway, so it turns out that it's possible to approximately implement a quantum adder, which adds two quantum (as opposed to classical) states, with some error, on one of IBM's processors.