Ravindra W. Chhajlany 16 stycznia 2007
Plan
Przeszukiwanie nieuporządkowanej bazy danych: I Przykłady 1. Z ksiązki adresowej, podaj nazwę użytkownika do którego przypisany jest jakiś numer telefonu, np. 8239412. 2. Ze słownika języka Polskiego, znajdź słowo wypełniając puste miejsca z m n. 3. itd...
Przeszukiwanie nieuporządkowanej bazy danych: przypadek klasyczny Każdy problem wyszukiwania można przeformułować na problem szukanie indeksu rozwiązania. //znajdź położenie x0 elementu a w bazie db function x0=znajdź(a, db[n]) x0=0; while (db[x0]!=a) x0++; Idea Porównaj a po kolei z każdym elementem db do momentu trafienia na rozwiązanie. Koncepcyjnie, jest to proces obliczenia funckji { 1 dla x = x0 f (x) = 0 dla x x 0 Średnia liczba kroków potrzebych do znalezienia rozwiązania: 1 N + 1 (1 + 2 + 3 +... + N) = N 2 Złożoność problem jest O(N).
Przeszukiwanie nieuporządkowanej bazy danych: przypadek klasyczny - wyrocznia Sformułowanie zagadnienia za pomocą wyroczni (tu już wiemy jaka jest wewnętrzna struktura programu ale jest wygodnie prowadzić ogólne rozważania odnosząc się tylko do głównej zasady działąnia algorytmu). Możliwe wartości indeksu x są to wszystkie liczby naturalne do liczby N określającej rozmiar bazy danych. x / y O f / x y f (x) Złożoność problemu znalezienia indeksu x 0 : O(N) Jeśli jest M rozwiązań wśród N możliwości, wtedy złożoność problemu jest: O(N/M).
Przeszukiwanie nieuporządkowanej bazy danych: przypadek kwantowy - wyrocznia Idea Idea jest dalej ta sama: trzeba zidentyfikować wartość indeksu x 0, dla której funkcja f (x 0 ) = 1. x / y Przypomnijmy, że U f / x y f (x) U f x = ( 1) f (x) x Ponieważ stan qubitu zapytania się nie zmienia, będziemy pisać działanie wyroczni pomijając qubit zapytania: Ũ f x = ( 1) f (x) x
Idea kwantowego wyszukiwania: Jak wiadomo, można równolegle obliczyć wszystkie wartości funckji wprowadzając superpozyjcję wszyskich możliwych indeksów jednocześnie do wyroczni w postaci stanu: ψ = H n 0 = + n = 1 N 1 x, n = log(n) N x=0 Idea działaniu algorytmu kwantowego: Problem wyszukiwania jednej wartości wśród czterech możliwych.
Idea kwantowego wyszukiwania: Jak wiadomo, można równolegle obliczyć wszystkie wartości funckji wprowadzając superpozyjcję wszyskich możliwych indeksów jednocześnie do wyroczni w postaci stanu: ψ = H n 0 = + n = 1 N 1 x, n = log(n) N x=0 2 1.8 1.6 1.4 Stan początkowy Amplituda 1.2 1 0.8 0.6 0.4 0.2 0 1 2 3 4 Indeks
Idea kwantowego wyszukiwania: Jak wiadomo, można równolegle obliczyć wszystkie wartości funckji wprowadzając superpozyjcję wszyskich możliwych indeksów jednocześnie do wyroczni w postaci stanu: ψ = H n 0 = + n = 1 N 1 x, n = log(n) N x=0 1 0.8 0.6 0.5 0.4 Krok 1. Zadziałanie wyroczni: Niech f (2) = 1. Amplituda 0.2 0 0.2 0.4 0.6 0.8 1 1 2 3 4 Indeks
Idea kwantowego wyszukiwania: Jak wiadomo, można równolegle obliczyć wszystkie wartości funckji wprowadzając superpozyjcję wszyskich możliwych indeksów jednocześnie do wyroczni w postaci stanu: ψ = H n 0 = + n = 1 N 1 x, n = log(n) N x=0 2 1.8 1.6 1.4 Krok algorytmiczny: Odwrócenie względem średniej. Amplituda 1.2 1 0.8 0.6 0.4 0.2 0 1 2 3 4 Indeks
Idea kwantowego wyszukiwania: Jak wiadomo, można równolegle obliczyć wszystkie wartości funckji wprowadzając superpozyjcję wszyskich możliwych indeksów jednocześnie do wyroczni w postaci stanu: ψ = H n 0 = + n = 1 N 1 x, n = log(n) N x=0 W tym prostym przypadku, z tak wybranym algorytmem, wystarczy odwołać się tylko raz do wyroczni aby wyszukać odpowiednie rozwiązanie!! Klasycznie, średnio rzecz biorąc trzeba by 2.5 razy odwołać się do wyroczni. Wazne: Inwersję wokół średniej można wykonać za pomocą kwantowej operacji. Normalna inwersja (wokół 0): a a Inwersja wokół pewnego b : a b b a a 2 b a.
Kwantowa operacji wykonująca inwersję wokół średniej Dowolny stan kwantowy Ψ = i α i i. Średnia wartość amplitudy: α = 1 N i α i Inwersja stanu wokół średniej oznacza: Ψ i (2 α α i) k. Jaka operacja wykonuje taką transformację na dowolnym stanie? Odpowiedź: I α = 2 ψ ψ I. Dowód: = 2 N ( i I α α i i = 2 i i α i ψ ψ i i α i i = ψ i = 1 N α i ) ψ α i i = 2 ( ) α i k N i i k i ) (2 α α i i i α i i =
Kwantowa operacji wykonująca inwersję wokół średniej Dowolny stan kwantowy Ψ = i α i i. Średnia wartość amplitudy: α = 1 N i α i Inwersja stanu wokół średniej oznacza: Ψ i (2 α α i) k. Jaka operacja wykonuje taką transformację na dowolnym stanie? Odpowiedź: I α = 2 ψ ψ I. Rozłożenie I α na proste bramki: Ponieważ H n 0 = ψ, I α = H n (2 0 0 I )H n = H n PH n. Bramka fazowa P: (2 0 0 I ) i = ( 1) δi,0 i.
Grover a 0 Wprowadź równoległy stan wszystkich danych (indeksów) ψ Algorytm związany z jednym odwołaniem do wyroczni: 1 krok iteracyjny Grovera. 1 Wykonaj operację wyroczni U f. 2 Wykonaj operację I α. Każdy krok Grovera (kroki 1,2) zwiększa amplitudę prawdziwego rozwiązania w stanie końcowym. Dla przypadku N > 4, trzeba wykonać pewną liczbę kroków Grovera zanim stan końcowy będzie z bardzo dużym prawdopodobieństwem stanem złożonym z rozwiązań. Okazuje się liczba tych kroków (czyli odwołań do wyroczni) jest O( N/M), jeśli jest M możliwych rozwiązań.
Analiza działania algorytmu Grover a Załóżmy, że jest M rozwiązań ze zbioru N możliwości. Stan początkowy ψ można podzielić na dwie grupy: rozwiązania R i ich dopełnienie R. 1 α = x N M x R β = 1 x M x R przy czym oczywiście α β = 0. Stan początkowy w algorytmie można napisać jako ψ = 1 x = N x N M N α + cos(θ/2) α + sin(θ/2) β CEL: Zwiększyć amplitudę przy β. M N β =
Analiza działania algorytmu Grover a: I Działanie wyroczni na stany α, β U f α = α, U f β = β Można więc napisać, że U f = 2 α α I. Geometryczna interpretacja U f : Odbicie względem osi α β Ψ θ/2 θ/2 α Analogicznie, operator inwersji I α jest odbiciem względem osi ψ. Uf Ψ
Analiza działania algorytmu Grover a: II Geometryczna interpretacja algorytmu Grovera 1 krok Grovera 2 odbicie = 1 obrót! β G ψ θ ψ θ/2 θ/2 α G ψ = cos(3θ/2) α + sin(3θ/2) β Po k iteracjach stan danych jest obrócony do G k ψ = cos((2k + 1)θ/2) α + sin((2k + 1)θ/2) β (1)
Złożóność algorytmu Grovera Po ilu kroków, prawdopodobieństwo zmierzenia jednego z możliwych rozwiązań wzrasta (prawie) do 1? Prawdopodobieństwo zmierzenia prawdziwego rozwiązania po k iteracjach wynosi z równania (1) p β = sin 2 2k + 1 θ = 1 ( ) 1 cos(2k + 1)θ 2 2 W najlepszym wypadku, p β 1 cos(2k + 1)θ = 1 K π 2θ. Przypominając, że sin θ/2 = M/N, oraz że x >= sin(x) (dla x > 0) mamy θ M M 2 > N θ > 2 N K < π N 4 M co oznacza, że algorytm Grovera znajduje rozwiązania w O( N/M).
Podsumowanie Algorytm Grovera Problem: Należy przeszukać N elementowy zbiór w poszukiwaniu pewnego elementu spełniającego pewne kryerium. W ogólności może byc M takich specjalnych elementów. 1. Przygotuj początkowy stan ψ = + n 2. Wykonaj iterację Grovera rzędu O( N/M) razy. 3. Wykonaj pomiar qubitów danych w bazie logicznej aby otrzymać z prawdopodobieństwem 1 jedno rozwiązanie problemu wyszukiwania.
Problem Simona Dana jest funkcja f a : {0, 1} n {0, 1} n, spełniająca zależność f (x a) = f (x), tzn. jest funkcją 2 na 1. Liczba a jest więc okresem funkcji. Przykład funkcji dla przypadku 3 bitów: Argumenty 0 1 2 3 4 5 6 7 Binarnie 000 001 010 011 100 101 110 111 Przykład f 2 (x) 0 1 0 1 2 3 2 3 Ogólniej f 2 (x) y 1 y 2 y 1 y 2 y 3 y 4 y 3 y 4 f 3 (x) y 1 y 2 y 2 y 1 y 3 y 4 y 4 y 3 Problem: Dana jest wyrocznia obliczająca (nieznaną) funkcję f a dla dowolnego argumentu. W ilu krokach można stwierdzić jaki jest okres a funkcji?
Problem Simona: Rozwiązanie klasyczne Wyrocznia klasyczna: O fa : (x, y) (x, y f a (x)) x x y O fa y f a (x) Złożoność algorytmiczna Zauważmy, że jeśli f (x i ) = f (x j ) x j = x i a a = x i x j W każdym kroku obliczamy funkcję dla jednego argumentu x. Jakie jest prawdopodobieństwo znalezienia rozwiązania w m kroków? Ilość możliwych okresów próbnych a jakie można sprawdzić w m krokach = ( m 2). Prawdopodobieństwo, że wśród nich trafimy na szukane rozwiązanie = ( m p(m) = 2) N, N = 2n = Liczba możliwych a
Problem Simona: Rozwiązanie klasyczne Wyrocznia klasyczna: O fa : (x, y) (x, y f a (x)) x x y O fa y f a (x) Złożoność algorytmiczna Zauważmy, że jeśli f (x i ) = f (x j ) x j = x i a a = x i x j W każdym kroku obliczamy funkcję dla jednego argumentu x. Po ilu krokach M, prawdopodobieństwo znalezienia a jest 1? M 2 n/2 Algorytm klasyczny ma więc złożoność O(2 n/2 )
Pomiar stanu argumentu nie daje wartości a. Problem Simona: Rozwiązanie kwantowe Wyrocznie kwantowa: U f : x y x y f (x) x / U f / x y / / y f (x) Algorytm: jeden krok 1. Obliczamy wszystkie możliwe wartości funckji jednocześnie wprowadzając wszsytkie argumenty: + n 2 U f + n 0 n 1 n 1 = U f x 0 n = 1 2 n 1 x f (x) 2 n/2 2 n/2 x=0 2. Wykonujemy pomiar wartości funkcji na drugim rejestrze aby otrzymać pewną wartość funkcji f (x 0 ). Wtedy rejestr argumentów jest w stanie 1 2 ( x 0 + x 0 a ) = out x=0
Problem Simona: Rozwiązanie kwantowe Wyrocznie kwantowa: U f : x y x y f (x) x / U f / x y / / y f (x) Algorytm: jeden krok 3. Żeby odzyskać okres funkcji, wykonujemy H n na rejestrze danych H n out 1 2 n 1 ( 1) x0 y y + ( 1) x0 y a y y = 2 (n+1)/2 y=0 1 2 (n 1)/2 y a y=0 ( 1) x0 y y Pomiar teraz rejestru danych w bazie logicznej daje teraz pewną wartość y 1, takim że a y 1 = 0. Ilość takich liczb y wynosi z powyższego równania: 2 n 1.
Problem Simona: Rozwiązanie kwantowe Wyrocznie kwantowa: U f : x y x y f (x) x / / x U f y / / y f (x) Algorytm Trzeba powtórzyć ten podstawowy krok wystarczająca liczbę (M) razy aby otrzymać n niezależnych wartości y by wyznaczyć n-bitową liczbę a. Jaka jest liczba M? M = O(n) a y 1 = 0. a y n = 0
Problem Simona: Rozwiązanie kwantowe Wyrocznie kwantowa: U f : x y x y f (x) x / / x U f y / / y f (x) Dowód, że M = O(n) y = 0 zawsze jest rozwiązaniem, więc przyjmujemy, że y 1 = 0. Załóżmy, że y 1, y 2,... y m są niezależnymi liczba otrzymany z działania algorytmu. Jakie jest prawdopodobieństwo p m+1, że następna liczba będzie liniowo niezależna od wcześniejszych? Ilość liczb L liniowo zależnych od pozostałych m liczb: ( ) ( ) ( ) m 1 m 1 m 1 L = }{{} 1 + + +... + = 2 m 1 1 2 m 1 y=0 } {{ } y=y i 0 }{{} y=y i y j y i,j 0 p m+1 = 1 2m 1 = 1 2m n 2n 1 }{{} y=y 2 y 3... y m
Problem Simona: Rozwiązanie kwantowe Wyrocznie kwantowa: U f : x y x y f (x) x / / x U f y / / y f (x) Dowód, że M = O(n) Jaka jest średnia liczba odwołań r do wyroczni żeby uzyskać m+1-szą liczbę niezależną y m+1? Jeśli p jest prawdopodobieństwem powodzenia, wówczas r = kp(1 p) k 1 = 1 p k=1 W naszym przypadku p = p m+1, więc r = 1 1 2 m n 1 + 2m n O(1) Każdą liczbę generujemy średnio w jednym kroku, więc n liczb generujemy w O(n) kroków.
Problem Simona: Rozwiązanie kwantowe Wyrocznie kwantowa: U f : x y x y f (x) x / / x U f y / / y f (x) Złożoność algorytmu Po O(n) odwołaniach, otrzymujemy n niezależnych równań, z któych można wyznaczyć n-bitową liczbę a. Ten algorytm przedstawia eksponencjalne przyszpieszenie w stosunku do klasycznego rozwiązania. Jest to pierwszy nietrywialny przykład przyspieszenia kwantowego.
Okresowość i znajdywanie okresu funkcji Dana jest funkcja f r : {0, 1} n {0, 1} m, spełniająca zależność f r (x) = f r (x + mr), gdzie każde x + mr leży pomiędzy 0 i N 1 (N = 2 n ). Liczba r jest okresem funkcji. Przykład funkcji dla przypadku 3 bitów: Argumenty 0 1 2 3 4 5 6 7 f 2 (x) y 1 y 2 y 1 y 2 y 1 y 2 y 1 y 2 f 3 (x) y 1 y 2 y 3 y 1 y 2 y 3 y 1 y 2 Problem: Znajdź okres danej funkcji okresowej. Klasycznie problem znajdywania okresu jest trudny - jeśli liczba r jest rzędu 2 n/2, trzeba średnio wykonać kroków rzędu 2 n/4 by trafić na 2 wartości x przyjmujące tę samą wartość funkcji.
Algorytm kwantowy do znajdywania okresu Standardowy schemat x / U f / x y / / y f (x) Algorytm: Pierwsze kroki (tak jak w alg. Simona) 1. Równoległe obliczenie kwantowe: 0 n 0 m H n I 1 N 1 N x=0 x 0 U f 1 N 1 x f (x) N x=0 2. Wykonujemy pomiar wartości funkcji (na 2 rejestrze) uzyskując przypadkową wartość f (x 0 ). Stan rejestru argumentów po odczycie wartości funkcji: A 1 1 x 0 + jr, gdzie A = liczba tych argumentów A j=0
Algorytm kwantowy do znajdywania okresu Ile może wynosić A? A 1 < N r < A + 1 0 r 2r 3r N 1 r N r x 0 + (A 1)r ( N 1) < N A 1 < N r, N Ar x 0 < r N r < A + 1 Jeśli N/r jest liczbą całkowitą N/r = A.
Algorytm kwantowy do znajdywania okresu Kluczowe narzędzie do wyciągania okresu: (Kwantowa) Transformata Fouriera QFT N : x 1 N 1 ( ω xy y, ω = exp i 2π ) N N y=0 Zauważmy, że QFT 2 = H. (Dlatego wykorzystano H n do znalezienia okresu funkcji w algorytmie Simona w kroku 3 - Jest to odpowiednia transformata Fouriera do tam zdefiniowanego typu funkcji)
Algorytm kwantowy do znajdywania okresu Algorytm: c.d. 3. Należy wykonać QFT N na rejestrze danych: ( A 1 1 x 0 + jr QFT N 1 N 1 A 1 ω x0y ω ) y jry = dane A NA j=0 y=0 j=0 i wykonać pomiar rejestru argumentów (w bazie logicznej). Prawdopodobieństwo zmierzenie losowej wartości y wynosi y dane 2 = p(y) = 1 A 1 2 ω jry NA j=0 Powyższy rozkład prawdopodobieństwa premiuje wartości takie, że yr/n jest bliskie liczb całkowitych!
Algorytm kwantowy do znajdywania okresu Analiza wyniku kroku 3: Przypadek szczególny: Załóżmy, że r N (r dzieli N) W tym przypadku A = N/r, ponadto A 1 A 1 ω jry = exp (i 2π ) { A y = ka = k A yj N = r 0 w pozostałych przypadkach j=0 ponieważ A 1 j=0 j=0 exp (i 2π ) A 1 A yj = j=0 ξ j = 1 ξa 1 ξ = 1 ei2πy 1 e i2πy/a
Algorytm kwantowy do znajdywania okresu Analiza wyniku kroku 3: Przypadek szczególny: Załóżmy, że r N (r dzieli N) W tym przypadku A = N/r, ponadto A 1 A 1 ω jry = exp (i 2π ) { A y = ka = k A yj N = r 0 w pozostałych przypadkach j=0 Stąd j=0 { 1 p(y) = r y = k N r 0 poza tym dane = 1 r 1 ω x0k r r k N r k=0
Algorytm kwantowy do znajdywania okresu Analiza wyniku kroku 3: Przypadek szczególny: Załóżmy, że r N (r dzieli N) Po zmierzeniu y, łatwo wyznaczyć y/n = k/r. Doprowadź do najprostszej postaci y/n. Jeśli NWD(k, r)=1, otrzymujemy r. Jeśli NWD(k, r) 1, otrzymujemy czynnik liczby r. Po otrzymaniu liczby sprawdzamy czy znaleziona liczba (lub jeśli nie można np. spróbować czy któryś z kilku pierwszych mnożników ) jest okresem funkcji. Jeśli nie, powtórz krok 3. Można pokazać, że istnieje duże tego, że wybrane k z zakresu od 0 do r 1 nie będzie miało wspólnych dzielników z r. to nie jest oczywiście konieczne chociaż w praktyce może być wskazane.
Algorytm kwantowy do znajdywania okresu Analiza wyniku kroku 3: Przypadek szczególny: Załóżmy, że r N (r dzieli N) 1 0.9 0.8 N=16, r=2 0.7 0.6 p(y) 0.5 0.4 0.3 0.2 0.1 0 2 0 2 4 6 8 10 12 14 16 y Załóżmy, że wynika pomiaru to y = 8. Wówczas y/n = 1/2, i przyjmujemy r = 2. Sprawdzamy.
Algorytm kwantowy do znajdywania okresu Analiza wyniku kroku 3: Przypadek szczególny: Załóżmy, że r N (r dzieli N) 1 0.9 0.8 N=16, r=4 0.7 0.6 p(y) 0.5 0.4 0.3 0.2 0.1 0 2 0 2 4 6 8 10 12 14 16 y Załóżmy, że wynika pomiaru to y = 12. Wówczas y/n = 3/4 = k/r, i przyjmujemy r = 4. Sprawdzamy. itd.
Algorytm kwantowy do znajdywania okresu Analiza wyniku kroku 3: Przypadek ogólny: Jeśli r N, możliwe wartości A = N r, z oznacza najbliższą liczbę całkowitą otrzymaną po zaokrągleniu liczby z w górę lub w dół. Teraz transformata Fouriera promuje takie y, że y = k N r, natomiast prawdopodobieństwa innych wyników już nie są zerowa, chociaż maleją dla coraz większych N (zob. dalej). Stan danych po QFT jest więc z dużym prawdopodobieństwem dane 1 r 1 ω x0k r r k N r k=0 (Oczywiście można podać ilościowe oszacowania tego prawdopodobieństwa)
Algorytm kwantowy do znajdywania okresu Analiza wyniku kroku 3: Przypadek ogólny: Po zmierzeniu y, znów można policzyć y/n. Można pokazać, że tak wyznaczone y/n (gdy r << N) wyznacza k/r z dokładnością do 1/(2N). Dokładną wartość k/r można wyznaczyć z y/n techniką ciągłego rozwinięcia ułamków (CRU). Po wyznaczeniu tej wielkości dalsze etapy są takie same jak w poprzednim przypadku uproszczonym. CRU Każdą liczbę rzeczywistą można przyblizyć ciągiem ułamków o następującej postaci α = α 0 + 1 α 1 + 1 α 2+ 1 α 3 +. {α 0, α 1, α 2, α 3,...} Jeśli α jest n-bitową liczbą wymierną, CRU można wykonać w rzędu O(n 3 ).
Algorytm kwantowy do znajdywania okresu Przykłady 0.8 0.6 N=16, r=3 p(y) 0.4 0.2 Jeśli y = 5, 0 2 0 2 4 6 8 10 12 14 16 y y/n = 5/16 = 1 3 + 1 5 = {3, 5} = 1 3 r = 3
Algorytm kwantowy do znajdywania okresu Przykłady 0.8 0.6 N=16, r=3 p(y) 0.4 0.2 Jeśli y = 11, 0 2 0 2 4 6 8 10 12 14 16 y y/n = 11/16 = 1 1 + 1 2+ 1 5 = {1, 2, 3} = 2 3 r = 3;
Algorytm kwantowy do znajdywania okresu Przykłady 0.3 0.25 N=512, r=7 0.2 p(y) 0.15 0.1 0.05 Jeśli y = 73, 0 100 0 100 200 300 400 500 600 y y/n = 73/512 = {7, 73} = 1 7 r = 7;
Algorytm kwantowy do znajdywania okresu Przykłady 0.2 N=1024, r=11 p(y) 0.1 Jeśli y = 186, 0 200 0 200 400 600 800 1000 1200 y y/n = 186/1024 = {5, 1, 1, 46} = 2 11 r = 11;
Podsumowanie algorytmu znajdywania okresu Złożoność Dla r/n << 1, z dużym prawdopodobieństwem otrzymujemy y = k k N, z czego można wyznaczyć k/r za pomocą techniki CRU. Również z dużym prawdopodobieństwem NWD(k, r) = 1. Łącznie można więc z góry wybrać odpowiednią stałą liczbę odwołań do wyroczni aby osiągnąc sukces. Natomiast CRU wymaga O(log(N) 3 ) operacji. Więc złożoność algorytmu nielicząc złożoności wykonania QFT jest własnie O(log(N) 3 ).
QFT QFT N j = 1 N 1 e i2πj/nk k, QFT.QFT = I N k=0 Zasada implementacji jest podobna do klasycznego FFT ale wykorzystując kwantową równoległość można wykonać QFT wydajniej niż FFT. Filozofia Dziel i rządź j = j 1 j 2... j n = 2 n 1 j 1 + 2 n 2 j 2 +... 2 0 j n j N = 2 1 j 1 + 2 2 j 2 +... + 2 n j n = 0.j 1 j 2... j n j 2 l = j 1 j 2... j n l j n l+1... j n e i2πj1j2...j n l j n l+1...j n = e i2π0.j n l+1...j n
1 2 n n 1 2 n 1 l=1 k l =0 QFT j = 1 2 n 1 e i2πj/2nk k = 2 n 1 1... k 1=0 k 2=0 1 k=0 k n=0 l=1 e i2π(j/2l )k l k l = 1 2 n 1 2 n n e i2π(j/2n )2 n l k l k l = n l=1 k l =0 ( ) n 0 + e i2π(0.j n l+1...j n) 1 = l=1 1 e i2π(0.j n l+1...j n)k l k l = ( )( ) ( ) 0 + e i2π0.jn 1 0 + e i2π0.jn 1jn 1 0 + e i2π0.j1...jn 1... 2 2 2 Niech ( ) 1 0 R k = 0 e i2π/2k
j1 j2 H R 2 R N 0 + e i2π0.j1...jn 1 0 + e i2π0.j2...jn 1 H R N 1 jn H 0 + e i2π0.jn 1 Na końcu należy wykonać zamianę wyjściowego qubitu pierwszego z ostatnim, drugiego z przedostatnim itd... Ile bramek jest potrzebnych, żeby zaimplementować QFT? n(n + 1) 2 } {{ } H+R k Klasyczne FFT jest O(n2 n )! + n = O(n 2 ) }{{} 2 swaps
Fundamentalne twierdzenie teorii liczb Każdą liczbę naturalną N można rozłożyć na iloczyn liczb pierwszych: N = p b1 1 p b2 2... dużych liczb jest klasycznie trudna Najlepszy znany dotychczas algorytm klasyczny faktoryzuje n-bitową liczbę w 0 ( exp ( (64 9 ) n 1 3 (log n) 2 3 ))
Derek Atkins, Michael Graff, Arjen Lenstra, Paul Leyland - http://www.mit.edu:8001/people/warlord/rsa129- announce.txt RSA 129 = 1143816257578888676692357799761 466120102182967212423625625618429 357069352457338978305971235639587050 58989075147599290026879543541 = 34905295108476509491478496199038 98133417764638493387843990820577 327691329932667095499619881908344 61413177642967992942539798288533 The sieving step took approximately 5000 mips years, and was carried out in 8 months by about 600 volunteers from more than 20 countries, on all continents except Antarctica.
Redukcja problemu faktoryzacji do znajdywania rzędu Własność liczb względnie pierwsze z N Jeśli (NWD(a, N) = 1), to istnieje takie r, że a r mod N = 1 Rzędem liczby a modulo N nazywamy najmniejszą taką liczbę r. Przykład 4 jest wzg. pierwsza do 15 Rząd liczby 4 wynosi r = 2, ponieważ 4 2 = 16 = 1 mod 16
Redukcja problemu faktoryzacji do znajdywania rzędu Własność liczb względnie pierwsze z N Jeśli (NWD(a, N) = 1), to istnieje takie r, że a r mod N = 1 Rzędem liczby a modulo N nazywamy najmniejszą taką liczbę r. Problem znajdywania okresu jako problem znajdywania okresu f (x) a x mod N, f (x + r) = a x+jr mod N = a x mod N (a r mod N) j = a x mod N = f (x)
Redukcja problemu faktoryzacji do znajdywania rzędu Niech N = p q, gdzie p, q są pierwsze. Załóżmy, że mamy pewną liczbę względnie pierwszą do a, która posiada parzysty rząd r. Wtedy łatwo znaleść czynniki pierwsze danej liczby. Dlaczego? a r = 1 mod N a r 1 = 0 mod N 2 r (a r/2 1) (a r/2 + 1) = 0 mod N Ale a r/2 1 mod N, bo r jest najmniejszą liczbą, że a r = 1 mod N. Więc albo mamy, że a r/2 + 1 = 0 mod N czyli a r/2 = 1 mod N = N 1, lub a r/2 + 1 0 mod N, i wtedy a r/2 1 i (a r/2 + 1 zawierają czynniki pierwsze liczby N. W tym drugim przypadku, NWD(a r/2 ± 1, N) daje nam więc czynniki pierwsze p, q liczby N!
Redukcja problemu faktoryzacji do znajdywania rzędu Czy spełnienie warunków sukcesu jest trudne (*) Prawdopobieństwo, że losowa liczba ma parzysty rząd i a r/2 N 1 wynosi dla liczb typu RSA przynajmniej 3/4. Pomysł Shora Rząd liczby (czyli okres funkcji f (x) = a x mod N) jest trudny do policzenia klasycznia, ale kwantowo wymaga tylko O(log (N) 3 ) kroków.
Algorytm Shora do faktoryzacji liczby 1. Wybierz zakres argumentów T dla funkcji f (x), tak żeby okres szukany był mały (r < T ), wystarczy wybrać T > log(n 2 ) = 2 log(n) 2. Wybierz liczbę a z zakresu 0 do N 1. 3. Sprawdź za pomocą algorytmu Euclidesa czy NWD(a, N) = 1, jeśli nie to NWD(a, N) jest szukanym czynnikiem pierwszy, jeśli tak, przejdź dalej 4. Znajdź okres funkcji f a (x) za pomocą kwantowego algorytmu 5. Czy r jest parzyste: nie - wróć do punktu 2. idź dalej 6. Sprawdź czy a r/2 + 1 = 0 mod N: Jeśli tak, wróć do punkty 2. Jeśli nie, SUKCES, Policzyć NWD(a r/2 ± 1 = 0) mod N (za pomocą algorytmu Euklidesa w O(log(N)) 3 ) by otrzymać p, q.
Złożoność algorytmu Shora Ilość kroków jakie trzeba więc wykonać wynosi jest O(log(N) 3 ) NWD+ f(x) + QFT O(log(N) 3 ) + O(log(N) 3 ) + O(log(N) 2 ) = O(log(N) 3 ) Obliczenie samej funkcji jest łatwe jak się wykona poprzez modularne potęgowanie.