Островок Капча
Островок Капча
Островок Капча

Квантовые вычисления для разработчиков: когда нам придется учить новую математику?

Влияние квантовой механики на программирование. Что нужно знать программистам квантовых битов, какие инструменты использовать для практики.

180 открытий3К показов
Квантовые вычисления для разработчиков: когда нам придется учить новую математику?

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

«Я думаю, что могу смело утверждать: квантовую механику не понимает никто».

По этой причине многие идеи оставим без внимания — попытка их объяснения растянется на десяток страниц. Также не будет формул и страшных математических моделей.

Рассмотрим лишь то, что приблизит к ответу на вопрос: как квантовые вычисления повлияют на программирование в будущем.

Определения и квантовая путаница

Кубиты

Квантовые вычисления строятся на основе кубитов. Они существуют как физические объекты. Законы квантовой механики проявляются на фотонах, электронах, ионах, атомах.

Квантовые вычисления для разработчиков: когда нам придется учить новую математику? 1
Бит содержит только одно значение, кубит принимает все значения одновременно

Самое интересное — если обычный бит принимает значение 0 или 1, то кубит находится в суперпозиции. Его состояние описывают диапазоном от 0 до 1, и оно непрерывно меняется.

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

Квантовая запутанность

В квантовой механике что не явление, то необъяснимое событие. Одно из таких — запутанность. Два отдельных кубита оказываются «связаны», игнорируя расстояние.

Например, если измеряете один кубит, то автоматически узнаете состояние другого. Даже если второй находится на Марсе.

Квантовый брутфорс

Битами классических компьютеров управляют логические операторы — И, ИЛИ, НЕ.

Квантовые вычисления для разработчиков: когда нам придется учить новую математику? 2
Оператор НЕ инвертирует значение классического бита. При работе с кубитом используются квантовые преобразования, которые являются обратимыми

Состоянием кубитов управляют гейты. Они «переставляют» квантовые вероятности, чтобы получить диапазон с правильным ответом.

Представьте замок и 40 ключей. Только один из них подходит. Классический компьютер попробует каждый ключ по очереди. Квантовый образец одновременно «проверит» все варианты, затем с помощью гейтов сузит поиск до верного.

Суть в том, что квантовые методы вычисляют ответ всего за √N попыток вместо N, как в классическом переборе.

Последнее испытание гибкости вашей фантазии: гейты выводят и удерживают кубиты в суперпозиции. Это невероятно сложная задача.

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

Он — компьютер, но квантовый

Есть мнение, что квантовый компьютер (КК) вовсе не компьютер, потому что выдает не точный, а приблизительный ответ.

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

Справедливое замечание: без классического компьютера квантовые вычисления — бесполезны.
Квантовые вычисления для разработчиков: когда нам придется учить новую математику? 3
Квантовый компьютер IBM

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

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

Как квантовые вычисления повлияют на программирование

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

С появлением достаточно мощного КК использование RSA и AES будет небезопасным. Поэтому IT-компании уже разрабатывают квантовую криптографию, чтобы защитить данные до появления угрозы.

В будущем интеграция квантовых технологий решит проблемы оптимизации. Компьютеры будут определять наилучшее решение среди огромного числа вариантов. Актуально для маршрутизации и планирования производства.

Машинное обучение тоже выигрывает от развития квантовых вычислений. Скорость обучения нейросетей увеличится в разы.

Классические алгоритмы vs квантовые алгоритмы

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

Например, алгоритм Шора. Он раскладывает числа на множители, но работает только на квантовом компьютере.

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

  • Для числа размером 2 цифры — очень легко.
  • Для числа размером 10 цифр — сложнее, но реально.
  • Для числа размером в 300 цифр (как в RSA-криптографии) — может занять тысячи лет.

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

Другой пример — алгоритм Гровера. Он ускоряет поиск в неструктурированных базах данных.

В списке из 1000 элементов обычный компьютер проверит до 1000 записей. Алгоритм Гровера проверит всего √1000 ≈ 31 запись.

Нужны ли новые языки программирования?

Для квантовых измерений только традиционных языков программирования недостаточно.

Qiskit

Разработчик: IBM

Популярный Python-фреймворк для программирования квантовых алгоритмов. На нем можно написать программу и выполнить ее на симуляторе. Есть возможность запускать алгоритмы на реальных квантовых компьютерах IBM через облако.

Cirq

Разработчик: Google

Библиотека на Python для создания и тестирования технологий квантового вычисления. Cirq чаще используют для работы с алгоритмами Гровера, Шора и др. Программу можно протестировать на симуляторе.

Q#

Разработчик: Microsoft

Q# — это часть Microsoft Quantum Development Kit (QDK). Он содержит инструменты для симуляции, разработки программ и интеграции квантовых вычислений с кодом на C# или Python.

Какая математика потребуется разработчикам?

Разработчик должен уметь работать с матрицами и векторами, потому что с их помощью описывают состояния кубитов и операции над ними.

Квантовые вычисления для разработчиков: когда нам придется учить новую математику? 4
Фрагмент задачи по квантовой механике

Векторы показывают, где кубит «находится» в пространстве, а матрицы управляют его изменениями.

Все квантовые операции — это просто умножение вектора состояния на матрицы. Но результат нельзя узнать до момента измерения, поэтому вероятность каждого расчета задается квадратичными модулями коэффициентов.

Квантовые вычисления невозможно представить без комплексных чисел. Они учитывают направление фазы, необходимое для описания интерференции (суперпозиции).

В будущем программист должен понимать, как измерения кубитов приводят к результатам с заданной вероятностью, и уметь моделировать суперпозицию.

Когда начинать изучать квантовые вычисления?

Развитие квантовых технологий находится на этапе перехода от исследовательской стадии к практике в реальных приложениях. До массового внедрения далеко, десятки лет.

Уходить сегодня из фронтенда в разработку квантовых программ — это как создавать ИИ в 80-х годах.

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

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

Какие компании уже инвестируют в квантовые вычисления?

IBM — лидер в разработке квантовых технологий. Их платформа IBM Quantum Experience предоставляет доступ к настоящим квантовым компьютерам через облако.

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

Квантовые вычисления для разработчиков: когда нам придется учить новую математику? 5
Квантовый процессор Google на 54 кубита

Google тоже добилась успеха, заявив о квантовой супрематии — решении задачи, недостижимой для классических компьютеров, с помощью своего процессора Sycamore. Google работает над оптимизацией алгоритмов и предоставляет инструменты для программирования на платформе Cirq.

Microsoft раньше других взялась за развитие языка программирования для квантовых вычислений — Q#. Вместе с этим доступен Quantum Development Kit, который моделирует квантовые программы и тестирует на симуляторах.

Amazon тоже не осталась в стороне. Компания предлагает облачный сервис AWS Braket, интегрирующий работу с квантовыми симуляторами.

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

Через 5 лет квантовые компьютеры, вероятно, достигнут промежуточной стадии применения. Усилия будут направлены на коррекцию ошибок.

Через 10 лет можно ожидать стабильных образцов с тысячами кубитов. Это станет отправной точкой для коммерческой квантовой индустрии.

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

Возможно, поколение разработчиков в 2045 году будет изучать квантовую механику наряду с классической информатикой.

Инструменты и платформы для начала работы

Если не терпится попробовать квантовую разработку, обратите внимание на следующие инструменты.

IBM Quantum Experience и Qiskit

Квантовые вычисления для разработчиков: когда нам придется учить новую математику? 6
Интерфейс IBM Quantum. Построение схемы квантовой телепортации

IBM Quantum Experience — это облачная платформа. Она поддерживает запуск кода на реальном квантовом компьютере — 5-кубитном IBM Quito. Платформа содержит учебные курсы, в том числе серию статей по основам квантовой механики.

Чтобы программировать кубиты, зарегистрируйтесь на IBM Quantum Experience и познакомьтесь с библиотекой Python Qiskit.

Пример квантовой схемы:

			from qiskit import QuantumCircuit, transpile, Aer, execute

# Создаем схему с одним кубитом
qc = QuantumCircuit(1)
qc.h(0)  # Применяем гейт
qc.measure_all()

# Симуляция схемы
simulator = Aer.get_backend('aer_simulator')
job = execute(qc, simulator)
result = job.result()
print(result.get_counts())
		

В библиотеке Qiskit есть модули для изучения оптимизации, машинного обучения и квантовой химии. Если хотите протестировать программу на реальном образце КК, подключайтесь через API.

Google Cirq

Google Cirq — это библиотека Python для создания, выполнения и отладки квантовых вычислений на симуляторах или реальном оборудовании Google. Cirq подходит для тех, кто хочет более программно ориентированный подход к квантовой механике.

Особенности:

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

Пример квантовой схемы:

			import cirq

# Создаем кубит
qubit = cirq.GridQubit(0, 0)

# Определяем схему
circuit = cirq.Circuit(
    cirq.H(qubit),              # Применяем гейт
    cirq.measure(qubit)         # Измерение кубита
)

print("Circuit:")
print(circuit)

# Запускаем симуляцию
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=50)
print("Results:")
print(result)
		

Чтобы использовать физический процессор, нужно подключиться к облаку Google Quantum.

Квантовые вычисления для разработчиков: когда нам придется учить новую математику? 7
Схематическое представление архитектуры квантового процессора Sycamore

Microsoft Q#

Q# — язык с высоким уровнем абстракции. Его используют, чтобы сосредоточиться на алгоритмах без погружения в низкоуровневую обработку кубитов.

Для работы с Q# понадобится Quantum Development Kit, .NET, расширение для Visual Studio или VS Code.

Простая программа на Q#:

			namespace QuantumHelloWorld {
    open Microsoft.Quantum.Intrinsic;
    open Microsoft.Quantum.Canon;

    operation SayHello() : Result {
        using (q = Qubit()) {
            H(q);            // Применяем гейт
            let result = M(q); // Измеряем кубит
            Reset(q);
            return result;
        }
    }
}
		

Код выполняется через симулятор, встроенный в QDK.

Microsoft предлагает облако с доступом к реальным квантовым процессорам. После настройки учетной записи Azure можно отправлять программы на лабораторные компьютеры и гибридные симуляторы.

Симуляторы

Чтобы лучше понять работу квантовых вычислений, стоит начать с симуляторов:

  • IBM Aer. Входит в состав Qiskit, имитирует шумовые и идеальные квантовые процессы.
  • Google Cirq’s Simulator. Интегрирован в библиотеку Cirq, поддерживает широкий спектр квантовых операций.
  • Microsoft Quantum Simulator. Разработан для работы с Q#, позволяет запускать программы и тестировать квантовые алгоритмы.
  • QuTip. Библиотека Python для работы с квантовыми системами, поддерживает симуляцию квантовых состояний, унитарных операций и вычислений.

Если вы новичок — используйте Qiskit + IBM Aer.

Любите низкоуровневое программирование? Google Cirq — ваш выбор.

Чувствуете, что вам нужен язык высокого уровня с интеграцией в классические приложения? Тогда изучайте Q# + Microsoft Quantum Simulator.

Что в итоге?

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

IBM, Microsoft и Google развивают экосистемы для новых специалистов. Есть симуляторы и обучающие материалы. Они немного облегчают вход в эту сферу.

Перед изучением темы нужно признать, что квантовые вычисления — это, без преувеличения, самое сложное направление программирования.

Следите за новыми постами
Следите за новыми постами по любимым темам
180 открытий3К показов