Квантовые компьютеры позволяют решать определённый спектр задач на порядки быстрее, чем «классические» компьютеры.
Квантовое программирование крайне перспективно, благодаря ему возможно решить задачи и разработать алгоритмы, которые ранее были недоступны.
Фундаментальное различие традиционного и квантового языков
Программы на низком уровне манипулируют нулями и единицами.
Этим нулям и единицам соответствуют дискретные бинарные состояния физических систем.
Квантовые компьютеры работают с непрерывными диапазонами состояний.
Классический бит может принимать только одно из двух состояний — «включено» (1) или «выключено» (0), как обычная лампа накаливания.
Кубиты, основа квантовых компьютеров, больше похожи на светильник с регулировкой яркости. Кубит напоминает собой кота Шредингера, который ни жив, ни мертв. То есть кубит это суперпозиция двух состояний 0 и 1.
Однозначно измерить кубит невозможно, при попытке его измерить он примет одно конкретное значение 0 или 1, при этом еще предыдущее состояние будет потеряно безвозвратно. Поэтому для описания кубитов используют теорию вероятности.
Эта квантовая «странность» позволяет получить системы с эффективностью выше классических.
Более подробный материал с математическими выкладками
Переходим непосредственно к квантовому программированию
Перед непосредственным программированием нужно составить схему для лучшего понимания происходящего. В этом нам поможет симулятор квантовой схемы.
Теперь выберем среду разработки, которая призвана ускорить разработку квантовых приложений, предоставляя полный набор инструментов, необходимых для взаимодействия с квантовыми системами и симуляторами.
Наш выбор пал на Qiskit
Он работает в двух режимах. Первый — как и все, обычный локальный эмулятор. Второй — запуск вашей программы на настоящем квантовом компьютере IBM Q, который выглядит примерно так.
Основная версия Qiskit использует язык программирования Python
Реализуем случай броска монеты
Через оператор Адамара реализуем равномерную суперпозицию.
Замерим практические реальные показатели
Получили примерно то, что и ожидали с вероятностью 0.48 у нас будет «1» и с вероятностью 0.52 — «0». Всё верно, при броске монеты идеальный вероятностный результат стремится к 0.5
Здесь мы сначала создаём квантовый и классический регистры. Классический регистр нужен, чтобы куда-то записать результат измерения. То есть я с квантовым регистром делаю преобразования, результат получаю классический — нолик или единичку. Затем создаю свою схему, в которой есть этот квантовый классический кубит.
superposition_state.h(q) — это операция Адамара, а q — наш кубит.
На этом наше введение завершается. Если кого-то заинтересовала эта тема, то вам необходимо проследовать сюда