Алгоритм Дойча — Йожи

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Алгоритм Дойча — Йожи для функции от переменных.  — преобразование Адамара.  — фазовый запрос. Нижний кубит — вспомогательный, используемый для осуществления фазового запроса.

Алгоритм Дойча — Йожи (упоминается также как алгоритм Дойча — Джозы) — квантовый алгоритм, предложенный Дэвидом Дойчем и Ричардом Йожей[en] в 1992 году, и ставший одним из первых квантовых алгоритмов. Алгоритм основывается на явлении квантовой запутанности и принципе суперпозиции, благодаря чему демонстрирует квантовое превосходство — значительно более эффективную работу в сравнении с известными классическими алгоритмами.

Алгоритм Дойча — первый вариант алгоритма, разработанный Дойчем в 1985 году; в нём рассматривается функция от одной переменной.

Задача[править | править код]

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

Для получения точного ответа любому классическому детерминированному алгоритму в худшем случае необходимо произвести обращений к оракулу, так как первые вычислений могут дать одно и то же значение, несмотря на то, что функция сбалансированная. Классическому вероятностному алгоритму потребуется меньше вычислений для того, чтобы гарантировать высокую вероятность получения верного ответа, однако единицы она также достигнет лишь при не менее, чем вычислений.

В квантовой постановке вычисление функции происходит в форме обращения к квантовому оракулу, производящего унитарное преобразование , которое действует на наборе из кубитов , выступающих аргументами функции, а также целевого кубита , на котором отразятся вычисления. Результатом такого преобразования для любого собственного состояния является набор , где — обозначение исключающего «или», соответствующего результату операции контролируемого отрицания кубита с помощью кубита . Так как унитарные преобразования являются линейными, результат данного преобразования для суперпозиции собственных состояний определяется как

Алгоритму Дойча — Йожи достаточно однократного обращения к квантовому оракулу для достоверного решения задачи.

Алгоритм[править | править код]

В основе алгоритма лежит преобразование Адамара[en] , результатом применения которого к собственным состояниям кубита являются суперпозиции

Если при обращении к оракулу целевой кубит находится в состоянии , то оракул реализует так называемый фазовый запрос, результатом которого для собственных состояний является умножение всего состояния на [1]:

Таким образом, в случае суперпозиции состояний фазовый запрос инвертирует фазу у всех состояний , соответствующих , и оставит без изменений состояния, соответствующие . В качестве аргумента фазового запроса алгоритм Дойча — Йожи использует состояние

являющееся равномерной суперпозицией всех собственных состояний набора из кубитов. Здесь обозначает возведение в степень через тензорное (кронекерово) произведение. Результат применения фазового запроса к такому состоянию равен

После повторного применения преобразования к первым кубитам амплитуда состояния будет равна

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

Другими словами, алгоритм представляет собой применение к нулевому вектору оператора и измерение состояния регистра. Если все биты регистра равны , значит значение функции не зависит от , в противном случае функция является сбалансированной.

Если же функция несбалансированная, алгоритм может выдать ответ «константа» с вероятностью, растущей при увеличении разница между количеством «0» и «1»[2].

Работа алгоритма на примере задачи Дойча[править | править код]

На вход алгоритму подаётся булева функция одной переменной . Всего существуют четыре таких функции[1]:

1 0 0
2 1 1
3 0 1
4 1 0

Функции 1 и 2 — константные, а функции 3 и 4 — сбалансированные.

На первом шаге кубиту задаётся нулевое состояние:

Применение преобразования Адамара даёт

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

Фазовый запрос к функции даёт следующее состояние:

Второе преобразование Адамара приводит к следующему состоянию:

При измерении состояния кубита получается 0 для константных функций и 1 для сбалансированных:

Состояние кубита Вероятность
получения 0
Вероятность
получения 1
1
2
3
4

Литература[править | править код]

Примечания[править | править код]

  1. 1 2 М. Вялый. Квантовые алгоритмы: возможности и ограничения, лекция 2 (Архивная копия от 10 июня 2011 на Wayback Machine), с. 12—13. — Санкт-Петербург, весна 2011.
  2. М. Вялый. Квантовые алгоритмы, лекция 2 Архивная копия от 26 апреля 2013 на Wayback Machine.