Opis algorytmu Grovera
W tej sekcji opiszemy algorytm Grovera. Zaczniemy od omówienia bramek zapytań fazowych i sposobu ich budowy, a następnie przejdziemy do opisu samego algorytmu Grovera. Na koniec krótko omówimy, jak naturalnie stosuje się ten algorytm do przeszukiwania.
Bramki zapytań fazowych
Algorytm Grovera korzysta z operacji znanych jako bramki zapytań fazowych. W odróżnieniu od zwykłej bramki zapytania zdefiniowanej dla danej funkcji w standardowy sposób opisany wcześniej, bramka zapytania fazowego dla funkcji jest zdefiniowana jako
dla każdego ciągu
Operację można zaimplementować za pomocą jednej bramki zapytania jak sugeruje poniższy diagram:
Ta implementacja korzysta ze zjawiska phase kickback i wymaga udostępnienia jednego roboczego qubitu, zainicjalizowanego do stanu . Ten qubit pozostaje w stanie po zakończeniu implementacji i może być ponownie użyty (na przykład do implementacji kolejnych bramek ) lub po prostu odrzucony.
Oprócz operacji będziemy również używać bramki zapytania fazowego dla -bitowej funkcji OR, zdefiniowanej dla każdego ciągu w następujący sposób.
Konkretnie, bramka zapytania fazowego dla -bitowej funkcji OR działa następująco:
Dla jasności: tak właśnie działa na standardowych stanach bazowych; jej zachowanie na dowolnych stanach wynika z tej definicji przez liniowość.
Operację można zaimplementować jako Circuit kwantowy, zaczynając od układu logicznego dla funkcji OR, następnie konstruując operację (czyli standardową bramkę zapytania dla -bitowej funkcji OR) zgodnie z procedurą opisaną w lekcji Podstawy algorytmiczne obliczeń kwantowych, a na końcu operację z wykorzystaniem zjawiska phase kickback opisanego powyżej. Zauważ, że operacja nie zależy od funkcji i dlatego można ją zaimplementować za pomocą Circuitu kwantowego bez żadnych bramek zapytań.
Opis algorytmu
Teraz, gdy mamy już obie operacje i możemy opisać algorytm Grovera.
Algorytm odwołuje się do liczby która jest liczbą iteracji wykonywanych przez algorytm (a zatem liczbą zapytań do funkcji których wymaga). Liczba nie jest określona przez algorytm Grovera w opisywanej przez nas wersji — omówimy później w tej lekcji, jak można ją wybrać.
Operacja iterowana w kroku 2 będzie przez resztę tej lekcji nazywana operacją Grovera. Oto reprezentacja Circuitu kwantowego operacji Grovera dla
Na tym diagramie operacja jest przedstawiona jako większa niż co stanowi nieformalną wizualną wskazówkę sugerującą, że prawdopodobnie jest ona kosztowniejsza. W szczególności, gdy pracujemy w modelu zapytań, wymaga jednego zapytania, natomiast nie wymaga żadnych. Jeśli zamiast tego dysponujemy układem logicznym dla funkcji i konwertujemy go na obwód kwantowy dla możemy zasadnie oczekiwać, że otrzymany Circuit kwantowy będzie większy i bardziej skomplikowany niż Circuit dla
Poniżej przedstawiono diagram Circuitu kwantowego dla całego algorytmu przy i Dla większych wartości wystarczy wstawić kolejne instancje operacji Grovera bezpośrednio przed pomiarami.
Zastosowanie do przeszukiwania
Algorytm Grovera można zastosować do problemu przeszukiwania w następujący sposób:
- Wybierz liczbę w kroku 2. (Omówiono to w dalszej części lekcji.)
- Uruchom algorytm Grovera dla funkcji używając wybranej wartości aby otrzymać ciąg
- Zapytaj funkcję o ciąg aby sprawdzić, czy jest to prawidłowe rozwiązanie:
- Jeśli to znaleźliśmy rozwiązanie i możemy zatrzymać się oraz zwrócić
- W przeciwnym razie, jeśli możemy albo ponownie uruchomić procedurę, być może z innym wyborem albo zdecydować się poddać i zwrócić „brak rozwiązania".
Kiedy przeanalizujemy działanie algorytmu Grovera, zobaczymy, że przyjmując uzyskujemy rozwiązanie naszego problemu przeszukiwania (jeśli istnieje) z dużym prawdopodobieństwem.