Як реалізується оракул у алгоритмі пошуку Гровера?


27

Алгоритм пошуку Гровера забезпечує чітке квадратичне прискорення для несортованого пошуку в базі даних. Алгоритм, як правило, виражається наступним квантовим контуром:

У більшості представлень вирішальною частиною протоколу є "оракул-ворота" Uω , який "магічно" виконує операцію |x(1)f(x)|x . Однак часто залишається невимовленим, наскільки складно було б реалізувати такі ворота. Дійсно, може здатися, що таке використання «оракула» - це лише спосіб підмітати труднощі під килимом.

Як ми можемо знати, чи справді така оральна операція реальна? І якщо так, то яка її складність (наприклад, щодо складності розкладання воріт)?


5
Це теж я задумався. Наприклад, в цьому експерименті вони твердо переводять розчин в оракул, який на смак мені схожий на обман ...
М. Стерн

Ще одна чудова відповідь на це питання надана у цій відповіді на CS Theory SE.
glS

Відповіді:


20

Функція f - просто довільна булева функція бітового рядка: f:{0,1}n{0,1} . Для застосунків для розбиття криптографії, таких як [1] , [2] або [3] , це насправді не "пошук бази даних", який потребував би якимось чином зберігати всю базу даних як квантовий контур, а скоріше така функція, як

x{1,if SHA-256(x)=y;0,otherwise,

для фіксованого y , який не має структури, ми можемо використовувати для класичного пошуку, на відміну від, скажімо, функції

x{1,if 2xy(mod220481942289),0,otherwise,

яка має структуру, яку можна експлуатувати для швидшого перетворення її навіть на класичному комп'ютері.

На питання про конкретну вартість взагалі не можна відповісти, оскільки f може бути будь-яким ланцюгом - це лише питання виведення квантової схеми з класичної схеми . Але зазвичай, як у наведеному вище прикладі, функція f дуже дешево оцінити на класичному комп'ютері, тому вона не повинна створювати особливого тягаря для квантового комп'ютера, для якого все інше про алгоритм Гровера знаходиться у вашому бюджеті.

Єдиною загальною вартістю поверх f є додаткові умовні НЕ ворота

C:|a|b|a|ab
де є XOR, і додатковий допоміжний кубіт для нього. Зокрема, якщо у нас є схема
F:|x|a|junk|x|af(x)|junk
побудований з C і ланцюга для f , тоді, якщо ми застосуємо його до |x разом з допоміжним кубіт спочатку в стані |=H|1=(1/2)(|0|1)деHє воротами Адамара, то отримаємо

F|x||junk=12(F|x|0|junkF|x|1|junk)=12(|x|f(x)|junk|x|1f(x)|junk).

Якщо f(x)=0 то 1f(x)=1 , то, спростивши, отримаємо

F|x||junk=|x||junk,
тоді як якщо f(x)=1 то 1f(x)=0 , то
F|x||junk=|x||junk,
а значить загалом
F|x||junk=(1)f(x)|x||junk.


5

Ну, в оригінальній статті Гровера, "Квантова механіка допомагає шукати голку в копиці сіна", чітко зазначено, що передбачається, що C (S) можна оцінювати за постійний час. Пошук Гровера стосується не можливості реалізації, а поліноміального скорочення складності запиту (скільки разів ви звертаєтесь до оракула, як класична база даних)

Насправді концепція оракула в обчислювальній техніці була запропонована Аланом Тьюрінгом для опису конструкцій, для яких опис UTM може бути неможливим (Вікіпедія). Він знаходиться в якому - то сенсі чарівно.

Але звичайно, повертаючись до вашого питання, як ми тоді фактично складемо схему пошуку (або будь-який оракулярний) алгоритм пошуку Гровера? Чи потрібно нам заздалегідь знати відповідь, щоб шукати результат? Ну, в якомусь сенсі вам потрібно. Саме це намагається працювати над розумними вдосконаленнями пошуку Grover, таким чином, нам не потрібно знати точну відповідь заздалегідь, а деякі її властивості. Дозвольте проілюструвати на прикладі.

Для проблеми розпізнавання шаблонів за допомогою пошуку Гровера, якщо у мене є 4 шаблони на 2 кубіти (00, 01, 10, 11) і я хочу позначити та посилити 11, діагональ мого оракула унітарна повинна бути такою (1,1,1 , -1) подбати про зсув фази пі для рішення. Отже, для цього простого втілення, для будівництва унітарного, потрібно знати заздалегідь повну відповідь.

Розумне поліпшення завершення візерунка, якщо воно подано у статті "Квантове узгодження зразків" Матеаса та Омара. По суті, він конструює стільки фіксованих оракул, скільки є алфавітів у наборі. Отже, для нашого двійкового рядка буде oracle, який позначає всі 1, і інший, який позначає всі 0. Оракули викликаються умовно на основі того, що я хочу шукати. Якщо я хочу шукати 11, я викликаю oracle 1 на LSqubit, а Oracle 1 знову на MSqubit. До першого оракула я б посилив стани (01, 11), тобто стани з LSQ як 1, а у другому дзвінку він посилиться (10, 11). Отже, як бачите, 11 - це єдиний стан, який посилюється вдвічі, що закінчується більшою ймовірністю вимірювання. Хоча складений квантовий контур змінився б, залежно від того, яка вхідна модель пошуку, опис квантового алгоритму на високому рівні залишається тим самим. Ви можете розглядати оракули як виклики функцій на основі випадку перемикання набору алфавітів, викликаного для кожного символу в рядку пошуку.


Тож якщо ви повинні знати ω конструювати Uωякий сенс? Якщо ні, то мені незрозуміло, як реалізувати Uω для невідомого ω! Я розглянув кілька реалізацій на IBM, але вони припускають, що знаютьω!
користувач185597
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.