Máy tính lượng tử sẽ thay đổi chương trình như thế nào? [đóng cửa]


33

Làm thế nào là lập trình một thuật toán lượng tử khác nhau? Ngôn ngữ C giống như thế nào nếu nó được thiết kế cho các qubit? Các loại sẽ thay đổi?


Lưu ý: Tôi không chắc đây có phải là một câu hỏi hợp lệ không. Xin lỗi nếu không.
MaiaVictor

4
Tôi nghĩ rằng nó là. Sau đó, một lần nữa, tôi không thực sự biết các quy tắc của trang web này rất tốt. Và tôi thực sự không có câu trả lời tuyệt vời cho câu hỏi này, nhưng tôi biết thuật toán này có thể được sử dụng cho các số nguyên hiệu quả hơn nhiều: arxiv.org/abs/0812.0380
John Davis

3
Tôi nghĩ mặc dù chủ đề này vẫn là nghiên cứu khoa học, những điều cơ bản của một máy tính lượng tử giả định là AFAIK nổi tiếng, vì vậy câu hỏi nên được trả lời bởi một chuyên gia tên miền (mà tôi không phải là). Vì vậy, tôi bỏ phiếu không đóng nó.
Doc Brown

Câu trả lời:


17

Khi tôi xem xét điều này một thời gian trước đây, rõ ràng các thuật toán lượng tử, trong khi không đặc biệt nhanh, cho phép sự song song lớn theo cấp số nhân. Vì vậy, chúng sẽ tỏa sáng trong các trường hợp liên quan đến tìm kiếm trong các không gian không thực tế với phần cứng tuần tự, thậm chí phần cứng tuần tự song song ồ ạt.

Một tính chất của thuật toán lượng tử là chúng phải có thể đảo ngược . Bất kỳ thuật toán đã cho nào cũng có thể được dịch thành một thuật toán có thể đảo ngược, bằng cách thêm vào nó đủ khả năng lưu giữ hồ sơ để cho phép nó chạy ngược.

Một tính chất khác là việc nhận được câu trả lời từ thuật toán lượng tử là một vấn đề dễ xảy ra, bởi vì những gì bạn nhận được khi kết thúc tính toán là nhiều câu trả lời, mỗi câu có xác suất riêng. Nó cần phải được chạy theo cách mà câu trả lời bạn muốn có xác suất cao. Điều này có thể liên quan đến việc chạy thuật toán tiến và lùi nhiều lần.

Kiểm tra thuật toán tìm kiếm của Grover .


XÁC NHẬN để hiển thị hoạt động cơ bản của thuật toán Grover. Giả sử có một vấn đề tìm kiếm. Các câu trả lời có thể là 0, 1, 2 và 3, nhưng câu trả lời đúng là 2. Vì vậy, máy tính lượng tử được đặt trong trạng thái chồng chất của cả bốn trạng thái và nó trải qua một chuỗi các bước để xem cái nào đúng và đảo ngược biên độ của nó, như các chấm đen và mũi tên bên dưới:

nhập mô tả hình ảnh ở đây

Bạn có thể thấy rằng mũi tên 2 đã được đảo ngược bên trong máy, nhưng không có cách nào để nói rằng bên ngoài, bởi vì chỉ có xác suất được nhìn thấy bên ngoài, đó là biên độ bình phương , và khi bình phương chúng đều bằng nhau.

Tuy nhiên, biên độ có một giá trị trung bình, được biểu thị bằng đường màu đỏ và máy tính có thể được thực hiện để trải qua một chuỗi các bước đảo ngược từng biên độ về giá trị trung bình . Khi điều đó được thực hiện, biên độ và xác suất, chuyển sang trạng thái 2, câu trả lời đúng ! Vì vậy, nếu máy được quan sát, trạng thái 2 tỏa sáng.

Nó không hoàn toàn đơn giản. Nói chung, phải mất nhiều chu kỳ của máy, tiến và lùi, đảo ngược vào cuối mỗi chu kỳ, để tối đa hóa xác suất của câu trả lời đúng. Ngoài ra, người ta phải lưu ý không làm điều đó nhiều hơn số lần đó, bởi vì nó có thể dễ dàng đảo ngược chính nó.

Vậy tại sao họ nói máy tính lượng tử quá nhanh ? Bởi vì mỗi khi bạn nhân đôi số lượng qubit, bạn bình phương song song, nhưng bạn không bình phương thời gian, vì vậy cuối cùng nó sẽ thắng.

Điều đó có vui không?


Cá nhân tôi quan tâm đến việc làm thế nào điều này có thể được áp dụng để xác minh tính chính xác của phần mềm. Bây giờ chúng tôi kiểm tra phần mềm bằng cách ném một loạt các đầu vào kiểm tra vào nó và (đơn giản là quá đơn giản) xem liệu nó có trúng Assert không. Trong một máy tính lượng tử, có thể chạy song song với một bộ đầu vào dày đặc hơn nhiều và xem liệu có bất kỳ trường hợp nào trong số đó xảy ra với Assert không.

Giống như nếu đầu vào của thuật toán là 128 byte hoặc 1024 bit, có 2 ^ 1024 hoặc 10 ^ 308 đầu vào khác nhau có thể. Không có cách nào để kiểm tra nhiều đầu vào trên một máy tính thông thường, nhưng một máy tính lượng tử có thể thử song song tất cả chúng.


2
Kiểm tra thuật toán tìm kiếm của Grover ... OH GOD! Tôi đã không sẵn sàng cho điều đó!
Philip

1
@Philip: Tôi biết toán học khá hay, nhưng ý tưởng chính là xoay vòng về giá trị trung bình, có tác dụng chuyển xác suất sang trạng thái trả lời. Sau đó, bạn chạy trở lại từ đầu và chạy về phía trước và làm lại, một số lần nhất định. Sau đó, nếu bạn thực hiện quan sát, bạn đã tối đa hóa xác suất nhìn thấy trạng thái câu trả lời.
Mike Dunlavey

Bạn thấy đấy, nó thực sự không quá tệ khi bạn nói như thế. Tôi đoán tôi không quen thuộc với ký hiệu họ đang sử dụng hoặc các mạch lượng tử. Trang về thuật toán lượng tử cũng đáng sợ như vậy. Tôi tin rằng Qubit là nơi để bắt đầu. (Đơn giản wikipedia có một trang trên máy tính lượng tử , nhưng nó có thể sử dụng một số công việc)
Philip

@Philip: Giả sử bạn có một bảng nhập 1024, vì vậy phải mất 10 bit để lập chỉ mục. Bạn có một thanh ghi bit 10- (qu) và nó có 1024 trạng thái có thể. OK, vì vậy bạn tạo một vũ trụ trong đó thanh ghi bằng 0, một vũ trụ khác trong đó là 1, tối đa 1024 vũ trụ song song. Sau đó, các "hướng dẫn" lượng tử hoạt động song song trên tất cả những điều này. Mỗi vũ trụ có một "vectơ biên độ", có độ lớn là xác suất của nó, nhưng nó cũng có một hướng và những thứ đó đang bị thao túng. Do tập hợp 1024 vectơ có vectơ trung bình khác không, nên phép quay làm cho một vectơ lớn hơn, phần còn lại nhỏ hơn.
Mike Dunlavey

Tôi là một nhà vật lý cải cách và tôi đã đánh giá thấp câu trả lời này vì nó sai lệch. 1) các thuật toán lượng tử thường đặc biệt (tiệm cận) nhanh - thuật toán tìm kiếm chạy Grover trong O (sqrt (n)) trong khi là tốt nhất một máy tính cổ điển có thể làm là O (n). Nếu máy tính lượng tử không nhanh hơn bất thường thì chúng sẽ không thú vị lắm. Phần cứng có thể bị chậm ngay bây giờ nhưng đó không phải là lỗi của thuật toán!
Benjamin Hodgson

7

Ngôn ngữ C giống như thế nào nếu nó được thiết kế cho các qubit? Các loại sẽ thay đổi?

Nó sẽ khác biệt đến mức không thể hiểu được như C.

Vấn đề chính (theo tôi hiểu) là điện toán lượng tử không hoạt động theo cách bắt buộc tốt đẹp 'làm điều này, sau đó, sau đó là điều khác'. Cố gắng buộc khả năng của C thực hiện điều đó vào 'bộ xử lý' của máy tính lượng tử sẽ là không thể, không hiệu quả.

Các thuật toán lập trình cho máy tính lượng tử (một lần nữa, như tôi hiểu chúng) có xu hướng gần với bản đồ / giảm kiểu lập trình chức năng hơn, vì điện toán lượng tử cho phép tất cả các ứng cử viên trong phần 'giảm' tồn tại đồng thời và "rơi ra" khỏi máy tính khi quan sát.

Lưu ý rằng có một số thuật toán hiện có cho máy tính lượng tử, mặc dù các thiết bị không tồn tại để chạy chúng. Thuật toán của Simon chẳng hạn.


ELI5 cho một thuật toán lượng tử sẽ là tuyệt vời.
MaiaVictor

3

Để sử dụng máy tính lượng tử hiệu quả nhất có thể, người ta cần có khả năng xử lý các đầu vào và đầu ra là trạng thái của một thanh ghi lượng tử, mà thực sự không có tương tự cổ điển. Phát biểu từ một số năm kinh nghiệm trong lĩnh vực thông tin lượng tử, tôi phải cảnh báo bạn rằng không ai thực sự có trực giác tốt cho điều này ngoài toán học trừu tượng của đại số C *, và tôi đã nói rằng ngay cả trực giác này cũng không đủ nếu bạn bắt đầu tự hỏi về lý thuyết tương đối.

Lớp các vấn đề có thể giải quyết hiệu quả trên máy tính lượng tử được gọi là BQP, cho Byned Quantum Polynomial. Đây là phiên bản lượng tử của BPP và bạn có thể tìm thêm thông tin trong bài viết này: http://www.scottaaronson.com/ con / bqpph.pdf

Một nhà nghiên cứu thuật toán lượng tử đã nói với tôi đêm qua rằng có một vấn đề rất quan trọng đó là BQP-perfect: giải hệ phương trình tuyến tính gồm N phương trình. Về mặt kinh điển, điều này có thể giải quyết được trong các bước O (N) với việc loại bỏ Gaussian. Thuật toán Harrow-Hassidim-Lloyd ( http://arxiv.org/abs/0811.3171 ) giải quyết nó trong polylog (N), miễn là bạn sẵn sàng chấp nhận câu trả lời có giải pháp được mã hóa dưới dạng trạng thái lượng tử. Nếu bạn muốn sử dụng toàn bộ máy tính lượng tử, do đó có vẻ như bạn cần phải có một loại tương ứng với trạng thái của thanh ghi lượng tử.

Mặc dù bây giờ tôi không có chuyên môn đặc biệt, tôi sẽ đoán rằng bạn sẽ có thể lập trình một máy tính lượng tử miễn là bạn có quyền truy cập vào một loại tương ứng với trạng thái ma thuật. Tuy nhiên, đó là một khái niệm khó, đòi hỏi khá nhiều nghiên cứu về chủ đề này.

Được cảnh báo rằng chúng ta còn rất lâu mới có ngôn ngữ lập trình lượng tử, bởi vì chúng ta đang ở giai đoạn rất nguyên thủy của nghiên cứu điện toán lượng tử. Yêu cầu lượng tử C ngay bây giờ sẽ giống như đến Alan Turing và yêu cầu anh ta thiết kế Python. Chúng tôi thậm chí chưa có phiên bản lượng tử của ống chân không!

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.