Алгоритм Франка

Дмитрий Урбанович

Ижевск, 15—16 июня 2018

Обновлено 9 января 2021 (MathML)


Алгоритм Франка — это легкий по затратам памяти алгоритм, который моделирует один запуск квантового компьютера. Выдается одно базисное состояние, случайно выбранное из распределения, соответствующего заданной квантовой цепи и начальному состоянию.

Пусть нам дано t унитарных преобразований U 1 , U 2 , ..., U t и начальное состояние t кубитов в виде вектора ψ 0 размерности 2 n . Тогда определим состояние кубитов после применения U i рекуррентно: ψ i = U i ψ i 1

Первый способ промоделировать поведение квантового компьютера заключается в том, чтобы использовать генератор псевдослучайных чисел по распределению ψ t ψ t (покомпонентное произведение вектора с его комплексным сопряжением). Недостаток способа в том, что вектор ψ t имеет 2 n компонентов: для n = 40 получится 10 12 чисел, которые вряд ли влезут в оперативную память вашего компьютера.

К счастью, существует теорема BQP PSPACE . Ее доказательство заключается в том, чтобы вычислять одну компоненту вектора ψ t , k рекурсивно и без сохранения промежуточных результатов. ψ t , k = i = 0 2 n 1 U t , k , i ψ t 1 , k В реальности большинство из слагаемых этой суммы равны нулю. Например, для Тоффоли, cNOT и других «классических» вентилей количество ненулевых слагаемых равно одному, а для вентиля Адамара — двум. Таким образом, каждый компонент ψ t вычисляется за O ( 2 t ) .

Такой подход экономит память, но требует перебирать много конечных состояний: в квантовой механике трудно предсказать, какие из них будут иметь вероятности около нуля.

Майкл Франк в 2009 году воспользовался идеей Дэвида Бома: квантовая система находится в одном определенном базисном состоянии в каждый момент времени. Если очередное преобразование относится к классическим вентилям, то просто выполняется детерминированный переход. Если же это, к примеру, вентиль Адамара, то делается случайный выбор из двух возможных состояний k 1 и k 2 . Первое состояние будет выбрано с такой вероятностью: p i , k 1 = | ψ i , k 1 | 2 | ψ i , k 1 | 2 + | ψ i , k 2 | 2

Алгоритм выполняет всю квантовую цепь за O ( 2 t ) , так как верно следующее равенство: i = 0 t 1 2 i = 2 t 1

Алгоритм выдает конечные состояния в соответствии с распределением ψ t ψ t . Это доказывается по индукции: предположим, что на шаге t1 любое состояние ki выбирается с корректной вероятностью | ψ t 1 , k i | 2 . Тогда:

  1. Если Ut — «классический вентиль», то новое состояние будет выбранно также с корректной вероятностью. Это следует из того, что такие преобразования всего лишь делают перестановку амплитуд.
  2. Если Ut — вентиль Адамара, то все состояния делятся на пары k 1 и k 2 для преобразования. Заметим, что для любой такой пары верно равенство: | ψ t 1 , k 1 | 2 + | ψ t 1 , k 2 | 2 = | ψ t , k 1 | 2 + | ψ t , k 2 | 2 Тогда k 1 будет выбран при переходе либо из k 1 , либо из k 2 с такой вероятностью: | ψ t 1 , k 1 | 2 p t , k 1 + | ψ t 1 , k 2 | 2 p t , k 1 = | ψ t , k 1 | 2 | ψ t 1 , k 1 | 2 + | ψ t 1 , k 2 | 2 | ψ t , k 1 | 2 + | ψ t , k 2 | 2 = | ψ t , k 1 | 2

Напоследок приведем иллюстрацию из оригинальной статьи, которая показывает преимущества алгоритма для целей отладки.