Цели главы. Разобрать алгоритмы Дойча–Йожи, Бернштейна–Вазирани и Саймона. Они решают специально построенные задачи, зато позволяют на простом материале освоить фазовый откат, интерференцию амплитуд и сочетание квантовой подпрограммы с классической постобработкой. Алгоритм Саймона даёт экспоненциальное разделение квантовой и рандомизированной классической сложности запросов и исторически привёл Шора к алгоритмам факторизации и дискретного логарифмирования.
Все алгоритмы этой главы формулируются в модели оракула (чёрного ящика): дана функция f, доступная только через вентиль Uf|x⟩|y⟩ = |x⟩|y⊕f(x)⟩ (глава 4), и требуется выяснить некоторое свойство f, сделав как можно меньше обращений. Сложность измеряется числом запросов к оракулу. Модель позволяет строго доказывать разделения: нижние оценки числа запросов обычно доступны там, где нижние оценки полного времени неизвестны. Ограничение модели состоит в том, что оракульное разделение не всегда переносится на функции, заданные явной схемой.
Сначала пусть f — булева функция, а её выходной регистр состоит из одного кубита. Подадим на него не |0⟩, а состояние |−⟩ = (|0⟩ − |1⟩)/√2. Тогда:
Uf|x⟩|−⟩ = (|x⟩|f(x)⟩ − |x⟩|1⊕f(x)⟩)/√2 = (−1)f(x)|x⟩|−⟩.
Второе равенство проверяется отдельно для f(x) = 0 и f(x) = 1. Целевой кубит не изменился, а значение функции записалось в относительную фазу входного состояния: |x⟩ → (−1)f(x)|x⟩. Этот манёвр называется фазовым откатом (phase kickback). Фаза недоступна непосредственному измерению в вычислительном базисе, но влияет на последующую интерференцию.
Второй ингредиент — слой Адамаров H⊗n, переводящий |0…0⟩ в равномерную суперпозицию всех 2n входов. Оракул когерентно действует согласно f(x) на каждой базисной компоненте; это иногда небрежно называют «вычислением функции на всех входах сразу». Название опасно тем, что все значения нельзя прочитать: последующая интерференция позволяет извлечь лишь специально закодированное глобальное свойство. Схема разделов 5.3–5.5: суперпозиция → фазовый откат → интерференция → измерение.
Для анализа понадобится формула действия H⊗n на произвольное базисное состояние (проверьте её для n = 1 и n = 2 — упражнение 1):
H⊗n|x⟩ = 2−n/2 ∑y (−1)x·y|y⟩,
где x·y = x1y1 ⊕ … ⊕ xnyn — скалярное произведение битовых строк по модулю 2.
Простейший случай: f: {0,1} → {0,1}, требуется узнать, постоянна ли f (f(0) = f(1)) или сбалансирована (f(0) ≠ f(1)). Классически необходимо два запроса — оба значения. Квантово достаточно одного:
Алгоритм не определяет f(0) и f(1) по отдельности: функции 00 и 11 дают один ответ, а 01 и 10 — другой. Извлекается нужное глобальное свойство f(0)⊕f(1), а не таблица значений функции.
Обобщение: f: {0,1}n → {0,1}, обещано, что f либо постоянна, либо сбалансирована (равна 0 ровно на половине входов); выяснить, что именно. Детерминированному классическому алгоритму в худшем случае нужно 2n−1 + 1 запросов. Квантовая схема — та же, что у Дойча, только шире:
|0⟩⊗n → H⊗n → Uf (с |−⟩ в целевом) → H⊗n → измерение
Проследим состояние входного регистра. После первого слоя Адамаров — равномерная суперпозиция; после фазового отката — 2−n/2 ∑x (−1)f(x)|x⟩; после второго слоя (по формуле из 5.2):
2−n ∑y [ ∑x (−1)f(x) ⊕ x·y ] |y⟩.
Амплитуда состояния |0…0⟩ (положим y = 0…0) равна 2−n ∑x (−1)f(x): для постоянной f это ±1, поэтому вся вероятность сосредоточена в нуле; для сбалансированной функции слагаемые сокращаются до нуля. Если измерено 0…0, функция постоянна, любой другой результат означает, что она сбалансирована. Ответ достоверен после одного запроса, тогда как детерминированной классической процедуре в худшем случае требуется экспоненциально много запросов.
С рандомизированным классическим алгоритмом сравнение иное. Запросим k случайных различных входов и объявим функцию постоянной, только если все ответы совпали. Для сбалансированной функции вероятность ошибки не превосходит 21−k, а для постоянной ошибки нет. Поэтому для заданной постоянной вероятности ошибки достаточно постоянного числа классических запросов. Алгоритм Дойча–Йожи даёт точное разделение с детерминированной классической сложностью, но не экспоненциальное преимущество над рандомизированной при ограниченной ошибке; его основная роль здесь учебная.
Та же схема без единого изменения решает другую задачу. Пусть f(x) = s·x для неизвестной строки s; найти s. Классически нужно ровно n запросов (по одному на бит: f(10…0) = s1 и т.д.). Квантово — один. Подставим f(x) = s·x в состояние перед вторым слоем Адамаров: 2−n/2 ∑x (−1)s·x|x⟩. Но по формуле из 5.2 это в точности H⊗n|s⟩! Второй слой Адамаров (H — обратный сам себе) превращает состояние ровно в |s⟩, и измерение выдаёт секретную строку целиком, достоверно, с одного запроса.
Для точного ответа разделение здесь равно 1 против n. Рандомизация не уменьшает число классических запросов, если требуется вероятность успеха больше 1/2 для каждого секрета: после q линейных уравнений остаётся не менее 2n−q совместимых строк. Интерференция собирает нужные линейные характеристики функции в одно измеряемое базисное состояние.
Кульминация главы. Дана f: {0,1}n → {0,1}n с обещанием: существует ненулевая строка s, такая что f(x) = f(z) тогда и только тогда, когда z = x или z = x⊕s. Иными словами, f «двухлистна» с периодом s относительно XOR. Найти s.
Классическая сложность: пока не найдены два входа с равными значениями, об s не известно почти ничего; парадокс дней рождения даёт нижнюю оценку Ω(2n/2) запросов — экспоненциально много, и рандомизация не спасает.
Квантовая часть алгоритма. Два регистра по n кубитов:
Классическая часть. Одно уравнение не определяет s, поэтому квантовую подпрограмму повторяют и собирают систему s·y1 = 0, s·y2 = 0, …. Когда получены n − 1 линейно независимых уравнений — за O(n) повторов с постоянной вероятностью, — систему решают методом Гаусса над полем из двух элементов. Пространство решений одномерно и состоит из 0 и искомого s. При необходимости успех усиливают дополнительными повторами.
Итого требуется O(n) квантовых запросов и полиномиальная классическая постобработка, тогда как любой рандомизированный классический алгоритм с ограниченной ошибкой требует Ω(2n/2) запросов. Это экспоненциальное разделение в модели оракула, а не доказательство аналогичного разрыва для произвольных явно заданных функций. Архитектура алгоритма предвосхищает Шора: квантовая подпрограмма извлекает соотношения о скрытой периодичности, а классическая постобработка восстанавливает период. В своей статье Шор отмечал, что пришёл к алгоритму после знакомства с работой Саймона.
Ответы и указания. 1: H⊗2|10⟩ = (|00⟩ + |01⟩ − |10⟩ − |11⟩)/2, поскольку 10·y = y1. 2: функции 00 и 11 дают после оракула соответственно |+⟩ и −|+⟩, а функции 01 и 10 — |−⟩ и −|−⟩; глобальные знаки не влияют на ответ. 3: после отката состояние 2−3/2∑x(−1)x1⊕x3|x⟩; финальное измерение даёт 101 с вероятностью 1. 4: после игнорирования второго регистра первый описывается смесью состояний пар (|x⟩+|x⊕s⟩)/√2; QFT над (ℤ2)n переводит каждую пару в распределение только на строках y с s·y = 0. 5: вероятность равна ∏k=0n−2(1−2k−(n−1)) и стремится примерно к 0,289, поэтому постоянное число серий достаточно для усиления успеха. 6: подпрограмма выдаёт равномерно случайные строки y без ограничений. Если собрано n линейно независимых строк, система имеет только нулевое решение, что достоверно исключает ненулевой период; такое свидетельство появляется за O(n) повторов с постоянной вероятностью, которую можно усилить.