Алгоритм Бернштейна — Вазирани

Материал из testwiki
Перейти к навигации Перейти к поиску

Алгоритм Бернштейна — Вазирани (Шаблон:Lang-en) — квантовый алгоритм, решающий задачу нахождения n-битного числа (в иностранной литературе также употребляется термин скрытая строка[1]), скрытого в черном ящике. Предложен Итаном Бернштейном и Умешем Вазирани в 1993 году.Шаблон:Переход Данный алгоритм решает поставленную задачу значительно быстрее, чем это возможно в неквантовой постановке.Шаблон:Переход Алгоритм может применяться в базах данных, атаках на блочные шифры, тестах производительности для квантовых компьютеров,Шаблон:Переход был реализован на 5- и 16-кубитных квантовых компьютерах IBM.Шаблон:Переход

История

Алгоритм предложен профессором Калифорнийского университета в Беркли Шаблон:Не переведено и его студентом Итаном Бернштейном. При описании алгоритма современные источники, как правило, ссылаются на выступление Бернштейна и Вазирани[2] на Шаблон:Не переведено 5 в 1993 годуШаблон:Sfn. Алгоритм Бернштейна — Вазирани является расширенной версией алгоритма Дойча — Йожи, поскольку вместо определения принадлежности функции к определённому классу — сбалансированная или постоянная (то есть принимает либо значение 0, либо 1 при любых аргументах) — алгоритм находит «спрятанный» вектор, позволяющий однозначно определить значение функции в любой точке[3].

Алгоритм Бернштейна — Вазирани демонстрирует в решаемой им задаче зазор между классическими и квантовыми алгоритмами по наименьшему требуемому количеству запросов к оракулу (чёрному ящику). Даже если разрешить использование вероятностных алгоритмов (с заранее ограниченной вероятностью ошибки), решение классической задачи потребует O(n) обращений к оракулу, в то время как в квантовом алгоритме достаточно O(1) обращений к немуШаблон:Sfn.

Постановка задачи Бернштейна — Вазирани

Классическая задача

Рассмотрим оракул, преобразующий n-битное число в один бит, то есть f:{0,1}n→{0,1}.

Причём f(x)=a⋅x, где ⋅ — скалярное произведение вида: x⋅y=x1y1⊕x2y2⊕...⊕xnyn. Считаем, что один вызов функции f осуществляется за константное время.

Требуется найти a[1].

Квантовая задача

Постановка задачи в квантовой модели похожая, но доступ к оракулу в ней осуществляется не напрямую через функцию f, а через линейный оператор Uf, действующий на систему из n+1 кубита:

Uf=∑x∈{0,1}n,y∈{0,1}|x⟩⟨x|⊗|y⊕f(x)⟩⟨y|,

где |x⟩ — кет-вектор, соответствующий квантовому состоянию x, ⟨x| — бра-вектор, соответствующий квантовому состоянию x, ⊗ — произведение Кронекера, ⊕ — сложение по модулю 2.

Квантовым состояниям 0 и 1 соответствуют векторы |0⟩=(10) и |1⟩=(01). Вектор для совместного состояния x1x2…xn может быть представлен как произведение |x1x2…xn⟩=|x1⟩⊗|x2⟩⊗…⊗|xn⟩Шаблон:Sfn.

Аналогично классическому случаю, предполагается, что обращение к оракулу, вычисляющему результат применения оператора Uf к входящей системе из n+1 кубита, выполняется за константное время.

В квантовом случае, как и в классическом, предполагается, что f(x)=a⋅x, и требуется найти a[1].

Алгоритм

Классическая задача

В классическом случае при каждом вызове оракула возвращается один бит числа a, поэтому чтобы найти n-битное число a, нужно вызвать оракул n раз. Ниже приведён вариант n обращений к оракулу, позволяющих целиком восстановить a[1]:

f(1000...0n)=a1

f(0100...0n)=a2

⋮

f(0000...1n)=an

Количество обращений к оракулу в классическом случае равно O(n), где n — количество бит числа a. Несложными теоретико-информационными рассуждениями можно показать, что эта оценка не улучшаема даже в рамках класса BPP[1].

Квантовый алгоритм

В основу алгоритма положен n-кубитный оператор Адамара:

H⊗n=12n∑x,y∈{0,1}n(−1)x⋅y|y⟩⟨x|

А также тот факт, что применение оператора Uf к состоянию вида |x⟩|−⟩=|x⟩⊗|−⟩, где |−⟩=|0⟩−|1⟩2 даёт в результате величину Uf(|x⟩|−⟩)=(−1)f(x)|x⟩|−⟩[1].

По шагам работа алгоритма может быть представлена следующим образомШаблон:Sfn:

  1. На первом шаге оператор Адамара H⊗(n+1) применяется к (n+1)-кубитному состоянию |0⟩n|1⟩, состоящего из основного состояния |0⟩n и Шаблон:Не переведено |1⟩: Шаблон:Pb |0⟩n|1⟩→H⊗(n+1)12n∑x∈{0,1}n|x⟩|−⟩;
  2. Затем к результату предыдущего шага применяется оператор Uf: Шаблон:Pb 12n∑x∈{0,1}n|x⟩|−⟩→Uf12n∑x∈{0,1}n(−1)f(x)|x⟩|−⟩;
  3. После чего к первым n кубитам результата применяется H⊗(n), что, с учётом того, что f(x)=a⋅x, даёт[3]: Шаблон:Pb 12n∑x∈{0,1}n(−1)a⋅x|x⟩|−⟩→H⊗(n)12n∑x,y∈{0,1}n(−1)(a⋅x)⊕(x⋅y)|y⟩|−⟩∼|a⟩|−⟩.

В результате измерение входного регистра даст значение |a⟩[1]. Таким образом, в квантовой постановке задачи достаточно O(1) обращений к оракулу. В общем случае построение и использование оракула требует O(4n) логических элементов, но это не учитывается при анализе алгоритма в данной модели, так как значимым для неё является только число обращений к оракулу[1]. Алгоритм в таком виде был реализован на 5- и 16-кубитных компьютерах IBM[1], также возможно собрать оптическую cистему, реализующую алгоритм[4].

Реализация алгоритма на компьютерах IBM

В любой практической реализации алгоритма Бернштейна — Вазирани основную сложность составляет создание оракула, так как построение и использование оракула требует O(4n) логических элемента.[1]

Кроме сложности построения оракула, практической реализации сопутствуют проблемы с точностью. Тестирование системы проводилось на 1-, 2- и 3-битных строках, на которых симулятор Шаблон:Не переведено выдавал правильный ответ со 100 % точностью. Затем было проведено тестирование 1- и 2-битных строк на 5-кубитной машине ibmqx4 и 16-кубитной ibmqx5, где были зафиксированы ошибки вычислений и сильное отклонение от ожидаемого результата[1].

Практическое применение

Алгоритм Бернштейна — Вазирани может применяться:

  1. В базах данных[5]. С помощью алгоритма доступ к нужным данным теоретически можно получить значительно быстрее, чем в классическом случае.
  2. В атаке на блочный шифр[6]. Алгоритм Бернштейна — Вазирани предоставляет несколько новых, более совершенных, чем в классическом случае, способов атаки на блочный шифр.
  3. В тесте производительности для квантовых компьютеров[7]. Алгоритм используется в качестве теста производительности для 11-кубитного квантового компьютера.

Примечания

Шаблон:Примечания

Ссылки

Шаблон:Квантовая информатика Шаблон:Добротная статья

  1. ↑ 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 Ошибка цитирования: Неверный тег <ref>; для сносок ":0" не указан текст
  2. ↑ Шаблон:Статья
  3. ↑ 3,0 3,1 Шаблон:Статья
  4. ↑ Шаблон:Статья
  5. ↑ Шаблон:Статья
  6. ↑ Шаблон:Статья
  7. ↑ Шаблон:Публикация