![](https://habrastorage.org/files/fc7/c0b/c3e/fc7c0bc3e87e4e90a884128e427905e7.jpg)
(возможно вы уже видели эту картинку, хотя странно, что на хабре так мало материалов по квантовой информатике)
Спасибо гениальным инженерам Google, теперь мы все дружно можем превратить наши настольные ПК в квантовые компьютеры. Ну, хорошо, не совсем так: подразумевается лишь моделирование работы квантового компьютера на его младшем собрате путем запуска веб-приложения для Chrome. Quantum Computing Playground позволяет прогонять известные квантовые алгоритмы (такие как алгоритм Гровера, Шора) и писать собственных квантовые программы.
За исключением непосредственного приобретения квантового компьютера — что, несмотря на заявления D-Wave, вряд ли когда-нибудь удастся — решение от Google является наиболее удачным шагом в сторону популяризации квантового зверя. Если хочется лично встать на первую ступеньку вычислений будущего, это тот самый шанс. У вас есть дети? Вы обязаны посадить их в эту песочницу как минимум на шесть часов, чтобы они научились всем тонкостям квантовых вычислений.
Quantum Computing Playground
Площадка является веб-приложением Chrome (Chrome Experiment), использующая WebGL, чтобы имитировать до 22 кубитов на GPU. Присутствует небольшая среда разработки, чтобы писать, компилировать и исполнять код. Также имеются уже готовые примеры алгоритмов (Гровер, Шор), удобный отладчик и инструмент для 3D визуализации квантовых состояний, так что можно своими глазами увидеть, что происходит внутри вашего маленького квантового компьютера. Программы написаны на языке, называемом QScript, который очень похож на любой другой скриптовый язык.
QScript
К сожалению, если у пользователя нет никакого опыта программирования, ему, вероятно, будет довольно трудно в полной мере воспользоваться песочницей — здесь нет туториала, а комментарии в примерах на самом то деле не особо детальные. На странице помощи есть несколько подсказок о внутренней работе симулятора и намеков на то, что же такое QScript, но все равно требуется довольно прочный фундамент в квантовой теории, чтобы все досконально понять.
D-Wave
Любопытно для Google, Площадка применяет модель квантовых гейтов (Quantum Gates), а не адиабатических квантовых вычислений, используемых в D-Wave, в которой Google заказала квантовый компьютер в прошлом году. Споров о D-Wave всегда было предостаточно. Действительно ли их машины выполняют реальные квантовые вычисления, особенно, когда они стоят в 6000 раз дороже классического ПК? Если на Площадке используют обычные квантовые гейты, значит ли это, что Google знает, что D-Wave в действительности не имеет ничего общего с квантовой механикой?
Стоит заметить, что так называемая «модель квантовых гейтов» является обычным аппаратом линейной алгебры, тянущего за собой линейные пространства и линейные операторы (они же «гейты»), так что нет ничего страшного в том, чтобы этот аппарат реализовывать программно.
Дочитав до этого момента, вы ознакомились с полной юмора и красок статьей с extremetech.com.
Итак, QScript и его компилятор / VM. Гугл предоставляет следующие возможности:
— компиляция во внутренний код прямо из браузера
— возможность пошагового выполнения скомпилированных команд
— встроенные процедуры
— локальные переменные (в пределах процедур)
— синтаксис выражений совместим с JavaScript
— доступ к математическим функциям JavaScript
— «for-endfor» цикл, «if-else-endif» конструкции (поразительно)
— полная поддержка отладки со стеком вызовов и отслеживанием переменных
Дабы не загромождать статью, ниже приведены лишь основные квантовые гейты, реализованные в этой песочнице:
- Оператор Адамара (Hadamart Gate) создает суперпозицию состояний 0 и 1 для данного кубита. По смыслу является обратным к самому себе: применяя его два раза восстанавливает исходное состояние кубита.
- Сигма X (Sigma X, он же известный Паули X поворот) — квантовый эквивалент битового отрицания. Поскольку кубиты представляют из себя комплексные числа, довольно сложно придумать для них концепцию обычного отрицания. Sigma Y и Sigma Z — тоже «инвертируют» кубиты, но немного альтернативным способом.
- QFT применяет Квантовое Преобразование Фурье к части квантового регистра. Первый аргумент определяет первый кубит для преобразования, в то время как второй — ширину преобразования (количество кубитов, к которым преобразование будет применяться).
- CNOT реализует ту же трансформацию, что и Sigma X, но его выполнение обусловлено значением первого аргумента — управляющего кубита. Квантовое отрицание выполняется только для тех состояний, где управляющий кубит имеет значение 1. Состояния, где управляющий кубит имеет значение 0, остаются неизменными.
- Тоффоли-гейт (Toffoli Gate) работает таким же образом, как и CNOT, принимая управляющие кубиты в качестве двух аргументов и один целевой кубит. Отрицание осуществляется только на тех состояниях, где оба контрольных кубита имеют значение 1.
- Фазовый поворот (Phase Gate) вращает амплитуду тех состояний (состояние — комплексное число!), где целевой кубит имеет значение 1. Угол поворота задается вторым аргументом.
- Измерение (Measurement) — не принимает никаких аргументов, а лишь использует генератор случайных чисел (спасибо JavaScript), выбирает состояние из квантового вектора, который представляет собой случайную величину физического измерения квантового регистра. Операция не разрушает квантовый вектор, и поэтому измерения могут выполняться снова и снова без необходимости повторять все предыдущие квантовые вычисления заново.
Концептуально
Вообще говоря, непонятно с какой целью они этим занялись. С одной стороны, среда явно ориентирована на новичков, стремящихся наконец «увидеть» и «потрогать» квантовую механику, с которой они по тем или иным причинам столкнулись. Но тогда возникают вопрос: откуда гигантское нежелание писать мануалы? Непонятно также и то, зачем моделировать алгоритм Шора, не объяснив людям чем отличается
![](https://habrastorage.org/files/dd2/af6/573/dd2af65730464e14b00529a9a8ecf201.gif)
С другой стороны, очевидно, что в такой системе работать довольно неудобно, вряд ли в песочнице кто-то станет реализовывать хоть сколько-нибудь прикладные программы. Есть графический интерфейс, да. Но он заканчивается на банальном отображении точек в пространстве {состояние, время, амплитуда} — не более.
Существует довольно широкий спектр средств, позволяющих симулировать работу квантовомеханической системы, но хотелось бы знать, интересно ли это хабру?