Конструювання Oracle за алгоритмом Гровера


16

У «Квантових обчисленнях та квантовій інформації» Майка та Айка дуже детально пояснюється алгоритм Гровера. Однак у книзі та у всіх поясненнях, які я знайшов в Інтернеті щодо алгоритму Гровера, начебто не згадується про те, як побудований Oracle Grover, якщо ми вже не знаємо, в якому стані це шукаємо, перемагаючи мету алгоритм. Зокрема, моє запитання таке: враховуючи деякий f (x) такий, що для деякого значення x, f (x) = 1, але для всіх інших, f (x) = 0, як можна побудувати оракул, який отримає нас від наш початковий, довільний стан | x> | y> to | x> | y + f (x)>? Буде дуже вдячна якомога більше чітка деталь (можливо, приклад?). Якщо така конструкція для будь-якої довільної функції можлива за допомогою Адамара, Паулі чи інших стандартних квантових воріт,


"Здається, тут не згадується, як побудований Oracle Grover, якщо ми вже не знаємо, в якому саме стані ми шукаємо, перемагаючи призначення алгоритму." ... "Oracle Grover" - це проблема, яку потрібно вирішити. Ви не конструюєте це. Вам надають (доступ до Oracle) і просять провести обчислення, щоб розкрити значення. Якщо це допоможе, зробіть вигляд, що я будую оракул, а потім попросіть вас вирішити проблему. (Також зауважте, що читання / запис / підготовка бази даних з елементів займає більше часу, ніж запуск алгоритму Grover -time.)NN
Даніель Апон

2
Але що робити, якщо замість того, щоб дати нам оракул, нам дають деякий f (x)? Уявіть, що ми вирішуємо 3-SAT проблему і хочемо скористатися Grover's, щоб забезпечити прискорення рішення. Ми знаємо, про який йдеться у f (x) (положення правдивості 3-SAT), але не обов'язково знаємо, який бітовий рядок x дасть справжній результат при підключенні до 3-SAT. Чи не повинен бути спосіб побудувати оракул з функції 3-SAT, щоб знайти правильну бітову рядок? Якщо цього немає, і це, як ви пропонуєте, щось, що має надати хтось інший, алгоритм Гровера здається досить штучним, просто вправою, наданою вам.
Буде

Відповіді:


20

По суті, оракул - це лише реалізація присудка, який ви хочете шукати задовільне рішення.

Наприклад, припустимо, що у вас є 3-годинна проблема:

(¬x1 ∨ ¬x3 ∨ ¬x4) ∧
    (x2 ∨ x3 ∨ ¬x4) ∧
    (x1 ∨ ¬x2 ∨ x4) ∧
    (x1 ∨ x3 ∨ x4) ∧
    (¬x1 ∨ x2 ∨ ¬x3)

Або, у формі таблиці, у кожному рядку 3-застереження, x означає "ця змінна помилка", o означає "цю змінну правдиво", а пробіл означає "не в пункті":

1 2 3 4
-------
x   x x
  o o x
o x   o
x o x

Тепер зробіть схему, яка обчислює, чи є вхід рішенням, як це:

перевірка розчину

Тепер, щоб перетворити вашу схему в оракул, натисніть на вихідний біт із затвором Z і не обчислюйте будь-який створений вами сміття (тобто запустіть обчислювальну схему в зворотному порядку):

oracle схема

Це все, що там є. Обчисліть присудок, натисніть на результат Z, обчисліть присудок. Це оракул.

Повторіть етапи дифузії за допомогою кроків Oracle, і ви самі отримаєте пошук :

пошук гровер

... хоча вам, мабуть, слід вибрати приклад із меншою кількістю рішень, тому прогрес поступовий (замість того, щоб обертатись по площині старт-стан-рішення - більш ніж на 90 градусів за крок, як це є в моєму прикладі).


Дякую, це було надзвичайно корисно. Неймовірно зрозуміло, я відповів на все, що я запитав (і навіть використовував загальні квантові ворота!) Чи є якась причина, що ви вирішили змінити всі свої початкові кубіти на стан | 1>, перш ніж ставити їх в суперпозицію з воротами Адамара, а не просто ставити | 0 > державний кубіт через Адамардс (тобто чи є перевага цьому)? Крім того, яка операція є для ваших кроків дифузії? Схоже, керований X, але ви використовуєте | 1> 's або | 0>' в якості елементів керування?
Чи буде

(12|0-12|1)н

Фантастична відповідь, і дякую за посилання на algassert.com/quirk !
Frédéric Grosshans
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.