Современная вычислительная техника подошла к фундаментальному барьеру. На протяжении десятилетий индустрия развивалась в соответствии с законом Мура и принципами масштабирования Деннарда: уменьшение размеров транзисторов позволяло размещать их больше на единице площади, наращивать тактовые частоты и снижать энергопотребление.

Однако при достижении техпроцессов менее 2–3 нанометров полупроводниковая индустрия столкнулась с физическими пределами кремния. Размеры затворов транзисторов приблизились к атомному масштабу, и ключевой проблемой стало квантовое туннелирование: электроны начинают спонтанно проникать сквозь закрытые потенциальные барьеры, вызывая критические утечки тока и перегрев.

Парадоксально, но решение этой проблемы лежит в той же области физики, которая создает ограничения. Квантово-механические эффекты, разрушающие работу классических транзисторов, стали основой новой вычислительной парадигмы — квантовых процессоров (QPU, *Quantum Processing Unit*).

Данная статья разбирает эволюционный переход от традиционной архитектуры CPU к квантовым системам, различие их фундаментальных принципов, ключевые алгоритмы квантового ускорения и гибридные модели, применяемые в современную эру NISQ.

---

1. Сравнительный анализ: CPU vs GPU vs QPU

Чтобы понять место QPU в вычислительном ландшафте, необходимо сопоставить его с существующими типами процессоров.

| Параметр | CPU (Central Processing Unit) | GPU (Graphics Processing Unit) | QPU (Quantum Processing Unit) |
| --- | --- | --- | --- |
| Базовый элемент | Кремниевый транзистор | Массив упрощенных транзисторных ядер | Кубит (сверхпроводники, ионы, фотоны) |
| Фундаментальное состояние | Дискретное: $0$ или $1$ | Дискретное: $0$ или $1$ | Непрерывная суперпозиция: $\alpha\Vert{}0\rangle + \beta\Vert{}1\rangle$ |
| Парадигма выполнения | Последовательная, низкая латентность | Массово-параллельная (SIMD/SIMT) | Квантовая эволюция состояний (унитарные операции) |
| Архитектура памяти | Кэш L1/L2/L3, RAM (Фон-Нейман) | VRAM с высокой пропускной способностью | Памяти нет (состояние хранится в самом регистре кубитов) |
| Тип вычислений | Точная детерминированная арифметика | Матричная и векторная арифметика | Вероятностные квантовые алгоритмы |
| Обратимость логики | Необратимая (потеря информации/выделение тепла) | Необратимая | Обратимая (все операции, кроме измерения, унитарны) |

Классический CPU оптимизирован для выполнения сложных последовательных инструкций с минимальной задержкой. GPU жертвует сложностью отдельного ядра ради тысяч параллельных потоков, идеально подходящих для обработки матриц. QPU меняет саму природу обработки информации, используя квантовые состояния вместо дискретных логических сигналов.

---

2. Физика и архитектура: В чем коренной сдвиг?

Кремний (CPU/GPU): Логика затворов

Архитектура Фон-Неймана, лежащая в основе CPU и GPU, четко разделяет вычислительный блок (АЛУ) и память. Транзистор работает как бинарный ключ: логическая «1» соответствует наличию электрического напряжения, «0» — его отсутствию. Все операции строятся на логических элементах (AND, OR, NOT), которые необратимы: зная результат работы элемента AND, нельзя однозначно восстановить входные данные. Согласно принципу Ландауэра, любая необратимая утрата информации сопровождается выделением тепла.

Квантовые системы (QPU): Эволюция волновых функций

В QPU традиционное АЛУ отсутствует. Вычисления происходят непосредственно в квантовом регистре под действием физических импульсов (лазерных или микроволновых), выполняющих роль логических гейтов.

Вычислительное преимущество QPU опирается на три столпа:

1. Суперпозиция: Кубит кодирует не просто $0$ или $1$, а линейную комбинацию этих состояний. Квантовый регистр из $N$ кубитов одновременно находится в состоянии суперпозиции всех $2^N$ возможных комбинаций. Регистр из 300 кубитов способен одновременно содержать больше состояний, чем атомов во всей видимой Вселенной.
2. Квантовая запутанность (Entanglement): Связывание кубитов создает единую квантовую систему, где состояние одного кубита неразрывно связано с состоянием остальных. Это позволяет обрабатывать огромный объем взаимосвязанных данных параллельно без явной пересылки сообщений между ядрами.
3. Квантовая интерференция: Вычисление на QPU похоже на волновую физику. Алгоритм направляет амплитуды вероятностей таким образом, чтобы ложные пути вычислений гасили друг друга (деструктивная интерференция), а правильный ответ усиливался (конструктивная интерференция).

---

3. Смена парадигмы программирования

Переход к QPU требует полного пересмотра концепции разработки ПО:

Классический код (CPU):
   [Данные] ───> [Последовательность инструкций (ADD/MUL/JMP)] ───> [Точный результат]

Квантовый код (QPU):
   [Инициализация |00...0>] ───> [Цепочка гейтов (H, CNOT, Phase)] ───> [Измерение (Коллапс)] ───> [Статистика]
  • Отсутствие условных переходов: В квантовой схеме невозможно выполнить классическую команду if/else по ходу вычислений, так как проверка значения кубита немедленно разрушит его суперпозицию.
  • Измерение как разрушение: Измерение квантового регистра вызывает коллапс волновой функции: непрерывная суперпозиция мгновенно превращается в классические $0$ или $1$. Поэтому квантовую схему запускают сотни и тысячи раз (shots), восстанавливая правильный ответ на основе статистического распределения.
  • Обратимость операций: Все квантовые гейты за исключением измерения опираются на унитарные матрицы. Это означает, что любой квантовый алгоритм теоретически выполним в обратную сторону без потери информации.

---

4. Квантовое ускорение: Алгоритмы Гровера и Шора

Математическое превосходство QPU над CPU демонстрируется изменением классов вычислительной сложности задач.

Алгоритм Гровера: Квадратичное ускорение в неупорядоченном поиске

Для поиска целевой записи в неструктурированной базе данных из $N$ элементов классическому CPU требуется в среднем $N/2$ операций — сложность $O(N)$.

Алгоритм Гровера на QPU находит элемент за $O(\sqrt{N})$ операций с помощью метода амплитудной амплификации:

1. Все $N$ состояний переводятся в равномерную суперпозицию с помощью гейтов Адамара ($H^{\otimes n}$).
2. Квантовый Оракул находит целевое состояние и инвертирует знак его фазы (умножает амплитуду на $-1$).
3. Оператор диффузии Гровера производит инверсию всех амплитуд относительно их среднего значения. Поскольку фаза целевого состояния была инвертирована, процедура резко подбрасывает вверх его амплитуду вероятности, гася остальные.

Повторение этого цикла $\approx \frac{\pi}{4}\sqrt{N}$ раз дает вероятность считывания нужного элемента, близкую к 100%.

Алгоритм Шора: Экспоненциальное ускорение в факторизации

Разложение N-битного составного числа $M = p \cdot q$ на простые множители — математическая основа стойкости асимметричной криптографии (RSA). На классическом CPU лучший алгоритм (общий метод шета числового поля, GNFS) имеет субэкспоненциальную сложность. Взлом RSA-2048 занял бы миллионы лет работы суперкомпьютеров.

Алгоритм Шора выполняет факторизацию за полиномиальное время $O(n^3)$:

1. Задача факторизации алгебраически сводится к нахождению периода $r$ функции $f(x) = a^x \pmod M$.
2. QPU вычисляет значения $f(x)$ для всех $x$ одновременно в состоянии суперпозиции.
3. Квантовое преобразование Фурье (QFT) выступает аналогом оптической призмы: оно превращает периодичность функции в конструктивную интерференцию на частотах, кратных $1/r$.
4. При измерении регистра система с высокой вероятностью выдает период $r$, из которого на классическом CPU за доли секунды через алгоритм Евклида вычисляются множители $p$ и $q$.

| Критерий | Алгоритм Гровера | Алгоритм Шора |
| --- | --- | --- |
| Тип ускорения | Квадратичное ($O(N) \to O(\sqrt{N})$) | Экспоненциальное ($O(e^n) \to O(n^3)$) |
| Ключевой механизм | Амплитудная амплификация | Квантовая интерференция через QFT |
| Сфера применения | Поиск в БД, комбинаторика, перебор ключей | Факторизация, дискретное логарифмирование |
| Влияние на безопасность | Требует удвоения длины ключей AES | Компрометирует RSA и ECC |

---

5. Эра NISQ и гибридные алгоритмы (VQE и QAOA)

Современные квантовые компьютеры находятся на этапе NISQ (*Noisy Intermediate-Scale Quantum*). Это процессоры со десятками или сотнями кубитов, лишенные аппаратной коррекции ошибок. Время их декогеренции (сохранения квантового состояния) ограничено микросекундами, что делает невозможным исполнение глубоких схем Шора или Гровера.

Решением стали вариационные квантово-классические алгоритмы (VQA), объединяющие CPU/GPU и QPU в зацикленный контур.

       ┌────────────────────────────────────────────────────────┐
       │                 КЛАССИЧЕСКИЙ ЦИКЛ (CPU)                │
       │  Принимает E(θ) ──> Оптимизатор (SPSA / COBYLA)        │
       │  Обновляет параметры θ_new = θ - α·∇E                  │
       └───────────────────────────┬────────────────────────────┘
                                   │  Новые параметры θ
                                   ▼
       ┌────────────────────────────────────────────────────────┐
       │                  КВАНТОВЫЙ ЦИКЛ (QPU)                  │
       │  1. Подготовка состояния Анзаца: |Ψ(θ)⟩                 │
       │  2. Измерение энергии гамильтониана: E(θ) = ⟨Ψ(θ)|H|Ψ(θ)⟩│
       └───────────────────────────┬────────────────────────────┘
                                   │  Значение энергии E(θ)
                                   └────────────────────────────┘

VQE (Variational Quantum Eigensolver)

Используется в квантовой химии и материаловедении для поиска основного энергетического состояния молекул.

1. QPU подготавливает пробное квантовое состояние (Анзац) с набором параметров $\vec{\theta}$ и измеряет его энергию.
2. CPU принимает значение энергии, оценивает его с помощью классического оптимизатора и корректирует углы поворота $\vec{\theta}$.
3. Процесс повторяется до минимизации энергии. За счет малой глубины схемы VQE устойчив к шумам и позволяет точно моделировать химические соединения без экспоненциальных затрат памяти.

QAOA (Quantum Approximate Optimization Algorithm)

Предназначен для решения комбинаторных задач (Max-Cut, задача коммивояжера, оптимизация финансовых портфелей). QAOA переводит комбинаторные условия в энергетический гамильтониан системы и чередует слои операторов задачи и смешивания, позволяя квантовой системе находить глобальный минимум функции стоимости, избегая попадания в локальные минимумы.

---

Заключение: Архитектура будущего

Квантовые процессоры не предназначены для замены CPU в ежедневных пользовательских задачах. QPU не станет быстрой альтернативой классическому чипу для выполнения операционных систем, обработки текста или рендеринга.

Будущее высокопроизводительных вычислений (HPC) строятся на гибридных гетерогенных архитектурах:

  • CPU берет на себя роль оркестратора системных процессов, управляет логикой приложений и обработкой ввода-вывода.
  • GPU / NPU ускоряют параллельные векторные вычисления, стандартную графику и обучение нейросетей.
  • QPU выступает специализированным сопроцессором для специфического класса экспоненциально сложных задач: материаловедения, молекулярного моделирования, глобальной логистической оптимизации и криптоанализа.

Эволюция от CPU к QPU — это не смена одного типа транзистора на другой, а выход вычислений в новое физическое измерение, где информация подчиняется фундаментальным законам квантовой механики.

******

Для реализации алгоритма VQE (Variational Quantum Eigensolver) в современном SDK Qiskit 1.0+ используется связка из квантовой схемы (Анзаца), примитива Estimator для измерения энергии и классического оптимизатора из библиотеки scipy.optimize.

В этом примере мы найдем минимальное собственное значение (энергию основного состояния) для простейшего двухкубитного гамильтониана $H = Z \otimes Z + X \otimes I$.

Код реализации VQE

import numpy as np
from scipy.optimize import minimize

# Импорты Qiskit
from qiskit.circuit.library import TwoLocal
from qiskit.quantum_info import SparsePauliOp
from qiskit.primitives import StatevectorEstimator

# 1. Определение Гамильтониана системы (H = Z^Z + X^I)
# Ищем минимальную энергию для системы из 2 кубитов
hamiltonian = SparsePauliOp.from_list([("ZZ", 1.0), ("IX", 1.0)])

# 2. Построение Анзаца (параметризованной квантовой схемы)
# TwoLocal создает слои поворотов (RY) и запутывающих гейтов (CZ)
ansatz = TwoLocal(num_qubits=2, rotation_blocks="ry", entanglement_blocks="cz", reps=1)
num_params = ansatz.num_parameters

# 3. Инициализация примитива Estimator (симмулятор точных состояний)
estimator = StatevectorEstimator()

# 4. Целевая функция для классического оптимизатора (Cost Function)
def cost_func(params):
    # Запускаем схему с текущими параметрами params
    job = estimator.run([(ansatz, hamiltonian, params)])
    result = job.result()[0]
    # Возвращаем среднее значение энергии E(θ)
    return float(result.data.evs)

# 5. Классический цикл оптимизации (CPU)
# Начальные случайные параметры θ
initial_params = np.random.rand(num_params)

# Используем метод COBYLA (или L-BFGS-B / SPSA)
res = minimize(cost_func, initial_params, method="COBYLA")

# 6. Вывод результатов
print("--- Результаты VQE ---")
print(f"Найденная энергия основного состояния: {res.fun:.6f}")
print(f"Количество итераций: {res.nfev}")
print(f"Оптимальные параметры θ: {np.round(res.x, 3)}")

# Проверка: точное минимальное собственное значение через матрицу
exact_energy = min(np.linalg.eigvals(hamiltonian.to_matrix()))
print(f"Точное теоретическое значение: {exact_energy.real:.6f}")

---

Как работает этот код:

1. Гамильтониан (SparsePauliOp): Задает оператор энергии системы через матрицы Паули $X, Y, Z$. В данном случае $Z_0 Z_1 + X_1 I_0$.
2. Анзац (TwoLocal): Генерирует шаблон квантовой схемы с переменными углами поворота $\theta_i$. Повороты $RY(\theta)$ подготавливают суперпозицию, а гейты $CZ$ создают квантовую запутанность между кубитами.
3. Оцениватель (StatevectorEstimator): Вычисляет ожидаемое значение энергии $E(\theta) = \langle \Psi(\theta) \vert{} H \vert{} \Psi(\theta) \rangle$. В NISQ-устройствах вместо симулятора используется реальный QPU.
4. Гибридный цикл (scipy.optimize.minimize): Классический процессор (CPU) меняет углы $\theta$ с помощью градиентного или безградиентного спуска (COBYLA), пока значение $E(\theta)$ не перестанет уменьшаться.

*****

Чтобы запустить код VQE на реальном квантовом процессоре IBM (QPU) через сервис IBM Quantum Platform, необходимо переключиться с симулятора на примитивы сервиса qiskit-ibm-runtime.

Для запуска на реальном «шумном» железе NISQ требуется выполнить несколько обязательных шагов:

1. Транспиляция (Transpilation): Приведение универсальной схемы к нативному набору гейтов и топологии физического процессора.
2. Использование QiskitRuntimeService: Передача задач через облачные очереди IBM.
3. Митигация ошибок (Error Mitigation): Включение встроенных методов подавления шума.

---

Адаптированный Python-код для IBM QPU

Для работы требуется установить пакет: pip install qiskit-ibm-runtime qiskit-transpiler-service

import numpy as np
from scipy.optimize import minimize

from qiskit.circuit.library import TwoLocal
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

# Импорты для работы с облаком IBM Quantum
from qiskit_ibm_runtime import QiskitRuntimeService, EstimatorV2 as Estimator

# 1. Подключение к платформе IBM Quantum
# Предварительно нужно сохранить токен: QiskitRuntimeService.save_account(channel="ibm_quantum", token="YOUR_IBM_TOKEN")
service = QiskitRuntimeService()

# Выбираем наименее загруженный реальный QPU (например, ibm_brisbane, ibm_kyoto и т.д.)
backend = service.least_busy(operational=True, simulator=False)
print(f"Выбран квантовый процессор: {backend.name}")

# 2. Определение Гамильтониана (H = Z^Z + X^I)
hamiltonian = SparsePauliOp.from_list([("ZZ", 1.0), ("IX", 1.0)])

# 3. Построение и адаптация (транспиляция) Анзаца под конкретное железо
ansatz = TwoLocal(num_qubits=2, rotation_blocks="ry", entanglement_blocks="cz", reps=1)

# Транспиляция под физическую топологию и нативные гейты выбранного QPU
pm = generate_preset_pass_manager(backend=backend, optimization_level=3)
isa_ansatz = pm.run(ansatz)
isa_hamiltonian = hamiltonian.apply_layout(isa_ansatz.layout)

num_params = isa_ansatz.num_parameters

# 4. Инициализация примитива Estimator для работы с реальным QPU
estimator = Estimator(mode=backend)
# Включаем уровень митигации ошибок (1 или 2 для реального железа)
estimator.options.default_shots = 4096
estimator.options.resilience_level = 1 

# 5. Функция стоимости (Cost Function) для гибридного цикла
def cost_func(params):
    # Отправка задачи в облачную очередь IBM QPU
    job = estimator.run([(isa_ansatz, isa_hamiltonian, params)])
    result = job.result()[0]
    
    # Извлечение усредненной энергии с митигацией ошибок
    energy = float(result.data.evs)
    print(f"Текущая энергия на QPU: {energy:.6f}")
    return energy

# 6. Запуск классической оптимизации на CPU
initial_params = np.random.rand(num_params)

# На реальном шумящем QPU предпочтителен устойчивый к шуму алгоритм SPSA или COBYLA
res = minimize(cost_func, initial_params, method="COBYLA", options={"maxiter": 30})

print("\n--- Результаты вычислений на реальном QPU ---")
print(f"Найденная энергия основного состояния: {res.fun:.6f}")
print(f"Использованный QPU: {backend.name}")

---

Ключевые отличия от симуляции:

1. Замена примитивов: Вместо StatevectorEstimator применяется qiskit_ibm_runtime.EstimatorV2, который отправляет квантовые схемы на исполнение в облачные криостаты IBM.
2. ISA (Instruction Set Architecture): Схема обязательно транспилируется (pm.run(ansatz)) под граф связей кубитов реального чипа (например, Eagle или Heron) и его нативный набор гейтов (ECR, CZ, RZ, SX).
3. Число измерений (shots): На симуляторе результат вычисляется математически точно. На реальном железе результат формируется статистически по сериям из измерений (например, 4096 shots).
4. Уровень устойчивости (resilience_level): Включает методы компенсации шумов, такие как M3 (Measurement Error Mitigation) и ZNE (Zero Noise Extrapolation).