Nie wiem, co wprowadzić do Oracle w algorytmie Grovera.
Czy oprócz superpozycjonowanych stanów kwantowych nie musimy wprowadzać tego, czego szukamy i gdzie znaleźć to, czego szukamy?
Załóżmy na przykład, że mamy listę nazwisk osób {„Alice”, „Bob”, „Corey”, „Dio”} i chcemy sprawdzić, czy na liście znajduje się „Dio”. Następnie Oracle powinien przyjąć jako dane wejściowe i wyjściowe . W pewnym sensie to rozumiem.
Ale czy nie musimy także wpisywać słowa „Dio” i listy {„Alice”, „Bob”, „Corey”, „Dio”} do Oracle? W przeciwnym razie, w jaki sposób Oracle może zwrócić dane wyjściowe? Czy nie jest to wyraźnie wspomniane, ponieważ Oracle to czarna skrzynka i nie musimy myśleć o tym, jak ją wdrożyć?
Rozumiem co do Oracle,
- Oracle ma możliwość rozpoznania, czy słowo „Dio” znajduje się na liście.
- Aby to zrobić, Oracle przyjmuje jako dane wejściowe superpozycjonowane stany kwantowe, przy czym każdy stan kwantowy reprezentuje indeks listy.
- Tak więc wpisanie do Oracle oznacza, sprawdź, czy słowo „Dio” znajduje się w indeksie 0 listy i zwróć jeśli tak, i zwróć przeciwnym razie.
- W naszym przypadku Oracle zwraca .
- Ale co z listą i słowem?
Odpowiedzi:
Chociaż popularne wyjaśnienia algorytmu Grovera mówią o przeszukiwaniu listy, w rzeczywistości używa się jej do przeszukiwania możliwych wejść 0..N-1 do funkcji. Koszt algorytmu wynosi gdzie to liczba danych wejściowych, które chcesz przeszukać, a to koszt oceny funkcji. Jeśli chcesz, aby ta funkcja przeszukiwała listę, musisz zakodować listę w funkcji.O (N.--√⋅ F.) N. fa
Twarde kodowanie funkcji w celu użycia listy elementów jest zwykle bardzo złym pomysłem, ponieważ zwykle powoduje, że ma wartość . Co oznaczałoby całkowity koszt algorytmu Grovera . Jaki rodzaj klęsk głównym celem, ponieważ .N. fa O ( N) O (N.--√⋅ F.) = O (N.--√⋅ N.) = O (N.1.5) N.1.5> N
źródło