Код квантового преобразования Фурье для 3 кубитов
Фон
Я наткнулся на квантовый симулятор Javascript и пытался написать код (т.е. квантовую схему) для реализации 3-битного квантового преобразования Фурье.
Самое близкое, что я мог получить, показано ниже:
Это основано на главе о QFT из "Квантовых вычислений и квантовой информации" Нильсена и Чуанга. (Затворы условного НЕ в конце схемы предназначены для замены выходных битов в правильном порядке - QFT меняет порядок битов в обратном порядке.)
Я также попробовал схему, основанную на статье QFT в Википедии, но не получил ближе к ответу.
Вопрос
Кто-нибудь может помочь исправить мой алгоритм для вычисления QFT?
(Я думаю, что, скорее всего, ошибка в моей схеме, но я думаю, что также возможно, что есть ошибка в базовой реализации Javascript?)
1 ответ
Причина, по которой схема из Википедии не работает, заключается в том, что предоставленные вентили фазы поворачиваются по часовой стрелке, а не против часовой стрелки (например, -45 градусов вместо +45 градусов). Схема в Википедии (и, вероятно, учебник тоже) использует вентиль R_(pi/2), но у вас есть вентиль R_(-pi/2).
Есть несколько способов решить эту проблему:
- Имитируйте ворота +45 градусов, используя Z (-180), -90 и -45. Аналогичная идея для +90.
- Переверните цепь вверх дном, чтобы вентили на проводе 1 теперь были на проводе 3 после, и наоборот.
- Переместите заменяемую часть (последние три Х-ворот) из конца в начало
- Обратный порядок всех ворот, кроме трех X в конце.
- (Думаю) Применим ровно три из вышеперечисленных.
- Наверное, еще куча способов. Выяснить, почему каждый работает интересно.
Извините, обратные этапы сбивают с толку. (На самом деле это мой симулятор схемы, который я написал для поста в блоге, в котором есть решение.)