Algorytm faktoryzacji Petera Shora dla komputera kwantowego • Peter Shor (ur. 14 sierpnia 1959 roku w USA • Matematyk oraz informatyk teoretyk • Autor kwantowego Algorytmu Shora • Pracuje w AT&T Bell Laboratories w Murray Hill w stanie New Jersery • Nagrody za algorytm w 1998 (Nevalinny), 1999 ( Nagroda Gödla). Kwantowy algorytm Shora – algorytm umożliwiający rozkład na czynniki pierwsze liczby naturalnej N w czasie O log N 2 log log n i pamięci O log N , przy wykorzystaniu komputera kwantowego. Algorytm ten stanowi teoretyczne zagrożenie dla powszechnie używanego w internecie kryptosystemu RSA. Klucz publiczny w RSA jest iloczynem dwóch dużych liczb pierwszych. Możliwość efektywnego odtworzenia tych liczb na podstawie klucza publicznego pozwalałaby poznać klucz prywatny i tym samym złamać cały szyfr. Najlepszy algorytm na klasyczny komputer ma złożoność obliczeniową rzędu 1 2 O exp c log n 3 log log n 3 Jak większość algorytmów kwantowych, algorytm Shora jest algorytmem probabilistycznym: zwraca poprawną odpowiedź jedynie z pewnym prawdopodobieństwem. Ponieważ jednak odpowiedź może być szybko sprawdzona, powtarzanie algorytmu umożliwia uzyskanie poprawnej odpowiedzi w sposób efektywny z dowolnie dużym prawdopodobieństwem. Algorytm ten opublikował Peter Shor w 1994 roku. W 2001 roku grupa informatyków z firmy IBM i Uniwersytetu Stanford zademonstrowała jego działanie na 7-kubitowym komputerze kwantowym opartym o jądrowy rezonans magnetyczny. Dokonano wtedy rozkładu liczby 15 = 3* 5. Do tej pory jest to największe znane obliczenie kwantowe. Zamiast od razu podać algorytm na faktoryzację n, p odamy najpierw kwantowy algorytm znajdujący rząd elementu x w grupie multiplikatywnej; czyli najmniejszą taką liczbę całkowitą r, że r x ≡1 . mod n Wiadomo,że jeśli zastosuje się losowość to faktoryzacja może być zredukowana do znalezienia rzędu elementu. By znaleźć dzielnik liczby nieparzystej n, znając metodę obliczania rzędur r elemetnu x, wybierz losowo x , znajdź jego rząd r, oraz oblicz gcd x 2 −1, n. Tutaj gcd(a,b) jest największym wspólnym dzielnikiem a oraz b. Do obliczenia gcd wykorzystuje się algorytm Euklidesa. Ponieważr r r x 2 1 x 2 1=x r−1≡0mod n , gcd x 2 −1, n jest trywialnym dzielnikiem n wtedy gdy r jest nieparzyste lub r 2 x ≡−1mod n Korzystając z powyższego kryterium można pokazać, że ta procedura 1 działa poprawnie z prawdopodobieństwem, 1− k −1 2 gdzie k jest liczbą różnych nieparzystych dzielników liczby n. Opiszmy teraz algorytm znajdujący rząd elementu x (mod n) na komputerze kwantowym.. Algorytm ten będzie korzystać z dwóch kwantowych rejestrów, które będą przechowywały całkowite liczby reprezentowane binarnie. Cały algorytm składa się z następujących dwóch części: a) Część klasyczna – wykonywana na klasycznym komputerze b) Część kwantowa: znajdowanie okresu funkcji Część klasyczna Część Kwantowa – znajdowanie okresu funkcji Kroki Algorytmu Shora 1. Stwierdź czy n jest liczbą pierwszą, liczba parzysta, lub potęga liczby pierwszej. Jeśli jest to nie użyjemy algorytmu Shora. Istnieją efektywna klasyczne stwierdzające czy liczba n należy do jednej z powyższych grup, oraz dają rozkład liczby na czynniki. Ten krok może być przygotowany na klasycznym komputerze. 2. Weź liczbę q, która jest potęgą dwójki tak, że n2 q2n 2 Ten krok może być wykonany na klasycznym komputerze 3. Weź losową liczbę x , która jest względnie pierwsza z n. (to znaczy największy wspólny dzielnik tych liczb jest równy 1. Są klasyczne metody wybierające taki x. Ten krok także może być wykonany na klasycznym komputerze. 4. Stwórz kwantowy rejestr oraz podziel go na dwa zbiory, rejestr pierwszy oraz rejestr drugi. Następnie stan naszego komputera może być odczytany przez: left|reg1,reg2>. Rejestr pierwszy musi posiadać wystarczająco dużo kubitów by reprezentować liczbę tak dużą jak q-1. Rejestr drugi musi posiadać tak dużo kubitów by reprezentować liczbę tak dużą jak n-1. 5. Załaduj rejestr pierwszy wyważoną superpozycją wszystkich liczb od 0 do q-1. Załaduj rejestr drugi stanem 0. Ta operacja powinna być wykonana przez komputer kwantowy. Cały stan kwantowej pamięci rejestr w tym punkcie wynosi 1 q 1 ∑ | a ,0 > a q 0 − = 6. Zastosuj transformację x a mod n dla każdej liczby zapisanej w rejestrze pierwszym oraz zapisz wynik w rejestrze drugim. W wyniku kwantowej równoległowości to zajmie tylko jeden krok, kwantowy komputer obliczy tylko x | a > mod n , gdzie |a> jest superpozycją stanów stworzonych w kroku 5. Stan rejestru pamięci kwantowej w tym punkcie będzie wynosił: 1 q1 a ∑ | a , x mod n > q a 0 − = 7. Zmierzmy rejestr drugi, oraz zaobserwujmy pewne wartości k. x a mod n= k 1 ∑ |a ',k > Stan kwantowej pamięci po tym kroku wynosić będzie: a A∥ ' A ∥ a Gdzie A jest zbiorem takich a, że x mod n= k oraz ||A|| jest liczbą elementów zbioru A 8. Oblicz dyskretną transformatę Fouriera na rejestrze pierwszym. Dyskretna transformata Fouriera zastosowana do stanu |a> zmienia go w następującym znaczeniu: 1 q1 2пiac q | a > = ∑ | c >∗e q c 0 Po transformacie nasz rejestr będzie w stanie ∈ − / = 1 ∑ A ∥ ∥ a '∈ A 1 q q−1 ∑ | c , k >∗e 2пia ' c/ q c=0 9.Zmierz stan rejestru pierwszego, nazwijmy tą wartość m, m z bardzo dużym prawdopodobieństwem będzie wielokrotnością q/r, gdzie r jest szukanym okresem. 10. Weź wartość m, następnie na klasycznym komputerze wykonaj parę obliczeń, które wyliczają r znając m oraz q. Jest wiele możliwości wykonania tych obliczeń, są one złożone 11. Jak tylko otrzymałeś r, dzielnik n może być wyznaczony przez gcd x r 2 1, n oraz gcd x r 2 −1, n / / Jeśli znalazłeś rozkład na czynniki liczby n to STOP, jeśli nie to wróć do kroku 4. Algorytm Shora może zawieść z wielu powodów, na przykład dyskretna transformata Fouriera może być zmierzona jako 0 w kroku 9, wykonująć obliczenia w punkcie 10. Innym razem algorytm może znaleźć rozkład jako 1 i n, który jest poprawy lecz bezużyteczny. Analiza algorytmu – część klasyczna Mamy daną grupę skończoną ( z mnożeniem modulo N) Każdy element a tej grupy ma jakiś skończony rząd r. Jeśli potrafimy obliczyć r i jest r r r r ono parzyste to: r 2 2 2 2 a −1= a −1 ⋅ a 1 ≡0 mod N ⇒ N ∣ a −1 a 1 r Skoro r jest najmniejszą liczbą taką że r a ≡1 to N nie może dzielić r 2 a 2 −1 Jeśli N nie dzieli również a 1 to N musi mieć nietrywialny wspólny dzielnik z obiema powyższymi liczbami. Otrzymujemy w ten sposób jakąś faktoryzację N. Jeśli N jest iloczynem dwóch liczb pierwszych, jest to jego jedyna faktoryzacja. Część kwantowa Algorytm znajdowania okresu funkcji bazuje na zdolności komputera kwantowego do jednoczesnych obliczeń na wielu stanach. Obliczamy wartość funkcji jednocześnie dla wszystkich wartości x, uzyskując superpozycję wszystkich wartości. Fizyka kwantowa nie umożliwia nam jednak bezpośredniego odczytania tych informacji. Każdy pomiar niszczy superpozycję, pozwalając nam odczytać tylko jedną z wartości. Zamiast odczytywać te wartości, dokonujemy transformacji Fouriera – która zamienia wartości funkcji na wartości jej okresów. Późniejszy odczyt daje z dużym prawdopodobieństwem wartość bliską jakiemuś okresowi funkcji. Część kwantowa (cd) Do wykonania kwantowego algorytmu niezbędna jest kwantowa implementacja trzech operacji: 1. Stworzenia superpozycji stanów. Można tego łatwo dokonać aplikując bramki Hadamarda (opis na jednym z kolejnych slajdów) do wszystkich kubitów w rejestrze. 2. Funkcji f jako funkcji kwantowej. Używany do tego jest algorytm szybkiego potęgowania, w wersji modulo N. Należy zauważyć że ten krok jest najtrudniejszy w implementacji, i wymaga dodatkowych kubitów i największej ilości kwantowych bramek logicznych. 3. Odwrotnej kwantowej transformacji Fouriera. Używając kontrolowanych bramek obrotu i bramek Hadamarda Shor 2 zaprojektował układ który realizuje to przy użyciu O log N bramek. Część kwantowa (cd) Po zastosowaniu tych przekształceń, pomiar stanu rejestru da przybliżoną wartość okresu r. Przykładowo, załóżmy dla uproszczenia że istnieje takie y że yr/N jest całkowite. Wtedy prawdopodobieństwo uzyskania dobrego y jest równe 1. Aby to pokazać wystarczy zauważyć że exp( − 2πibyr / N) = 1dla dowolnego całkowitego b. Zatem suma czynników dających wartość y będzie równa N/r, bo istnieje N/r różnych wartości b dających ten sam wykładnik. Prawdopodobieństwo każdego takiego y wynosi zatem 1 / r^2. Istnieje r różnych y takich że yr/N jest całkowite, oraz r różnych możliwych wartości f(x0). W sumie prawdopodobieństwo uzyskania dobrego r wynosi zatem 1. Kwantowa transformata Fouriera Kwantowa transformata Fouriera (ang. QFT - Quantum Fourier transform) jest kwantową analogią dyskretnej transformaty Fouriera. Na dowolny n-kubitowy stan bazowy |j> działa ona jak następuje: n 1 | j > N N −1 ∑e 2π i j k N |k > k =0 gdzie N =2 . Warto zwrócić uwagę, że wielkość ω = e2πi / N jest "zespolonym pierwiastkiem N-tego rzędu" z liczby 1 (ze wzóru de Moivre'a). Spostrzeżenie to pomaga wyobrazić sobie jak działa QFT, obrazując ją sobie w układzie współrzędnych przestrzeni zespolonej. Bramka Hadamarda Bramka Hadamarda (ozn. w skrócie symbolem H) jest bramką kwantową jednokubitową. Bramka kwantowa Hadamarda jest reprezentowana przez 2 x 2 wymiarową macierz unitarną będącą iloczynem 1 i macierzy Hadamarda: 2 Działanie bramki Hadamarda H dla wektorów bazowych (stanów bazowych) |0> oraz |1> można przedstawić następująco: Wektory { H|0>,H|1>} stanowią bazę w przestrzeni stanów jednego qubitu, którą nazywa się bazą Hadamarda. Bramka Hadamarda ma podstawowe znaczenie dla obliczeń kwantowych. Postęp w algorytmach kwantowych Minięło już ponad 12 lat od wymyślenia algorytmu faktoryzacji na komputerze kwantowym, od tego czasu powstało niewiele algorytmów kwantowych rozwiązujących klasyczne problemy. Według Shora są dwie przyczyny tego, że algorytmy kwantowe są trudne do wymyślenia. - pierwszą jest to, że może być tylko kilka problemów dla których komputery kwantowe mogą zaoferować istotne przyśpieszenie wykonywania algorytmów wykonywanych na klasycznym komputerze; najbardziej pesymistyczny scenariusz, wynaleźliśmy już większość znaczących algorytmów. - drugą jest to, że komputery kwantowe działają w sposób tak nieintuicyjny, i tak różny od klasycznych komputerów, że całe doświadczenie ostatnich pięćdziesięciu lat w algorytmice oferuje mały wgląd w to jak znajdować kwantowe algorytmy, więc na dzień dzisiejszy wydajne algorytmy kwantowe dla wielu problemów istnieją, lecz są bardzo trudne do wymyślenia. Klasa „problemów kwantowych” Klasa problemów, które mogą być efektywnie rozwiązane przez kwantowy komputer jest nazwana BQP("bounded error, quantum, polynomial time").Komputery kwantowe wykonują tylko probabilistyczne algorytmy, więc BQP na kwantowym komputerze jest odpowiednikiem klasy BPP na komputerze klasycznym. Jest zdefiniowana jako zbiór problemów rozwiązywalnych w czasie wielomianowym, w których prawdopodobieństwo błedu jest ograniczone przez ¼ . Mówimy że komputer kwanotwy rozwiązuje problem jeśli dla każdej instancji problemu, jego odpowiedz będzie prawidlowa z dużym prawdopodobieństwem. Jeśli rozwiązanie jest znajdowane w czasie wielomianowym, wtedy problem należy do BQP. Spodziewana zależność między klasą BQP oraz innymi przestrzeniami problemów Przykłady algorytmów kwantowych – algorytm Deutscha-Jozsa (odróżniania funkcji zrównoważonej od stałej) 1992 – algorytm Shora (znajdowania liczb pierwszych oraz logarytm dyskretny) 1994 – algorytm Grovera (przeszukiwania bazy danych) 1995 – algorytm Simona (znajdowania maski XOR funkcji 2-na-1) 1997 Literatura i. Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer - Peter W. Shor (1996) – szczegółowo opisany algorytm, oraz wyjaśnione podstawy obliczeń kwantowych ii. Progress in quantum algorithms - Peter W. Shor (2005) iii. www.wikipedia.pl iv.http://alumni.imsa.edu/~matth/quant/299/paper/node18.html