Algorytm faktoryzacji Petera Shora dla komputera kwantowego

advertisement
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≡0mod n  , gcd  x 2 −1, n
jest trywialnym dzielnikiem n wtedy gdy r jest nieparzyste lub
r
2
x ≡−1mod 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 q2n 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
Download