В Алгоритм Бернштейна – Вазирани, который решает Проблема Бернштейна – Вазирани. это квантовый алгоритм изобретен Итан Бернштейн и Умеш Вазирани в 1992 г.[1] Это ограниченная версия Алгоритм Дойча – Йожи где вместо того, чтобы различать два разных класса функций, он пытается изучить строку, закодированную в функции.[2] Алгоритм Бернштейна – Вазирани был разработан для доказательства разделение оракула между классы сложности BQP и BPP.[1]
Постановка задачи
Учитывая оракул который реализует функцию
в котором
является обещал быть скалярное произведение между
и секретная строка
по модулю 2,
, найти
.
Алгоритм
Как правило, наиболее эффективный метод поиска секретной строки - это вычисление функции
раз, когда
,
[2]
![{ displaystyle { begin {align} f (1000 cdots 0_ {n}) & = s_ {1} f (0100 cdots 0_ {n}) & = s_ {2} f (0010 cdots 0_ {n}) & = s_ {3} & , , , vdots f (0000 cdots 1_ {n}) & = s_ {n} конец {выровнено}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a5cd6bf701e0b9076aa011de634746a448f4c14d)
В отличие от классического решения, которое требует как минимум
запросы функции для поиска
, требуется только один запрос с использованием квантовых вычислений. Квантовый алгоритм выглядит следующим образом: [2]
Применить Преобразование Адамара к
состояние кубита
получить
![{ displaystyle { frac {1} { sqrt {2 ^ {n}}}} sum _ {x = 0} ^ {2 ^ {n} -1} | x rangle.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e97fee904c19e4fea87ec50004d2ae85626963f8)
Далее применяем оракул
который преобразует
. Это можно смоделировать с помощью стандартного оракула, преобразующего
применив этот оракул к
. (
обозначает сложение по модулю два.) Это преобразует суперпозицию в
![{ displaystyle { frac {1} { sqrt {2 ^ {n}}}} sum _ {x = 0} ^ {2 ^ {n} -1} (- 1) ^ {f (x)} | x rangle.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bff660e62e6a060c9f1a275fc8bc8c34a12264fe)
К каждому кубиту применяется другое преобразование Адамара, благодаря чему для кубитов, где
, его состояние конвертируется из
к
и для кубитов, где
, его состояние конвертируется из
к
. Чтобы получить
, измерение в стандартная основа (
) выполняется на кубитах.
Графически алгоритм может быть представлен следующей диаграммой, где
обозначает преобразование Адамара на
кубиты:
![{ displaystyle | 0 rangle ^ {n} xrightarrow {H ^ { otimes n}} { frac {1} { sqrt {2 ^ {n}}}} sum _ {x in {0 , 1 } ^ {n}} | x rangle xrightarrow {U_ {f}} { frac {1} { sqrt {2 ^ {n}}}} sum _ {x in {0, 1 } ^ {n}} (- 1) ^ {f (x)} | x rangle xrightarrow {H ^ { otimes n}} { frac {1} {2 ^ {n}}} sum _ {x, y in {0,1 } ^ {n}} (- 1) ^ {f (x) + x cdot y} | y rangle = | s rangle}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8fefd5d14347b32f33a83c32e64fc10b4334b168)
Причина, по которой последнее состояние
потому что для конкретного
,
![{ displaystyle { frac {1} {2 ^ {n}}} sum _ {x in {0,1 } ^ {n}} (- 1) ^ {f (x) + x cdot y} = { frac {1} {2 ^ {n}}} sum _ {x in {0,1 } ^ {n}} (- 1) ^ {x cdot s + x cdot y} = { frac {1} {2 ^ {n}}} sum _ {x in {0,1 } ^ {n}} (- 1) ^ {x cdot (s oplus y )} = 1 { text {if}} s oplus y = { vec {0}}, , 0 { text {else}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/453b23dc62c24321e6cc8150618fec2f966c1692)
С
верно только когда
, это означает, что единственная ненулевая амплитуда находится на
. Итак, измерение выходного сигнала схемы в вычислительной базе дает секретную строку
.
Смотрите также
Рекомендации