Используется алгоритм Гровера, среди прочего, искать нужный пункт в неупорядоченном списке элементов длины . Несмотря на то, что здесь есть много вопросов по этой теме, я все еще упускаю суть.
Поиск в списке, классический способ
Как правило, я бы разработать функцию поиска таким образом
,
Список длины : .
Требуемый элемент . Я должен получить . Каждая карта может быть закодирована с бит, список содержит элементов таким образом , мы должны бит для кодирования списка. В этом случае оракул будет реализовывать функцию:
Однако ввод алгоритма Гровера не является состоянием из кубитов.
(NB: изображение перетасованной колоды взято отсюда )
Гровер и его оракул
(Например. Некоторые источники здесь - графический объяснить) говорят о том , что вход алгоритма отличается: вход состояние берется из пространства поиска где - количество элементов списка. Каждое число соответствует позиции элемента в списке.
Ввод теперь представляет собой кубит-вектора , которое должно быть суперпозицией всех элементов в пространстве поиска .
Мы знаем
- соответствует ;
- соответствует ;
- соответствует ;
- соответствует к который является элементом разыскиваемый;
- и так далее...
В этом случае мы имеем
Построение оракула требует , чтобы мы знали , что находится в положении 5. Какой смысл выполнить алгоритм , если мы уже искали элемент для того , чтобы построить оракул?