Використовується алгоритм Гровера, серед іншого, шукати потрібний пункт в неврегульованих списку елементів довжини . Незважаючи на те, що тут є багато питань щодо цієї теми, я все одно пропускаю суть.
Пошук у списку, класичним способом
Як правило, я б розробити функцію пошуку таким способом
Список довжини дорівнює .
Шуканий елемент - . Я повинен отримати . Кожна карта може бути закодована біт, у списку є елементів, тому для кодування списку нам потрібно біт. У цьому випадку oracle реалізує функцію:
Однак вхід алгоритму Гровера - це не стан кубітів.
(Примітка. Зображення перетасованої колоди зроблено звідси )
Гровер та його оракул
(Наприклад. Деякі джерела тут - графічний пояснити) говорять про те , що вхід алгоритму відрізняється: вхід стан береться з простору пошуку де - кількість елементів списку. Кожне число відповідає позиції елемента в списку.
Вхід тепер кубітний вектор , яке повинно бути суперпозицією всіх елементів в просторі пошуку .
Ми знаємо
- відповідає ;
- відповідає ;
- Відповідає ;
- відповідає до який є елементом розшукуваний;
- і так далі...
У цьому випадку ми маємо
Побудова оракула вимагає від нас знати, що знаходиться в положенні 5. Який сенс виконати алгоритм, якщо ми вже шукали елемент для побудови оракула?