Algorytm Simona
Algorytm Simona to kwantowy algorytm zapytań rozwiązujący problem znany jako problem Simona. Jest to problem z obietnicą o podobnym charakterze do problemów Deutscha-Jozsy i Bernsteina-Vaziranego, jednak różniący się szczegółami.
Algorytm Simona jest istotny, ponieważ zapewnia wykładniczą przewagę algorytmów kwantowych nad klasycznymi (w tym probabilistycznymi), a zastosowana w nim technika zainspirowała Petera Shora do odkrycia wydajnego algorytmu kwantowego dla rozkładu liczb na czynniki pierwsze.
Simon's problem
Funkcja wejściowa dla problemu Simona ma postać
dla dodatnich liczb całkowitych i Moglibyśmy dla prostoty ograniczyć się do przypadku ale niewiele zyskujemy na tym założeniu — algorytm Simona i jego analiza są zasadniczo takie same w obu przypadkach.
Za chwilę dokładniej przeanalizujemy obietnicę, żeby lepiej zrozumieć, co mówi — najpierw jednak zaznaczmy wyraźnie, że wymaga ona od bardzo szczególnej struktury, więc większość funkcji tej obietnicy nie spełni. Warto też przyznać, że ten problem nie ma na celu praktycznego zastosowania. Jest to raczej nieco sztuczny problem, skrojony na miarę tak, by był łatwy dla komputerów kwantowych i trudny dla klasycznych.
Istnieją dwa główne przypadki: pierwszy to taki, w którym jest ciągiem samych zer a drugi — gdy nie jest ciągiem samych zer.
-
Przypadek 1: Jeśli jest ciągiem samych zer, możemy uprościć warunek „wtedy i tylko wtedy" w obietnicy do postaci Jest to równoważne temu, że jest funkcją różnowartościową.
-
Przypadek 2: Jeśli nie jest ciągiem samych zer, to spełnienie obietnicy dla tego ciągu oznacza, że jest dwa-do-jednego (ang. two-to-one), tzn. dla każdego możliwego ciągu wyjściowego istnieją dokładnie dwa ciągi wejściowe, które powodują, że zwraca ten ciąg. Co więcej, te dwa ciągi wejściowe muszą mieć postać i dla pewnego ciągu
Ważne jest, by zauważyć, że jeśli obietnica jest spełniona, to może istnieć tylko jeden ciąg który działa — zatem dla funkcji spełniających obietnicę zawsze istnieje dokładnie jedna poprawna odpowiedź.
Oto przykład funkcji postaci spełniającej obietnicę dla ciągu
Istnieje różnych ciągów wejściowych i różne ciągi wyjściowe, z których każdy pojawia się dwukrotnie — mamy więc funkcję dwa-do-jednego. Co więcej, dla dowolnych dwóch różnych ciągów wejściowych dających ten sam ciąg wyjściowy, bitowy XOR tych dwóch ciągów wejściowych jest równy co jest równoważne temu, że każdy z nich jest równy drugiemu po XOR-owaniu z
Zauważmy, że jedyne, co ma znaczenie w przypadku faktycznych ciągów wyjściowych, to czy są one takie same, czy różne dla różnych wyborów ciągów wejściowych. Na przykład w powyższym przykładzie cztery ciągi i pojawiają się jako wyjścia Moglibyśmy zastąpić te cztery ciągi innymi, o ile byłyby wszystkie różne, a poprawne rozwiązanie nie uległoby zmianie.
Algorithm description
Oto diagram kwantowego Circuit reprezentującego algorytm Simona.
Dla jasności: na górze znajduje się qubitów, na które działają Gate'y Hadamarda, a na dole qubitów wchodzących bezpośrednio do bramki zapytania (query gate). Wygląda to bardzo podobnie do algorytmów omawianych już w tej lekcji, ale tym razem nie ma phase kickback; dolne qubitów wchodzi do bramki zapytania w stanie
Rozwiązanie problemu Simona przy użyciu tego Circuit wymaga w praktyce kilku niezależnych jego uruchomień, a następnie etapu klasycznego przetwarzania końcowego, który zostanie opisany później, po przeanalizowaniu zachowania Circuit.
Analiza
Analiza algorytmu Simona przebiega początkowo podobnie jak w przypadku algorytmu Deutscha-Jozsy. Po wykonaniu pierwszej warstwy Hadamard gates na górnych qubitach stan przyjmuje postać