Подготовка квантовых схем в Quirk

Quirk — симулятор квантовых схем, который работает в браузере. Автором Quirk является github-пользователь Strilanc, исходный код Quirk доступен в репозитории.

В нашем курсе будет использоваться немного модифицированная и упрощённая версия Quirk. Вы можете найти её здесь.

Базовые конструкции

Рабочее поле Quirk выглядит так: quirk-view.png

Вы можете перетаскивать элементы из панелей управления (Toolbox) на схему. Если вам нужно больше кубитов, то можно перетащить гейт на новый провод, они появляются автоматически при начале перетаскивания. Максимально поддерживается 16 кубитов, но большие схемы могут начать тормозить.

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

Перетаскивание с Ctrl перемещает столбцы или строки целиком.

Нажатия Ctrl-Z и Ctrl-Shift-Z выполняют отмену и повтор действия, соответственно.

Многокубитные операции

Управляемые гейты и SWAP-гейт добавляются в несколько приёмов. Когда вы перетаскиваете элемент управления (control), он начинает управлять всеми гейтами, которые находятся в том же столбце. В одном столбце может быть несколько элементов управления. Аналогично добавляется и SWAP — вначале нужно добавить его на один кубит, а потом на второй.

Измерения

Справа в схеме имеются элементы для измерения (но их можно добавить и отдельно).

Самая левая колонка отображает вероятность измерить соответствующий кубит в состоянии 1. При наведении мыши можно увидеть значение с точностью до 7 знаков.

Средняя часть состоит из сфер Блоха с отмеченным состоянием. При наведении мыши можно увидеть значения соответствующих координат (в полярной и декартовой системах координат). Если несколько кубитов сцеплены, отдельные сферы Блоха не будут иметь смысла.

Правая матрица из кружков состоит из графического описания состояния системы. Строки соответствуют началу состояния, столбцы — концу (например, на пересечении строки, помеченной «01__», и столбца «__ 10» будет находиться кружок, соответствующий амплитуде состояния «0110»). Радиус кружка соответствует абсолютной величине амплитуды (\(r\)), а угол отрезка — аргументу (\(\phi\)). Заполнение квадрата соответствует квадрату амплитуды. По наведению мыши можно увидеть само состояние и его амплитуду.