Bài viết được dịch từ 
Như các bác đã biết, các công ty chế tạo phần cứng như Intel, AMD, ... đã đứng lại khi công nghệ chia nhỏ transistor đến giới hạn (cụ thể là đến năm 2021 sẽ không thể chia nhỏ được nữa) và do đó định luật Moore cũng sắp bị khai tử, đồng nghĩa với việc cần phải tìm cách để tiếp tục tăng tốc độ tính toán. Một loạt các công nghệ mới đã xuất hiện trong vài năm qua, như thay đổi hình dạng chip, tinh chỉnh chip, … đã được áp dụng, nhưng có vẻ như chế tạo ra một hệ thống tính toán mới, mà cụ thể là tính toán lượng tử - mới được cho là giải pháp hay ho cho vấn đề này.
Máy tính lượng tử được đề xuất vào những năm 1980 bởi Richard Feynman và Yuri Manin. Bản chất đằng sau tính toán lượng tử bắt nguồn từ những thứ khó hiểu nhất của vật lý – cơ học lượng tử. Cơ học lượng tử đã được phát triển từ năm 1900 đến năm 1925 và nó là nền tảng của hóa học lượng tử, vật lý vật chất ngưng tụ và các công nghệ khác, ... Tuy nhiên cơ học lượng tử vẫn chưa phải là hoàn hảo và cần phải nghiên cứu thêm rất nhiều, giới vật lý học xuất hiện nhu cầu về một hệ thống mô phỏng các hạt tượng tác với nhau, nhưng việc hiện thực hóa lúc đó vẫn vượt quá khả năng của con người. Điều này là do hệ thống mô phỏng chứa vài hạt tương tác đã phải đòi hỏi sức mạnh tính toán nhiều còn nhiều hơn bất kỳ hệ thống máy tính thông thường nào.
Có nhiều cách để hiểu tại sao cơ học lượng tử khó mô phỏng. Có lẽ đơn giản nhất là do lý thuyết lượng tử nói rằng vật chất ở mức lượng tử có thể đồng thời trong một loạt các trạng thái khác nhau cùng một lúc (trạng thái chồng chất). Không giống như lý thuyết xác suất cổ điển, nhiều trạng thái có thể được quan sát và có thể ảnh hưởng lẫn nhau. Điều này ngăn cản việc lấy mẫu thống kê để thu các trạng thái lượng tử. Thay vào đó, chúng ta phải theo dõi mọi trạng thái có thể có của hệ thống nếu chúng ta muốn hiểu về cơ học lượng tử.
Nguồn: Internet
Hãy xem xét một hệ thống electron nơi electron có thể ở 40 vị trí, electron có thể nằm trong bất kỳ 2 ^ 40 trạng thái (vì mỗi vị trí có thể có hoặc không có một electron). Để lưu trữ trạng thái lượng tử của các electron trong một bộ nhớ máy tính thông thường sẽ vượt quá 130 GB! Điều này là đáng kể, nhưng vẫn trong tầm với của một số máy tính. Nếu chúng ta cho phép các hạt ở 41 vị trí bất kì, chúng ta sẽ phải có 260 GB để lưu trữ trạng thái lượng tử. Trò chơi tăng số lượng vị trí không thể chơi lâu hơn nếu chúng ta muốn lưu trữ theo quy ước trên, vì ở vài trăm electron, bộ nhớ cần thiết để lưu trữ vượt quá số lượng hạt trong vũ trụ !!!
Quan sát này khiến những người tiên phong về tính toán lượng tử có một câu hỏi đơn giản nhưng mạnh mẽ: liệu chúng ta có thể biến khó khăn này thành một cơ hội không? Cụ thể, nếu cơ học lượng tử khó mô phỏng thì điều gì sẽ xảy ra nếu chúng ta xây dựng phần cứng dựa trên những hiệu ứng lượng tử? Chúng ta có thể mô phỏng hệ thống của các hạt tương tác bằng cách sử dụng một hệ thống khai thác chính chúng một cách tự nhiên? Những câu hỏi này dẫn đến nguồn gốc của tính toán lượng tử.
Cốt lõi cơ bản của tính toán lượng tử là lưu trữ thông tin ở các trạng thái lượng tử và sử dụng các phép toán trên cổng lượng tử (sẽ giới thiệu sau) để tính toán thông tin đó bằng cách lập trình. Một ví dụ về lập trình để giải quyết một vấn đề nan giải trên các máy tính thông thường được thực hiện bởi Peter Shor vào năm 1994 là giải mã khóa. Giải mã khóa mang lại khả năng phá vỡ nhiều hệ thống mật mã khóa công khai, bao gồm RSA và Elliptic Curve (mã RSA đã chính thức bị phá kể từ khi chiếc máy tính lượng tử đầu tiên được ra đời) . Kể từ đó, các thuật toán lượng tử nhanh và hiệu quả được phát triển để giải quyết công việc đã được thực hiện trên máy tính cổ điển: mô phỏng các hệ thống vật lý trong hóa học, vật lý và khoa học vật liệu, tìm kiếm CSDL không có thứ tự (thuật toán Grover – ứng dụng đặc biệt trong Data Mining), giải các hệ phương trình tuyến tính và Machine Learning.
Nguồn: Internet
Lập trình lượng tử là một nghệ thuật riêng biệt từ lập trình cổ điển đòi hỏi lập trình viên phải có kiến thức tốt về vật lý lượng tử và toán học. Để hỗ trợ trong vấn đề này, Microsoft đã phát triển Microsoft Quantum Development và ngôn ngữ lập trình bậc cao, Q #, được thiết kế để mô phỏng những hoạt động của một máy tính lượng tử. Trước khi tiếp cận Q#, chúng ta cần phải biết về một số nguyên tắc cơ bản về tính toán lượng tử. Những bài sau sẽ giới thiệu các quy tắc cơ bản về tính toán lượng tử thành tiên đề, chứ không phải là chi tiết cơ sở trong cơ học lượng tử (bác nào muốn tìm hiểu kĩ thì đọc cuốn Quantum Computer Science của N. David Mermin nhé).
Kì 2: