Код квантового преобразования Фурье для 3 кубитов

Фон

Я наткнулся на квантовый симулятор Javascript и пытался написать код (т.е. квантовую схему) для реализации 3-битного квантового преобразования Фурье.

Самое близкое, что я мог получить, показано ниже: QFT результат

Это основано на главе о QFT из "Квантовых вычислений и квантовой информации" Нильсена и Чуанга. (Затворы условного НЕ в конце схемы предназначены для замены выходных битов в правильном порядке - QFT меняет порядок битов в обратном порядке.)

Я также попробовал схему, основанную на статье QFT в Википедии, но не получил ближе к ответу.

Вопрос

Кто-нибудь может помочь исправить мой алгоритм для вычисления QFT?

(Я думаю, что, скорее всего, ошибка в моей схеме, но я думаю, что также возможно, что есть ошибка в базовой реализации Javascript?)

1 ответ

Решение

Причина, по которой схема из Википедии не работает, заключается в том, что предоставленные вентили фазы поворачиваются по часовой стрелке, а не против часовой стрелки (например, -45 градусов вместо +45 градусов). Схема в Википедии (и, вероятно, учебник тоже) использует вентиль R_(pi/2), но у вас есть вентиль R_(-pi/2).

Есть несколько способов решить эту проблему:

  • Имитируйте ворота +45 градусов, используя Z (-180), -90 и -45. Аналогичная идея для +90.
  • Переверните цепь вверх дном, чтобы вентили на проводе 1 теперь были на проводе 3 после, и наоборот.
  • Переместите заменяемую часть (последние три Х-ворот) из конца в начало
  • Обратный порядок всех ворот, кроме трех X в конце.
  • (Думаю) Применим ровно три из вышеперечисленных.
  • Наверное, еще куча способов. Выяснить, почему каждый работает интересно.

Извините, обратные этапы сбивают с толку. (На самом деле это мой симулятор схемы, который я написал для поста в блоге, в котором есть решение.)

Другие вопросы по тегам