Квантовая механика — фундаментальная теория в физике, объясняющая явления в микроскопическом масштабе (такие как атомы и субатомные частицы). Эта "новая" (1900 г.) область отличается от классической физики, которая описывает природу в макроскопическом масштабе (такие как тела и машины) и не применима на квантовом уровне.

Квантовые вычисления — это использование свойств квантовой механики для выполнения вычислений и решения задач, которые классический компьютер не может и никогда не сможет решить.

Обычные компьютеры говорят на языке двоичного кода: они присваивают каждому символу и инструкции последовательность двоичных цифр (единиц и нулей) и хранят и обрабатывают эту информацию в битах. Даже ваш код на Python переводится в двоичные цифры при запуске на вашем ноутбуке. Например:

Слово "Hi" → "h": 01001000 и "i": 0110100101001000 01101001

С другой стороны, квантовые компьютеры обрабатывают информацию с помощью кубитов (квантовых битов), которые одновременно могут быть и 0, и 1. Это делает квантовые машины значительно быстрее обычных для решения конкретных задач (например, вероятностных вычислений).

Квантовые компьютеры

Квантовые компьютеры используют атомы и электроны вместо классических кремниевых чипов. В результате они могут использовать квантовую механику для выполнения вычислений намного быстрее, чем обычные машины. Например, 8 битов достаточно классическому компьютеру для представления любого числа от 0 до 255, но 8 кубитов достаточно квантовому компьютеру для представления одновременно каждого числа от 0 до 255. Несколько сотен кубитов было бы достаточно для представления больше чисел, чем атомов во Вселенной.

Мозгом квантового компьютера является крошечный кубитный чип, изготовленный из металлов или сапфира.

Квантовый чип

Однако самая знаковая часть — это большое охлаждающее оборудование из золота, которое выглядит как люстра, висящая внутри стального цилиндра: дилюционный холодильник. Он охлаждает чип до температуры холоднее, чем в космосе, так как тепло разрушает квантовые состояния (по сути, чем холоднее, тем точнее).

Дилюционный холодильник

Это ведущий тип архитектуры, называемый сверхпроводящими кубитами: искусственные атомы, созданные из схем с использованием сверхпроводников (таких как алюминий), которые демонстрируют нулевое электрическое сопротивление при сверхнизких температурах. Альтернативная архитектура — ионные ловушки (заряженные атомы, захваченные в электромагнитных полях в сверхвысоком вакууме), которые более точны, но медленнее первой.

Нет точного открытого подсчёта того, сколько квантовых компьютеров существует в мире, но оценки составляют около 200. На данный момент самые передовые:

  1. IBM Condor — наибольшее количество кубитов на сегодняшний день (1000 кубитов), хотя это само по себе не равно полезным вычислениям, так как уровни ошибок всё ещё имеют значение.
  2. Google Willow (105 кубитов) — хороший уровень ошибок, но всё ещё далёк от отказоустойчивых крупномасштабных вычислений.
  3. IonQ Tempo (100 кубитов) — квантовый компьютер с ионными ловушками с хорошими возможностями, но всё ещё медленнее сверхпроводящих машин.
  4. Quantinuum Helios (98 кубитов) — использует архитектуру с ионными ловушками с одними из самых высоких показателей точности.
  5. Rigetti Computing Ankaa (80 кубитов).
  6. Intel Tunnel Falls (12 кубитов).
  7. Xanadu Aurora (12 кубитов) — первый фотонный квантовый компьютер, использующий свет вместо электронов для обработки информации.
  8. Microsoft Majorana — первый компьютер, разработанный для масштабирования до миллиона кубитов на одном чипе (но в настоящий момент имеет 8 кубитов).
  9. SpinQ Mini (2 кубита) — первый портативный маломасштабный квантовый компьютер.
  10. NVIDIA QPU (Quantum Processing Unit) — первая система с ускорением на GPU для квантовых вычислений.

На данный момент обычный человек не может владеть крупномасштабным квантовым компьютером, но вы можете получить доступ к ним через облако.

Установка

На Python существует несколько библиотек для работы с квантовыми компьютерами по всему миру:

  • Qiskit от IBM — самая полная высокоуровневая экосистема для запуска квантовых программ на квантовых компьютерах IBM, идеально подходит для начинающих.
  • Cirq от Google — ориентирован на низкоуровневый контроль их оборудования, больше подходит для исследований.
  • PennyLane от Xanadu — специализируется на квантовом машинном обучении, работает на их собственных фотонных компьютерах, но может подключаться к другим поставщикам.
  • ProjectQ от ETH Zurich — проект с открытым исходным кодом, пытающийся стать основным пакетом общего назначения для квантовых вычислений.

Для этого руководства я буду использовать Qiskit от IBM, так как это лидер отрасли (pip install qiskit).

Самый базовый код, который мы можем написать — это создание квантовой схемы (окружение для квантовых вычислений) с одним кубитом и инициализировать его как 0. Чтобы измерить состояние кубита, нам нужен вектор состояния, который по сути показывает текущую квантовую реальность вашей схемы.

from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector

q = QuantumCircuit(1,0) #схема с 1 квантовым битом и 0 классических битов
state = Statevector.from_instruction(q) #измерить состояние
state.probabilities() #вывести вероятности%
Результат измерения

Это означает: вероятность того, что кубит равен 0 (первый элемент), составляет 100%, в то время как вероятность того, что кубит равен 1 (второй элемент), составляет 0%. Вы можете вывести это так:

print(f"[q=0 {round(state.probabilities()[0]*100)}%, 
         q=1 {round(state.probabilities()[1]*100)}%]")
Вывод вероятностей

Давайте визуализируем состояние:

from qiskit.visualization import plot_bloch_multivector

plot_bloch_multivector(state, figsize=(3,3))
Блоховский шар

Как вы можете видеть из 3D-представления квантового состояния, кубит на 100% находится в состоянии 0. Это был квантовый эквивалент "hello world", и теперь мы можем перейти к квантовому эквиваленту "1+1=2".

Кубиты

Кубиты имеют два фундаментальных свойства квантовой механики: суперпозицию и запутанность.

Суперпозиция — классические биты могут быть либо 1, либо 0, но никогда обоими одновременно. Наоборот, кубит может быть обоими (технически это линейная комбинация бесконечного числа состояний между 1 и 0), и только при измерении суперпозиция коллапсирует в 1 или 0 и остаётся так навсегда. Это происходит потому, что акт наблюдения квантовой частицы заставляет её принять классическое двоичное состояние либо 1, либо 0 (по сути, это история кота Шрёдингера, которую мы все знаем и любим). Поэтому кубит имеет определённую вероятность коллапса в 1 или 0.

q = QuantumCircuit(1,0)
q.h(0) #добавить суперпозицию
state = Statevector.from_instruction(q) 
print(f"[q=0 {round(state.probabilities()[0]*100)}%, 
         q=1 {round(state.probabilities()[1]*100)}%]")