Tôi đến từ một nền tảng phi vật lý và tôi rất thích theo đuổi Máy tính lượng tử - đặc biệt là cách lập trình chúng. Bất kỳ hướng dẫn về cách bắt đầu sẽ rất hữu ích.
Tôi đến từ một nền tảng phi vật lý và tôi rất thích theo đuổi Máy tính lượng tử - đặc biệt là cách lập trình chúng. Bất kỳ hướng dẫn về cách bắt đầu sẽ rất hữu ích.
Câu trả lời:
Bạn có thể bắt đầu với phần giới thiệu về máy tính lượng tử như máy tính này từ Voxxed Days Vienna 2018 - nó dành cho những người có nền tảng lập trình nhưng ít có kiến thức trước về cơ học lượng tử. Sau đó, bạn có thể xem các hướng dẫn trong Trải nghiệm lượng tử của IBM hoặc các hướng dẫn cho Bộ công cụ phát triển lượng tử của Microsoft .
Ngoài ra, có rất nhiều video trên YouTube, ví dụ, có thể giúp bạn hiểu sâu hơn về chủ đề này.
Tôi nghĩ rằng các lập trình viên lượng tử sẽ không nhất thiết phải biết về vật lý lượng tử và đại số tuyến tính. Đây chắc chắn là những điều sẽ giúp mở rộng kiến thức lập trình lượng tử, nhưng chúng không nên được coi là điều kiện tiên quyết.
Mặc dù vậy, hầu hết các tài nguyên để giúp một lập trình viên lượng tử vừa chớm nở bắt đầu với một giả định về đại số tuyến tính. Những cái không tập trung chủ yếu vào QISKit, SDK cho thiết bị lượng tử của IBM (và một số trong số chúng được viết bởi tôi).
Chương trình đơn giản nhất bạn có thể nghĩ ra là một Hello Hello World. Làm thế nào để bạn làm điều đó cho máy tính lượng tử? Đề xuất của tôi là một chồng chất của biểu tượng cảm xúc .
Khi bạn đã vượt ra ngoài thế giới Hello Hello, trong lập trình lượng tử, bạn sẽ muốn làm một cái gì đó phức tạp hơn. Mọi người thường làm những trò chơi đơn giản. Vì vậy, hãy làm điều đó với một máy tính lượng tử. Tôi đã thực hiện Chiến hạm .
Bạn sẽ tìm thấy những điều này và nhiều ví dụ khác về lập trình lượng tử tại hướng dẫn QISKit . Tôi nghĩ rằng đó có lẽ là nơi tốt nhất cho các lập trình viên lượng tử mới để xem những gì có thể được thực hiện và làm thế nào để làm điều đó.
pyQuil là một thư viện lập trình lượng tử mã nguồn mở trong Python. Tài liệu này bao gồm phần giới thiệu về điện toán lượng tử nơi bạn học bằng lập trình. Nó không giả định bất kỳ nền tảng vật lý.
Dưới đây là một số liên kết đến các chủ đề chính:
Không cần thiết phải hiểu đầy đủ Cơ học lượng tử để hiểu lý thuyết đằng sau QC. Tôi là một BSc / lập trình viên toán học và tôi đã đọc về chủ đề này và cũng đã học khóa học edX QC cũ (tiếc là nó không có sẵn, nhưng có những thứ khác). Tôi nghĩ rằng tôi có thể nói rằng tôi hiểu ý chính của QC, nhưng tôi không biết gì về Cơ học lượng tử.
Phần quan trọng là Điện toán lượng tử sử dụng phần lớn đại số tuyến tính, dựa trên toán học thường được giảng dạy tại các nghiên cứu đại học khoa học máy tính / kỹ thuật. Tương phản điều này với Cơ học lượng tử thực sử dụng các không gian vô hạn (hoặc phân tích chức năng, nếu bạn muốn).
Nếu bạn cảm thấy thoải mái với các chủ đề toán học đại học này, bạn có thể kiểm tra Cơ học lượng tử của Susskind : Tối thiểu lý thuyết - thực tế không phải là về cơ học lượng tử 'thực', nó chủ yếu là công cụ hữu ích cho QC. BTW toàn bộ sê-ri lý thuyết Tối thiểu nhằm vào những người biết một số môn toán (như các nhà khoa học máy tính, hoặc chuyên ngành kỹ thuật), và muốn biết thêm về vật lý. Ngoài ra còn có rất nhiều khóa học trực tuyến, ví dụ, có những khóa học mới về edX, nhưng tôi đã không làm bất kỳ khóa học nào trong số đó, vì vậy tôi không thể giới thiệu một khóa học.
Nếu bạn muốn vượt qua việc học cách viết các mạch lượng tử trong các khung lập trình lượng tử khác nhau như Q # , pyQuil và QISKit , tôi rất khuyến nghị bài báo gần đây với tiêu đề Triển khai thuật toán lượng tử cho người mới bắt đầu từ Phòng thí nghiệm quốc gia Los Alamos. Đó là một nguồn tài nguyên tuyệt vời để hiểu cách biên dịch và triển khai các thuật toán lượng tử khác nhau cũng như các nhà tiên tri và chương trình con cụ thể của chúng như các mạch lượng tử với Trải nghiệm Q của IBM. Tôi khuyên bạn nên triển khai chúng trong bất kỳ khuôn khổ lập trình nào đã nói ở trên và tìm hiểu các chi tiết khó chịu khi bạn đi.
Máy tính lượng tử được lập trình bởi (phát triển ngôn ngữ lập trình đại diện) cái gọi là mạch lượng tử. Đây là một chuỗi các cổng lượng tử cộng với thông tin về các bit lượng tử (qubit) mà chúng hoạt động.
Điều duy nhất bạn thực sự cần biết về cổng lượng tử là chúng đại diện cho các phép quay (trong một không gian chiều cao hơn, được gọi là không gian Hilbert). Do đó chúng có thể đảo ngược: Máy tính lượng tử được lập trình với logic đảo ngược.
đối với hệ thống 2 qubit theo ký hiệu Dirac thông thường) sẽ nhận được một số phức dưới dạng hệ số hoặc được gọi là biên độ xác suất. Các vectơ cơ sở là trực giao và trải rộng không gian Hilbert của trạng thái, biên độ xác suất có thể được xem là tọa độ trong đó. Đây là hình ảnh trong đó các cổng lượng tử có hiệu lực xoay. Bạn sẽ thấy rằng các nhà vật lý thường sử dụng một hình ảnh khác, hình cầu Bloch, cho các hệ qubit đơn, trong đó các cổng lượng tử cũng gây ra các phép quay (nhưng đôi khi bởi một góc lớn hơn hoặc bởi một góc bị bỏ qua trong bức tranh đó hoàn toàn).
Tất cả logic thông thường có thể được thực hiện bởi một máy tính lượng tử bằng cách trước tiên diễn đạt nó bằng logic đảo ngược (có thể yêu cầu các bit ancilla). Cổng NOT cổ điển tương ứng với cổng lượng tử X, nhưng không giống như trường hợp cổ điển trong đó cổng đảo ngược 1 bit duy nhất là nhận dạng và cổng NOT, một máy tính lượng tử có bốn cổng tương ứng (X, Y, Z theo các phép quay trên Quả cầu Bloch, cộng với bản sắc). Hơn nữa, bạn có thể có các vòng quay chỉ bằng một phần nhỏ khoảng cách các cổng này xoay; một vài cái đặc biệt thú vị có tên và chữ viết tắt đặc biệt như cổng Hadamard hoặc cổng H tạo ra sự chồng chất ngang nhau của tất cả các trạng thái.
Thật không may, các kỹ sư phần mềm lượng tử ban đầu có thể sẽ phải biết một chút về phần cứng máy tính lượng tử mà họ sẽ sử dụng: Do góc quay tùy ý và liên tục của vòng xoay hiệu quả của cổng lượng tử, có một yếu tố tương tự với máy tính lượng tử mà nhất thiết phải tạo ra lỗi (và máy tính lượng tử vật lý thậm chí còn có nhiều nguồn lỗi hơn thế). Có một cách để đối phó với nó, sửa lỗi lượng tử giúp loại bỏ các lỗi và sửa các lỗi có thể xảy ra nhất để đạt được (lý tưởng) các tính toán phức tạp tùy ý với các lỗi bị ràng buộc. Nhưng tối ưu hóa có thể có nghĩa là một máy tính lượng tử với một lựa chọn sửa lỗi lượng tử sẽ thích hợp hơn ở cổng lượng tử nhất định hoặc thậm chí là thuật toán so với các thuật toán khác,