Алгоритм Deutsch – Jozsa

редактировать

The Deutsch – Jozsa алгоритм - это детерминированный квантовый алгоритм, предложенный Дэвидом Де utsch и Ричард Джозса в 1992 году с улучшениями, внесенными Ричардом Кливом, Артуром Экертом, Кьярой Маккиавелло и Микеле Моска в 1998 году. Несмотря на то, что в настоящее время он практически не используется, это один из первых примеров квантового алгоритма, который экспоненциально быстрее любого возможного детерминированного классического алгоритма.

Содержание
  • 1 Постановка проблемы
  • 2 Мотивация
  • 3 Классическое решение
  • 4 История
  • 5 Алгоритм
  • 6 Алгоритм Дойча
  • 7 См. Также
  • 8 Ссылки
  • 9 Внешние ссылки
Постановка задачи

В задаче Дойча – Йозса нам дается квантовый компьютер черного ящика, известный как оракул, который реализует некоторую функцию f: { 0, 1} n → {0, 1} {\ displaystyle f \ двоеточие \ {0,1 \} ^ {n} \ rightarrow \ {0,1 \}}{\ displaystyle f \ двоеточие \ {0,1 \} ^ {n} \ rightarrow \ {0,1 \}} . Функция принимает на вход n-значные двоичные значения и выдает на выходе 0 или 1 для каждого такого значения. Нам обещали, что функция будет либо константой (0 на всех выходах или 1 на всех выходах), либо сбалансированной (возвращает 1 для половины входного домена и 0 для второй половины). Затем задача состоит в том, чтобы определить, является ли f {\ displaystyle f}f постоянным или сбалансированным, с помощью оракула.

Мотивация

Задача Дойча – Йожи специально разработана, чтобы быть простой для квантового алгоритма и сложной для любого детерминированного классического алгоритма. Мотивация состоит в том, чтобы показать проблему черного ящика, которая может быть эффективно решена квантовым компьютером без ошибок, тогда как детерминированному классическому компьютеру потребуется большое количество запросов к черному ящику для решения проблемы. Более формально, это дает оракул, относительно которого EQP, класс задач, которые могут быть решены точно за полиномиальное время на квантовом компьютере, и P являются

Так как задачу легко решить на вероятностном классическом компьютере, она не приводит к разделению оракула с BPP, классом задач, которые могут быть решена с ограниченной ошибкой за полиномиальное время на вероятностном классическом компьютере. Проблема Саймона является примером проблемы, которая приводит к разделению оракула между BQP и BPP .

Классическое решение

Для традиционный детерминированный алгоритм, где n - количество бит, 2 n - 1 + 1 {\ displaystyle 2 ^ {n-1} +1}2^{{n-1}}+1оценка f {\ displaystyle f}f потребуется в худшем случае. Чтобы доказать, что f {\ displaystyle f}f является постоянным, необходимо оценить чуть более половины набора входов и их выходы должны быть идентичны (помня, что функция гарантированно будет сбалансированной или постоянный, а не где-то посередине). Наилучший случай имеет место, когда функция сбалансирована и первые два выходных значения, которые случаются, различны. Для обычного рандомизированного алгоритма постоянных k {\ displaystyle k}k оценок функции достаточно для получения правильного ответа с высокой вероятностью (неудачный с вероятностью ϵ ≤ 1/2 k {\ displaystyle \ epsilon \ leq 1/2 ^ {k}}{\ displaystyle \ epsilon \ leq 1/2 ^ {k}} с k ≥ 1 {\ displaystyle k \ geq 1}k \ geq 1 ). Тем не менее, k = 2 n - 1 + 1 {\ displaystyle k = 2 ^ {n-1} +1}k = 2 ^ {{n-1}} + 1 оценки по-прежнему необходимы, если нам нужен всегда правильный ответ. Квантовый алгоритм Дойча-Йозса дает ответ, который всегда является правильным при единственной оценке f {\ displaystyle f}f .

История

Алгоритм Дойча-Йозса обобщает более раннюю (1985) работу Дэвида Deutsch, который предоставил решение для простого случая, когда n = 1 {\ displaystyle n = 1}n=1.. В частности, нам была предоставлена ​​логическая функция, вход которой равен 1 бит, f : {0, 1} → {0, 1} {\ displaystyle f: \ {0,1 \} \ rightarrow \ {0,1 \}}f: \ {0,1 \} \ rightarrow \ {0,1 \} и спросили, является ли оно постоянным.

Алгоритм, который первоначально предлагал Дойч, фактически не был детерминированным. Алгоритм был успешным с вероятностью половина. В 1992 году Дойч и Джозса разработали детерминированный алгоритм, который был обобщен до функции, которая принимает n {\ displaystyle n}n бит для ввода. В отличие от алгоритма Дойча, этот алгоритм требовал двух вычислений функции вместо одного.

Дальнейшие усовершенствования алгоритма Дойча – Йозса были сделаны Кливом и др., В результате чего был получен детерминированный алгоритм, требующий только одного запроса f {\ displaystyle f}f . Этот алгоритм до сих пор называют алгоритмом Дойча – Йозса в честь новаторских методов, которые они использовали.

Алгоритм

Для работы алгоритма Дойча – Йозса оракульные вычисления f ( x) {\ displaystyle f (x)}f (x) from x {\ displaystyle x}xдолжен быть квантовым оракулом, который не декогерируется х {\ displaystyle x}x. Он также не должен оставлять копии x {\ displaystyle x}xв конце вызова оракула.

алгоритм Дойча-Йожи квантовая схема

Алгоритм начинается с n + 1 {\ displaystyle n + 1}n + 1 состояния бита | 0⟩ ⊗ n | 1⟩ {\ displaystyle | 0 \ rangle ^ {\ otimes n} | 1 \ rangle}| 0 \ rangle ^ {{\ otimes n}} | 1 \ rangle . То есть каждый из первых n битов находится в состоянии | 0⟩ {\ displaystyle | 0 \ rangle}| 0 \ rangle , а последний бит - | 1⟩ {\ displaystyle | 1 \ rangle}| 1 \ rangle . Преобразование Адамара применяется к каждому биту для получения состояния

1 2 n + 1 ∑ x = 0 2 n - 1 | Икс⟩ (| 0⟩ - | 1⟩) {\ displaystyle {\ frac {1} {\ sqrt {2 ^ {n + 1}}}} \ sum _ {x = 0} ^ {2 ^ {n} - 1} | x \ rangle (| 0 \ rangle - | 1 \ rangle)}{\ frac {1} {{\ sqrt {2 ^ {{n + 1}}}}}} \ сумма _ {{x = 0}} ^ {{2 ^ {n} -1}} | x \ rangle (| 0 \ rangle - | 1 \ rangle) .

У нас есть функция f {\ displaystyle f}f , реализованная как квантовый оракул. Оракул отображает состояние | x⟩ | y⟩ {\ displaystyle | x \ rangle | y \ rangle}| x \ rangle | y \ rangle до | x⟩ | y ⊕ е (x)⟩ {\ displaystyle | x \ rangle | y \ oplus f (x) \ rangle}| x \ rangle | y \ oplus f (x) \ rangle , где ⊕ {\ displaystyle \ oplus}\ oplus - сложение по модулю 2 (подробности реализации см. ниже). Применение квантового оракула дает

1 2 n + 1 ∑ x = 0 2 n - 1 | Икс⟩ (| е (х)⟩ - | 1 ⊕ е (х)⟩) {\ displaystyle {\ frac {1} {\ sqrt {2 ^ {n + 1}}}} \ sum _ {x = 0} ^ {2 ^ {n} -1} | x \ rangle (| f (x) \ rangle - | 1 \ oplus f (x) \ rangle)}{\ frac {1} {{\ sqrt {2 ^ {{n + 1}}}}}} \ sum _ {{x = 0}} ^ {{2 ^ {n} -1} } | x \ rangle (| f (x) \ rangle - | 1 \ oplus f (x) \ rangle) .

Для каждого x, f (x) { \ displaystyle x, f (x)}{\ displaystyle x, f (x)} либо 0, либо 1. Проверяя эти две возможности, мы видим, что указанное выше состояние равно

1 2 n + 1 ∑ x = 0 2 n - 1 (- 1) f (x) | Икс⟩ (| 0⟩ - | 1⟩) {\ displaystyle {\ frac {1} {\ sqrt {2 ^ {n + 1}}}} \ sum _ {x = 0} ^ {2 ^ {n} - 1} (- 1) ^ {f (x)} | x \ rangle (| 0 \ rangle - | 1 \ rangle)}{\ frac {1} {{\ sqrt {2 ^ {{n + 1) }}}}}} \ sum _ {{x = 0}} ^ {{2 ^ {n} -1}} (- 1) ^ {{f (x)}} | x \ rangle (| 0 \ rangle - | 1 \ rangle) .

В этот момент последний кубит | 0⟩ - | 1⟩ 2 {\ displaystyle {\ frac {| 0 \ rangle - | 1 \ rangle} {\ sqrt {2}}}}\ frac {| 0 \ rangle - | 1 \ rangle} {\ sqrt {2}} можно игнорировать, поэтому ниже остается:

1 2 n ∑ x = 0 2 n - 1 (- 1) f (x) | x⟩ {\ displaystyle {\ frac {1} {\ sqrt {2 ^ {n}}}} \ sum _ {x = 0} ^ {2 ^ {n} -1} (- 1) ^ {f (x)} | x \ rangle}{\ displaystyle {\ frac {1} {\ sqrt {2 ^ {n}}}} \ sum _ {x = 0} ^ {2 ^ {n} -1} (- 1) ^ {f (x) } | x \ rangle} .

Мы применяем преобразование Адамара к каждому кубиту, чтобы получить

1 2 n ∑ x = 0 2 n - 1 (- 1) f (x) [1 2 n ∑ y знак равно 0 2 n - 1 (- 1) x ⋅ y | y⟩] = 1 2 n ∑ y = 0 2 n - 1 [∑ x = 0 2 n - 1 (- 1) f (x) (- 1) x ⋅ y] | y⟩ {\ displaystyle {\ frac {1} {\ sqrt {2 ^ {n}}}} \ sum _ {x = 0} ^ {2 ^ {n} -1} (- 1) ^ {f (x)} \ left [{\ frac {1} {\ sqrt {2 ^ {n}}}} \ sum _ {y = 0} ^ {2 ^ {n} -1} (- 1) ^ {x \ cdot y} | y \ rangle \ right] = {\ frac {1} {2 ^ {n}}} \ sum _ {y = 0} ^ {2 ^ {n} -1} \ left [\ sum _ {x = 0} ^ {2 ^ {n} -1} (- 1) ^ {f (x)} (- 1) ^ {x \ cdot y} \ right] | y \ rangle}{\ displaystyle { \ frac {1} {\ sqrt {2 ^ {n}}}} \ sum _ {x = 0} ^ {2 ^ {n} -1} (- 1) ^ {f (x)} \ left [{ \ frac {1} {\ sqrt {2 ^ {n}}}} \ sum _ {y = 0} ^ {2 ^ {n} -1} (- 1) ^ {x \ cdot y} | y \ rangle \ right] = {\ frac {1} {2 ^ {n}}} \ sum _ {y = 0} ^ {2 ^ {n} -1} \ left [\ sum _ {x = 0} ^ {2 ^ {n} -1} (-1) ^ {f (x)} (- 1) ^ {x \ cdot y} \ right] | y \ rangle}

где Икс ⋅ Y знак равно Икс 0 Y 0 ⊕ Икс 1 Y 1 ⊕ ⋯ ⊕ Xn - 1 Yn - 1 {\ Displaystyle x \ cdot y = x_ {0} y_ {0} \ oplus x_ {1} y_ {1} \ oplus \ cdots \ oplus x_ {n-1} y_ {n-1}}x \ cdot y = x_ {0} y_ {0} \ oplus x_ {1} y_ {1} \ oplus \ cdots \ oplus x _ {{n-1}} y _ {{n-1}} - сумма побитового произведения.

Наконец, мы исследуем вероятность измерения | 0⟩ ⊗ N {\ Displaystyle | 0 \ rangle ^ {\ otimes n}}| 0 \ rangle ^ {{\ otimes n}} ,

| 1 2 n ∑ x знак равно 0 2 n - 1 (- 1) f (x) | 2 {\ displaystyle {\ bigg |} {\ frac {1} {2 ^ {n}}} \ sum _ {x = 0} ^ {2 ^ {n} -1} (- 1) ^ {f (x)} {\ bigg |} ^ {2}}{\ bigg |} {\ frac {1} {2 ^ {n}}} \ sum _ {{x = 0}} ^ {{2 ^ {n} -1}} (- 1) ^ {{е (х)}} {\ bigg |} ^ {2}

, который оценивается как 1, если f (x) {\ displaystyle f (x)}f (x) является постоянным (конструктивное вмешательство ) и 0, если f (x) {\ displaystyle f (x)}f (x) сбалансировано (деструктивная интерференция ). Другими словами, окончательное измерение будет | 0⟩ ⊗ N {\ displaystyle | 0 \ rangle ^ {\ otimes n}}| 0 \ rangle ^ {{\ otimes n}} (т.е. все нули), если f (x) {\ displaystyle f (x)}f (x) является константой и приведет к некоторым другим состояниям, если f (x) {\ displaystyle f (x)}f (x) сбалансировано.

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

Алгоритм Дойча является частным случаем общего алгоритма Дойча – Йоже. Нам нужно проверить условие f (0) = f (1) {\ displaystyle f (0) = f (1)}f (0) = f (1) . Это эквивалентно проверке f (0) ⊕ f (1) {\ displaystyle f (0) \ oplus f (1)}f (0) \ oplus f (1) (где ⊕ {\ displaystyle \ oplus}\ oplus - сложение по модулю 2, которое также можно рассматривать как квантовый элемент XOR, реализованный как элемент Управляемое НЕ ), если ноль, то f {\ displaystyle f}f является постоянным, в противном случае f {\ displaystyle f}f не является постоянным.

Начнем с двухкубитного состояния | 0⟩ | 1⟩ {\ displaystyle | 0 \ rangle | 1 \ rangle}| 0 \ rangle | 1 \ rangle и применить преобразование Адамара к каждому кубиту. Это дает

1 2 (| 0⟩ + | 1⟩) (| 0⟩ - | 1⟩). {\ displaystyle {\ frac {1} {2}} (| 0 \ rangle + | 1 \ rangle) (| 0 \ rangle - | 1 \ rangle).}{\ frac {1} {2 }} (| 0 \ rangle + | 1 \ rangle) (| 0 \ rangle - | 1 \ rangle).

Нам дана квантовая реализация функции f {\ displaystyle f}f , который отображает | x⟩ | y⟩ {\ displaystyle | x \ rangle | y \ rangle}| x \ rangle | y \ rangle до | x⟩ | е (Икс) ⊕ Y⟩ {\ Displaystyle | х \ rangle | е (х) \ oplus y \ rangle}| x \ rangle | f (x) \ oplus y \ rangle . Применяя эту функцию к нашему текущему состоянию, мы получаем

1 2 (| 0⟩ (| f (0) ⊕ 0⟩ - | f (0) ⊕ 1⟩) + | 1⟩ (| f (1) ⊕ 0⟩ - | е (1) ⊕ 1⟩)) {\ displaystyle {\ frac {1} {2}} (| 0 \ rangle (| f (0) \ oplus 0 \ rangle - | f (0) \ oplus 1 \ rangle) + | 1 \ rangle (| f (1) \ oplus 0 \ rangle - | f (1) \ oplus 1 \ rangle))}{\ frac {1} {2} } (| 0 \ rangle (| f (0) \ oplus 0 \ rangle - | f (0) \ oplus 1 \ rangle) + | 1 \ rangle (| f (1) \ oplus 0 \ rangle - | f (1) \ oplus 1 \ rangle))
= 1 2 ((- 1) f (0) | 0⟩ (| 0⟩ - | 1⟩) + (- 1) е (1) | 1⟩ (| 0⟩ - | 1⟩)) {\ displaystyle = {\ frac {1} {2}} ((- 1) ^ {f (0)} | 0 \ rangle (| 0 \ rangle - | 1 \ rangle) + (- 1) ^ {f (1)} | 1 \ rangle (| 0 \ rangle - | 1 \ rangle)) }= {\ frac {1} {2}} ((- 1) ^ {{f (0)}} | 0 \ rangle (| 0 \ rangle - | 1 \ rangle) + (- 1) ^ {{f (1)}} | 1 \ rangle (| 0 \ rangle - | 1 \ rangle))
= (- 1) f (0) 1 2 (| 0⟩ + (- 1) f (0) ⊕ f (1) | 1⟩) (| 0⟩ - | 1⟩). {\ displaystyle = (- 1) ^ {е (0)} {\ frac {1} {2}} \ left (| 0 \ rangle + (- 1) ^ {f (0) \ oplus f (1)} | 1 \ rangle \ right) (| 0 \ rangle - | 1 \ rangle).}= (- 1) ^ {{f (0)}} {\ frac {1} {2} } \ left (| 0 \ rangle + (- 1) ^ {{f (0) \ oplus f (1)}} | 1 \ rangle \ right) (| 0 \ rangle - | 1 \ rangle).

Мы игнорируем последний бит и глобальную фазу и поэтому имеем состояние

1 2 (| 0⟩ + (- 1) f (0) ⊕ f (1) | 1⟩). {\ displaystyle {\ frac {1} {\ sqrt {2}}} (| 0 \ rangle + (- 1) ^ {f (0) \ oplus f (1)} | 1 \ rangle).}{\ displaystyle {\ frac {1} {\ sqrt {2}}} (| 0 \ rangle + (- 1) ^ {f (0) \ oplus f (1)} | 1 \ rangle).}

Применяя преобразование Адамара к этому состоянию, мы имеем

1 2 (| 0⟩ + | 1⟩ + (- 1) f (0) ⊕ f (1) | 0⟩ - (- 1) f (0) ⊕ f (1) | 1⟩) {\ displaystyle {\ frac {1} {2}} (| 0 \ rangle + | 1 \ rangle + (- 1) ^ {f (0) \ oplus f (1)} | 0 \ rangle - (- 1) ^ {f (0) \ oplus f (1)} | 1 \ rangle)}{\ frac {1} {2}} (| 0 \ rangle + | 1 \ rangle + (- 1) ^ {{f (0) \ oplus f (1)}} | 0 \ rangle - (- 1) ^ {{е (0) \ oplus f (1)}} | 1 \ rangle)
= 1 2 ((1 + (- 1) f (0) ⊕ f (1)) | 0⟩ + (1 - (- 1) f (0) ⊕ f (1)) | 1⟩). {\ displaystyle = {\ frac {1} {2}} ((1 + (- 1) ^ {f (0) \ oplus f (1)}) | 0 \ rangle + (1 - (- 1) ^ { е (0) \ oplus f (1)}) | 1 \ rangle).}= {\ frac {1} {2}} ( (1 + (- 1) ^ {{f (0) \ oplus f (1)}}) | 0 \ rangle + (1 - (- 1) ^ {{f (0) \ oplus f (1)}})) | 1 \ rangle).

f (0) ⊕ f (1) = 0 {\ displaystyle f (0) \ oplus f (1) = 0}f (0) \ oplus f (1) = 0 тогда и только тогда, когда мы измеряем ноль и f (0) ⊕ f (1) = 1 {\ displaystyle f (0) \ oplus f (1) = 1}f (0) \ oplus f (1) = 1 тогда и только тогда, когда мы измеряем единицу. Итак, мы с уверенностью знаем, является ли f (x) {\ displaystyle f (x)}f (x) постоянным или сбалансированным.

См. Также
Литература
Внешние ссылки
Последняя правка сделана 2021-05-17 03:29:26
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте