Квантовые симуляции на Python: не магия, а код
Вы слышали про квантовые компьютеры? Те, которые взломают все шифры и решат проблемы человечества. Пока они этого не делают. Но вы можете поиграться с их виртуальными версиями на Python. Прямо сейчас. Забудьте про жидкий азот и экзотические частицы. Все, что нужно - это pip install и немного линейной алгебры.
На дворе 2026 год, и инструменты для квантовых симуляций стали такими же обычными, как Pandas для анализа данных. Лидером по-прежнему остается Qiskit, но теперь в версии 2.1 с переработанным API и встроенной поддержкой квантового машинного обучения. Давайте разберемся, как заставить его работать на вашей машине.
1Ставим Qiskit: быстрее, чем сварить кофе
Первое, что бесит в любом туториале - это долгая настройка окружения. Здесь все просто. Откройте терминал и выполните одну команду. Если у вас уже стоит Python 3.11+, проблем не будет.
pip install "qiskit[all]"==2.1.0На 05.04.2026 пакет qiskit[all] тянет за собой не только симулятор Aer, но и целую кучу инструментов для оптимизации и визуализации. Если не хотите засорять систему, установите только qiskit и qiskit-aer. Но для гайда лучше все.
Проверьте установку. Запустите Python и попробуйте импортировать.
import qiskit
print(qiskit.__version__)
# Должно вывести 2.1.0 или новее2Первая схема: кубит, который всегда говорит '1'
Квантовая схема - это просто последовательность операций над кубитами. Создадим самую простую: один кубит, который мы перевернем из состояния 0 в состояние 1. В квантовом мире для этого нужен гейт X (NOT).
from qiskit import QuantumCircuit
# Создаем схему с 1 кубитом и 1 классическим битом для измерения
qc = QuantumCircuit(1, 1)
# Применяем гейт X (переворот)
qc.x(0)
# Измеряем кубит в классический бит
qc.measure(0, 0)
# Рисуем схему. Раньше это было сложнее.
qc.draw('mpl', style='iqx') # 'mpl' для matplotlib, 'iqx' для стиля IBM QuantumЕсли все сделано правильно, вы увидите картинку с одним кубитом, гейтом X и измерением. Скучно? Подождите, сейчас будет интереснее.
3Играем в Лего: добавляем суперпозицию
Магия начинается с гейта Адамара (H). Он создает суперпозицию - кубит одновременно в состояниях 0 и 1. Звучит как философия, но на деле это просто вектор.
from qiskit.visualization import plot_histogram
from qiskit_aer import AerSimulator
# Новая схема: суперпозиция и измерение
qc_super = QuantumCircuit(1, 1)
qc_super.h(0) # Гейт Адамара
qc_super.measure(0, 0)
# Запускаем на локальном симуляторе
simulator = AerSimulator()
compiled_circuit = qiskit.transpile(qc_super, simulator)
# Делаем 1000 'выстрелов'
job = simulator.run(compiled_circuit, shots=1000)
result = job.result()
counts = result.get_counts()
# Смотрим результат
print(counts) # Что-то типа {'0': 512, '1': 488}
plot_histogram(counts)4Настоящий алгоритм: Дойч-Йожа за 5 минут
Простые схемы - это хорошо, но хочется чего-то осмысленного. Алгоритм Дойча-Йожи - это "Hello, World!" квантовых вычислений. Он определяет, является ли функция постоянной или сбалансированной, всего за один запрос. В классике нужно два.
# Реализуем алгоритм для функции f(x), которая всегда возвращает 1 (постоянная)
qc_deutsch = QuantumCircuit(2, 1)
# Применяем гейты Адамара к обоим кубитам
qc_deutsch.h([0, 1])
# Оракул для постоянной функции f(x)=1
# Для f(x)=1 нужно перевернуть второй кубит (гейт X)
qc_deutsch.x(1)
qc_deutsch.cz(0, 1) # Управляемый гейт Z
qc_deutsch.x(1) # Возвращаем обратно
# Еще раз гейт Адамара на первый кубит
qc_deutsch.h(0)
# Измеряем первый кубит
qc_deutsch.measure(0, 0)
# Запускаем
simulator = AerSimulator()
compiled = qiskit.transpile(qc_deutsch, simulator)
result = simulator.run(compiled, shots=1000).result()
counts = result.get_counts()
print("Результат алгоритма Дойча-Йожи:", counts)
# Если функция постоянная, всегда получим '0'Если вы увидели в результатах только '0' - алгоритм сработал. Поздравляю, вы только что выполнили вычисление, которое на классическом компьютере потребовало бы лишнего шага. Мелочь, а приятно.
Qiskit против других: кто кого?
Qiskit - не единственный игрок на поле. Вот как он выглядит на фоне конкурентов в 2026 году.
| Инструмент | Разработчик | Сильная сторона | Слабая сторона |
|---|---|---|---|
| Qiskit 2.1 | IBM | Лучшая документация, интеграция с реальными квантовыми процессорами IBM, огромное сообщество. | Монстр по размеру. Для простых симуляций может быть избыточным. |
| Cirq 2.0 | Чистый Python, отличная производительность для больших схем, фокус на алгоритмах. | Меньше готовых высокоуровневых функций. Сообщество скромнее. | |
| PennyLane 1.0 | Xanadu | Специализация на квантовом машинном обучении и дифференцируемом программировании. | Кривая обучения круче. Не самый удобный инструмент для чистых симуляций. |
Выбор простой: если вы новичок и хотите быстрый старт - берите Qiskit. Если планируете глубоко копать в алгоритмы и производительность - посмотрите на Cirq. Если ваша цель - квантовое машинное обучение, то PennyLane ваш выбор. (Кстати, если вам интересно квантование в другом контексте - например, сжатие нейросетей - взгляните на наш гайд по квантованию LLM. Это совсем другая история, но тоже полна сюрпризов).
Кому стоит заняться квантовыми симуляциями?
Это не для всех. Но если вы попадаете в одну из категорий, стоит потратить вечер на эксперименты.
- Студенты и исследователи в области физики, компьютерных наук. Симулятор - это песочница для проверки идей без доступа к дорогому "железу".
- Разработчики ПО, которым любопытно, что ждет вычисления через 10-15 лет. Это как изучать ассемблер в эпоху Python - чтобы понять основы.
- Data Scientists, которые устали от классического машинного обучения и хотят заглянуть за горизонт. Интеграция Qiskit с библиотеками вроде PyTorch стала намного лучше.
- Преподаватели, которым нужно наглядно показать странности квантового мира. Схемы и гистограммы работают лучше, чем формулы на доске.
Главное - не ожидайте, что через неделю вы будете писать код для взлома RSA. Реальные приложения квантовых компьютеров все еще в зачаточном состоянии. Но симуляции позволяют хотя бы понять, с чем имеем дело. И кто знает, может, именно ваш эксперимент с симуляцией на Python станет основой для следующего прорыва. Если же вы хотите увидеть, как сложные симуляции применяются в более традиционных областях, посмотрите, как решаются уравнения Навье-Стокса для аэродинамики. Принцип тот же: берем сложную физику и заставляем компьютер ее имитировать.
Что дальше? Код из этого туториала - всего лишь начало. В Qiskit 2.1 появился модуль qiskit_algorithms с готовыми реализациями алгоритмов Гровера, Шора и VQE. Попробуйте запустить симуляцию квантовой химической задачи или простой факторизации. Только не удивляйтесь, когда поймете, что для факторизации числа 21 вам потребуется схема из 50+ кубитов. Ресурсы симулятора не безграничны, но для обучения хватит с головой.