Проведение квантовых экспериментов с помощью Qiskit-Aer
Делиться

Введение
Квантовые вычисления — это область технологий, использующая принципы квантовой механики (например, суперпозицию и запутанность ) для обработки информации принципиально иным способом, чем классические компьютеры. Проще говоря, вместо битов (0 или 1) квантовые компьютеры используют кубиты для решения сложных многомерных задач в химии, материаловедении и оптимизации, потенциально за секунды, а не за годы.
На практике задачи решаются путем построения математических моделей, называемых квантовыми схемами : последовательностей операций и инструкций, которые принимают на вход определенные данные и возвращают выходные (аналогично линейной регрессии и нейронным сетям). В квантовых вычислениях эти операции называются вентилями , которые изменяют данные (кубиты) иным способом. В сущности, схема — это предложение, а вентили — это слова, составляющие это предложение.
Схемы используются для проведения экспериментов. В частности, существует 2 типа квантовых симуляций :
- Использование обычного компьютера для моделирования квантового компьютера . Это как использовать Python для написания схемы и симулятор для её запуска, в то время как настоящий квантовый компьютер физически реализует эту схему.
- Использование квантового компьютера для моделирования реальной квантовой системы (например, атомов или электронов). В природе квантовые системы уже существуют, и классическим компьютерам сложно их моделировать, поскольку пространство состояний растет экспоненциально. С другой стороны, квантовые машины могут моделировать эти системы более эффективно, поскольку они естественным образом подчиняются тем же правилам.
В этом уроке я покажу вам, как запустить квантовое моделирование на вашем компьютере. Эта статья является продолжением статьи «Руководство для начинающих по квантовым вычислениям с использованием Python».
Настраивать
Прежде всего, нам необходимо установить Qiskit ( pip install qiskit ), библиотеку с открытым исходным кодом для работы с квантовыми компьютерами, разработанную IBM, которая позволяет моделировать квантовое устройство на локальном компьютере.
Самый простой код, который мы можем написать, — это создание квантовой схемы (среды для квантовых вычислений) всего с одним кубитом и инициализация её значением 0. Для измерения состояния кубита нам нужен вектор состояния , который, по сути, показывает текущую квантовую реальность вашей схемы.
from qiskit import QuantumCircuit from qiskit.quantum_info import Statevector q = QuantumCircuit(1,0) #circuit with 1 quantum bit and 0 classic bit state = Statevector.from_instruction(q) #measure state state.probabilities() #print prob% 
Это означает, что вероятность того, что кубит равен 0 (первый элемент), составляет 100%, а вероятность того, что кубит равен 1 (второй элемент), составляет 0%. Давайте представим это состояние:
from qiskit.visualization import plot_bloch_multivector plot_bloch_multivector(state, figsize=(3,3)) 
Схемы
Квантовый вентиль — это единичная операция, изменяющая квантовое состояние. Квантовая схема — это последовательность вентилей, применяемых к кубитам во времени.
Давайте начнём собирать простую схему.
q = QuantumCircuit(1,0) #circuit with 1 quantum bit and 0 classic bit q.draw(output="mpl", scale=0.7) #show circuit with matplotlib 
У нас есть один кубит, но для его измерения нам нужно добавить классический бит в нашу схему.
q = QuantumCircuit(1,1) #add 1 classic bit q.draw(output="mpl", scale=0.7) 
Для построения схемы необходимо понимать, чего вы хотите достичь, или, другими словами, нужно знать логические элементы и их функции. Подход аналогичен нейронным сетям: вы просто используете слой за слоем для получения желаемого результата (например, свертки для изображений и эмбеддинги для текста). Наиболее распространенной операцией является вентиль Адамара (H-вентиль), который применяет принцип суперпозиции к кубиту.
q = QuantumCircuit(1,1) qh(0) #Hadamard gate (Superposition) q.draw(output="mpl", scale=0.7) 
На изображении видно, что к кубиту применяется красный H-вентиль, превращающий его из однозначного 0 в смесь 0 и 1 в соотношении 50/50. Добавим измерительный блок, который схлопывает эту суперпозицию в действительное значение (либо 0, либо 1), сохраняя этот результат в классический бит.
q = QuantumCircuit(1,1) qh(0) q.measure(qubit=0, cbit=0) #measure qubit with classic bit q.draw(output="mpl", scale=0.7) 
Схема была математически смоделирована моим классическим компьютером так же, как и была написана на бумаге, но она еще не была реализована.
Моделирование
Квантовое моделирование — это моделирование поведения квантовой системы с помощью компьютера. Если вы пишете схему (как я сделал выше), вы просто описываете математическую модель. Для её запуска необходим бэкэнд-движок, который выполняет квантовую схему в режиме моделирования.
Qiskit-Aer ( pip install qiskit-aer ) — это движок, который запускает квантовые схемы в режиме симуляции. Aer позволяет запускать квантовые схемы на вашем компьютере, имитируя различные аспекты реального квантового оборудования (квантовое состояние, измерение, зашумленная система).
Я собираюсь провести эксперимент с ранее написанной схемой (классический бит + кубит в режиме суперпозиции) 1000 раз.
from qiskit_aer import AerSimulator sim = AerSimulator() result = sim.run(q, shots=1000).result() result.get_counts() 
Кубит измерялся 1000 раз, в результате чего 500 раз получалось значение 1, а остальные 500 раз — 0. Это можно визуализировать:
from qiskit.visualization import plot_histogram plot_histogram(result.get_counts(), figsize=(5,4), color="black", title="1-qubit in Superposition") 
Результат идеально ровный, потому что Aer может моделировать идеальные квантовые состояния, что невозможно на реальном оборудовании. В реальном мире квантовая информация чрезвычайно хрупка, и она работает, исходя из предположения, что система идеальна и стабильна, позволяя частицам существовать в нескольких состояниях ( когерентность ). Но как только кубит взаимодействует с чем-либо, например, с теплом или вибрациями, система теряет свою гармонию и квантовые свойства ( декогерентность ).
Поэтому визуализировать кубит в состоянии суперпозиции (одновременно 0 и 1) можно только в симуляции, но никогда в реальном мире. Потому что в момент наблюдения за кубитом возникает шум, и система коллапсирует к одному числу (0 или 1). На практике реальные квантовые компьютеры используются только для измерения результатов, тогда как симуляции применяются для проектирования квантовых моделей.
Для большей реалистичности эксперимента можно добавить шум в симуляцию.
from qiskit_aer import noise n = noise.NoiseModel() error = noise.depolarizing_error(param=0.10, num_qubits=1) #10% error probability n.add_all_qubit_quantum_error(error=error, instructions=['h']) sim = AerSimulator(noise_model=n) result = sim.run(q, shots=1000).result() plot_histogram(result.get_counts(), figsize=(5,4), color="black", title="1-qubit in Superposition") 
Заключение
Эта статья представляет собой учебное пособие по квантовому моделированию с использованием Python и Qiskit . Мы узнали, в чем разница между реальным аппаратным обеспечением и квантовым экспериментом. Мы также научились проектировать квантовые схемы и запускать моделирование на классической машине.
Полный код для этой статьи: GitHub
Надеюсь, вам понравилось! Не стесняйтесь обращаться ко мне с вопросами и отзывами, или просто чтобы поделиться своими интересными проектами.
👉 Давайте общаться 👈

(Все изображения предоставлены автором, если не указано иное)
Мауро Ди Пьетро Посмотреть все работы Мауро Ди Пьетро
Источник: towardsdatascience.com





















