AriQuantum: Как я написал эмулятор квантового компьютера прямо в Telegram

от автора

Как часто вы слышите о квантовых компьютерах? О том, что за ними будущее или что современная криптография уязвима перед квантовыми вычислениями? Всё чаще в новостях появляются статьи о новых квантовых процессорах, о росте числа кубитов, о моделировании белков и новых материалов. Но, думаю, почти никто толком не понимает, как это всё работает.

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

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

Почему квантовые вычисления сложно учить

Начну с распространённого заблуждения. Вас всё время обманывали: кубит – это не 0 и 1 одновременно. Кубит – это квантовая система, которая до момента измерения находится в суперпозиции состояний. Формально он описывается вектором состояния: |ψ⟩ = α|0⟩ + β|1⟩, где α и β – комплексные коэффициенты, квадраты модулей которых показывают вероятность обнаружить кубит в состоянии |0⟩ или |1⟩ соответственно. Проще говоря, до измерения у кубита нет определённого значения – есть лишь распределение вероятностей.

В изучении квантовых вычислений существует несколько серьёзных барьеров:

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

  • Интуиция: квантовая механика – это отдельный мир, который крайне сложно представить привычным образом. Вектор состояния n-кубитной системы существует в 2ⁿ-мерном комплексном пространстве, тогда как мы живём в трёхмерном. Наша интуиция здесь просто не работает.

  • Инструменты: когда я сам только начинал разбираться в квантовых вычислениях, столкнулся с тем, что все ресурсы крайне разрозненны. Приходилось одновременно держать открытыми десятки вкладок, учебников и документаций, чтобы разобраться даже в базовых темах.

Quantum programming is the future after AI.

Именно эту фразу можно увидеть у меня в профиле Telegram. Квантовое будущее ближе, чем кажется. Пока мы активно занимаемся повышением цифровой грамотности населения, уже сейчас стоит думать о квантовой грамотности – как о следующей ступени технологического образования. Показательно, что в России этим вопросом занимаются всерьёз: например, «Росатом» активно развивает направление квантовых вычислений на государственном уровне. Но образовательный пласт пока заметно отстаёт от исследовательского – и именно этот разрыв я хочу сократить.

Путь к проекту

Мой интерес к квантовым компьютерам начался с видео на YouTube, которое я посмотрел на каникулах после окончания школы. Затем на первом курсе я написал два проекта:

  1. «Как квантовый компьютер и искусственный интеллект могут работать вместе». Преимущественно теоретическая работа – и, честно говоря, как я считаю, самая слабая в моей проектной деятельности.

  2. «Оценка эффективности эмулятора квантовых вычислений в сравнении с классическими подходами». Этот проект строился на гипотезе о том, что эмулятор квантовых вычислений способен превзойти классический код по скорости выполнения. По сей день он нравится мне больше всего: именно он заложил серьёзный фундамент в моём понимании квантовых вычислений.

После этого захотелось сделать что-то своё. И два месяца летних каникул между были отданы разработке Python-библиотеки ariquantum — собственного эмулятора квантовых вычислений.

Почему вообще стоило разрабатывать собственный эмулятор, когда уже существуют мощные фреймворки от IBM (Qiskit), Google (Cirq) и других лидеров отрасли? Ответ простой: все эти инструменты, на мой взгляд, избыточны. Огромное количество классов, функций и абстракций делает порог входа для новичка неоправданно высоким. Вдобавок ощущалась нехватка понятной документации на русском языке. Моей целью стало создать библиотеку, которая была бы простой в понимании и удобной в работе с первых минут.

С момента первого релиза (v0.1.0) библиотека не стояла на месте:

  • v0.1.1: улучшена документация, добавлены README-RU и requirements.txt.

  • v0.1.2: исправлена ошибка, мешавшая корректно измерять кубиты в схеме.

  • v0.2.0: улучшена работа измерений — более корректный вывод и добавлен метод для отображения квадратов амплитуд вероятностей.

Следующим шагом в направлении «низкого порога входа» стал Telegram-бот. В будущем он станет частью полноценной экосистемы AriQuantum – но об этом позже.

С начала 2026 года я начал продумывать архитектуру и интерфейс бота, тогда же стартовала разработка. Основной объём работ был выполнен за последний месяц. Максимальное число кубитов в схеме ограничено восемью – и упёрся я в это ограничение не из-за вычислительных мощностей, а из-за возможного неудобного размера сообщений в Telegram. По факту бот способен симулировать схемы вдвое большего размера. Управление схемой полностью реализовано через кнопки – никакого перехода в веб-интерфейс.

Бот поддерживает симуляцию на двух бэкендах:

  • ariquantum – быстрее на небольших схемах (до 6 кубитов), но может некорректно работать с гейтами после измерений, так как выводит только результаты последнего измерения.

  • qiskit (до 8 кубитов) – корректно обрабатывает измерения и последующие гейты, сохраняя результаты в классический регистр.

Демонстрация Telegram-бота

Перейдём к самому интересному. Интерфейс взаимодействия со схемой простой и понятный. Не буду раскрывать всё сразу – покажу главное.

Основной экран управления схемой приведён ниже. Здесь представлена схема квантовой телепортации. Из этого меню можно применить гейт к схеме – бот поддерживает все основные одно-, двух- и трёхкубитные гейты. Через раздел «Редактировать схему» доступна возможность очистить все гейты, удалить схему или задать ей новое имя.

При нажатии на «Запустить симуляцию» происходит магия бэкенда, и мы получаем результат:

Вывод после симуляции различается в зависимости от того, проводилось ли измерение в схеме. Ниже – пример без измерений:

Если измерение проводилось – дополнительно выводится статистика запусков. Их количество (на предыдущем скриншоте – 10) можно настроить через параметры бота, чтобы получать более подробную картину.

В AriQuantum боте есть немало возможностей для персонализации – все карты раскрывать не стану, лучше зайдите и познакомьтесь сами. 🙂

Технические трудности

Бот не содержит особенно сложных реализаций, однако в процессе разработки я столкнулся с парой интересных трудностей. Основная сложность была не в бэкенде симуляции, а в работе с базой данных и интернационализацией.

1. База данных. При разработке этого бота я впервые плотно познакомился с SQLAlchemy. Сложность состояла в том, что нужно было обрабатывать и сохранять изменения в БД внутри незакрытой транзакции. Решение оказалось простым:

user_settings.backend_id = backend_idawait session.flush()await session.refresh(user_settings)
  • await session.flush() – отправляет накопленные изменения из сессии в базу данных, не закрывая транзакцию. Это позволяет применить обновление немедленно, не дожидаясь финального commit().

  • await session.refresh(user_settings) – принудительно перезагружает объект из БД, заменяя его локальное состояние актуальными данными. Это гарантирует, что дальнейшая работа ведётся с уже обновлённой версией объекта.

2. Интернационализация. Бот при старте и через настройки позволяет выбрать язык интерфейса – русский или английский. Этот блок реализован с помощью Fluentogram. Впервые столкнувшись с интернационализацией в принципе, я потратил немало времени на настройку Fluent и корректный проброс значений через мидлвари – но в итоге разобрался.

Планы развития

Библиотека ariquantum. Ближайшие пару версий будут небольшими – правки отображения вектора состояния и другие улучшения. Затем планируется версия v1.0.0 с полноценным разделением на классический и квантовый регистры с сохранением простоты для новичков.

Telegram-бот AriQuantum. Следующий приоритет – отрисовка схем в виде изображений вместо ASCII. Вместе с этим появится поддержка большего числа кубитов в одной схеме. Также планирую добавить больший контроль над уже применёнными гейтами. В более долгосрочной перспективе – шумовые модели, экспорт и импорт из кода и обратно в него, MiniApp, интеграция с облачными квантовыми платформами для запуска симуляций на реальных квантовых компьютерах и поддержка дополнительных бэкендов.

Платформа AriQuantum. Конечная цель – полноценная платформа для обучения, программирования, исследований и сообщества в сфере квантовых технологий.

Целей много. Я к ним иду.

Заключение

Возвращаясь к квантовой грамотности. Хочется, чтобы всё больше людей интересовались квантовыми технологиями и видели в них не далёкую абстракцию, а реальный инструмент будущего. Это огромная область знаний, которая открывает такие же огромные возможности – сегодня и тем более завтра.

Узнавайте, учитесь, разрабатывайте. Спасибо всем, кто дочитал до этого места.

Связь со мной: @ArimShcherbakov

Ссылка на бота: @AriQuantumBot

ссылка на оригинал статьи https://habr.com/ru/articles/1042032/