Цели главы. Построить квантовое преобразование Фурье (QFT) — обобщение преобразования Адамара из главы 5 — и на его основе алгоритм оценки фазы. Оба инструмента понадобятся для алгоритма Шора; оценка фазы также лежит в основе ряда алгоритмов моделирования квантовых систем.
Напомним классическое дискретное преобразование Фурье: вектор (x0, …, xN−1) переводится в вектор (y0, …, yN−1) по формуле yk = N−1/2 ∑j xj·ωjk, где ω = e2πi/N — корень из единицы. ДПФ — сердце цифровой обработки сигналов: оно переводит сигнал из временного представления в частотное, обнажая периодичность.
Квантовое преобразование Фурье — тот же линейный оператор, применённый к амплитудам квантового состояния. Для n кубитов, N = 2n, на базисных состояниях (отождествляем битовые строки с числами от 0 до N−1):
QFT|j⟩ = N−1/2 ∑k=0N−1 e2πi·jk/N |k⟩.
Матрица QFT унитарна (упражнение 1), поэтому задаёт допустимое квантовое преобразование. При n = 1 формула даёт |0⟩ → (|0⟩+|1⟩)/√2, |1⟩ → (|0⟩−|1⟩)/√2, то есть вентиль Адамара. Тензорная степень H⊗n — преобразование Фурье над группой (ℤ2)n, естественное для XOR-структуры задачи Саймона; QFT размера 2n — преобразование над циклической группой ℤ2n, связанное с обычной арифметической периодичностью.
Ключ к эффективной схеме — представление результата в виде произведения. Запишем j в двоичной записи j = j1j2…jn (старший бит первым) и обозначим двоичную дробь 0.jl…jn = jl/2 + jl+1/4 + …. Тогда прямым вычислением (упражнение 2):
QFT|j⟩ = 2−n/2 (|0⟩ + e2πi·0.jn|1⟩) ⊗ (|0⟩ + e2πi·0.jn−1jn|1⟩) ⊗ … ⊗ (|0⟩ + e2πi·0.j1…jn|1⟩).
Для базисного входа |j⟩ выход раскладывается в тензорное произведение однокубитных состояний: каждый выходной кубит кодирует соответствующую двоичную дробь в фазе. Для произвольной суперпозиции входов выход QFT вовсе не обязан быть сепарабельным. Формулы на базисных состояниях достаточно, чтобы построить схему, поскольку её действие на остальные состояния определяется линейностью. Используются H и управляемые фазовые повороты
R_k = ⎡ 1 0 ⎤
⎣ 0 e^(2πi/2^k) ⎦
(добавляют младшие цифры 0.…jm от других кубитов). Схема: для кубита 1 — H, затем управляемые R2, …, Rn от кубитов 2, …, n; для кубита 2 — H и управляемые R2, …, Rn−1; и так далее; в конце — SWAP-ы, разворачивающие порядок кубитов (произведение выше выходит «задом наперёд»).
Сложность. Без финальной перестановки схема содержит n вентилей H и n(n−1)/2 управляемых поворотов — всего n(n+1)/2 операций. Разворот порядка добавляет ⌊n/2⌋ вентилей SWAP, так что асимптотика остаётся O(n2). Классическое БПФ обрабатывает явно заданный вектор длины N = 2n за O(N log N) = O(n·2n) операций. Прямое сравнение этих оценок, однако, не доказывает экспоненциального ускорения полезной задачи.
QFT преобразует амплитуды состояния, недоступные непосредственному чтению. Подготовка общего амплитудного состояния из явно заданного классического вектора длины N сама требует порядка N параметров и в общем случае порядка N операций; специальные модели памяти могут изменить стоимость доступа, но не устраняют цену создания и загрузки произвольных данных. На выходе одно измерение также не выдаёт все N коэффициентов. Поэтому QFT не является заменой классическому FFT для общего классического сигнала.
QFT полезно, когда входное состояние эффективно возникает внутри квантового алгоритма, а задаче нужен не полный вектор коэффициентов, а свойство вроде периода. В алгоритме Шора схема модульного возведения в степень создаёт периодическую структуру амплитуд, а QFT преобразует её в распределение с пиками, из которых период восстанавливается классически. Выигрыш определяется всей процедурой подготовки, преобразования и измерения, а не только стоимостью QFT.
Постановка. Дан унитарный оператор U, доступный вместе с управляемыми степенями U2k, и его собственный вектор |u⟩: U|u⟩ = e2πiθ|u⟩. Требуется оценить θ ∈ [0, 1). Сначала разберём случай, когда фаза имеет точную t-битовую запись.
Идея — фазовый откат в чистом виде. Заведём счётный регистр из t кубитов и рабочий регистр в состоянии |u⟩:
Неточный случай. Если θ не представляется конечной t-битовой дробью, выход сосредоточен возле целого 2tθ. Вероятность получить ближайшую t-битовую дробь не меньше 4/π2 ≈ 0,405. Для абсолютной ошибки не более 2−m с вероятностью отказа не выше ε достаточно взять t = m + ⌈log2(2 + 1/(2ε))⌉ счётных кубитов. Число верных двоичных разрядов растёт линейно с размером регистра, а абсолютная погрешность убывает экспоненциально.
Стоимость. Обратное QFT требует O(t2) вентилей, но в общей модели главная статья расходов — управляемые степени U. Если строить их повторением U, суммарное число вызовов равно 1 + 2 + 4 + … + 2t−1 = 2t − 1; такая зависимость отражает обычную цену оценки фазы с точностью порядка 2−t. В алгоритме Шора каждое преобразование, соответствующее U2k, реализуется полиномиальной схемой умножения на заранее вычисленную константу a2k mod N, а не экспоненциальным числом повторов.
Если вход не является собственным состоянием. Для суперпозиции собственных векторов ∑cu|u⟩ оценка фазы выдаёт приближение одной из соответствующих фаз, а рабочий регистр проецируется на её собственное подпространство; при невырожденном спектре вероятность равна |cu|2. В алгоритме Шора это позволяет обойтись без приготовления определённого собственного вектора. В задачах квантовой химии тот же принцип используют для оценки энергии, если начальное состояние имеет достаточное перекрытие с нужным собственным состоянием гамильтониана.
Ответы и указания. 1: скалярное произведение столбцов k и k′ равно N−1∑j=0N−1e2πij(k−k′)/N = δkk′. 2: при соглашении о положительном знаке показателя QFT4 = (1/2)[[1,1,1,1],[1,i,−1,−i],[1,−1,1,−1],[1,−i,−1,i]]; произведение однокубитных множителей получается после разворота порядка выходных битов. 3: три H, три управляемых поворота (два R2, один R3), один SWAP. 4: счётный кубит проходит H, управляемый Z, H и измеряется в |1⟩ с вероятностью 1; результат 1 означает θ = 0.12 = 1/2. 5: θ = 1/8 = 0.0012, поэтому для точного результата нужны три кубита; при t < 3 получается распределение на соседних t-битовых дробях. 6: если оставить повороты до Rm, остаётся O(nm) вентилей, а накопленная ошибка имеет порядок O(n/2m); выбор m = O(log(n/ε)) даёт ошибку O(ε) и O(n log(n/ε)) операций.