Algorytm Deutscha-Jozsy

Algorytm Deutscha-Jozsy – algorytm kwantowy utworzony przez Dawida Deutscha i Richarda Jozsa w 1992[1] poprawiany później przez Richarda Cleve, Artura Ekerta, Chiarę Macchiavello i Michele Mosca w 1998[2]. Sam algorytm nie ma dużej wartości praktycznej – jest to jeden z pierwszych przykładów algorytmu kwantowego, który jest wykładniczo szybszy od każdego możliwego deterministycznego, klasycznego algorytmu. Algorytm Deutscha-Jozsy jest również deterministyczny, to znaczy zawsze zwraca poprawną odpowiedź.

Sformułowanie problemu

W problemie Deutscha-Jozsy mamy "czarną skrzynkę", która tworzy funkcję f : { 0 , 1 } n { 0 , 1 } {\displaystyle f:\{0,1\}^{n}\to \{0,1\}} taką że:

  • f {\displaystyle f} jest funkcją stałą (tj. wszystkie wartości ma równe 0 albo wszystkie wartości ma równe 1) lub
  • f {\displaystyle f} jest funkcją zbalansowaną[3] (tj. przypisuje wartości 0 oraz 1 tak, że jest tyle samo wartości 0 co 1).

Innymi słowy: "czarna skrzynka" generuje n bitów w taki sposób, że (1) wszystkie bity są równe 0 albo wszystkie bity są równe 1, (2) albo 0 i 1 są wygenerowane w równych ilościach, ale w dowolnej kolejności.

Zadanie polega na określeniu, czy f {\displaystyle f} jest stała, czy zbalansowana.

Klasyczny algorytm

Deterministyczny algorytm rozwiązujący problem Deutscha-Jozsy wymaga w najgorszym przypadku 2 n 1 + 1 {\displaystyle 2^{n-1}+1} ewaluacji funkcji f , {\displaystyle f,} gdzie n {\displaystyle n} jest liczbą bitów. Aby udowodnić, że f {\displaystyle f} jest stała, potrzebne jest obliczenie funkcji w n/2+1 punktów. W najlepszym przypadku, jeżeli już pierwsze dwie sprawdzone wartości funkcji będą różne, to dowodzi, że f {\displaystyle f} jest zbalansowana. Konwencjonalny algorytm randomizowany wymaga wykonania k {\displaystyle k} ewaluacji funkcji, aby uzyskać poprawną odpowiedź z dużym prawdopodobieństwem (błąd z prawdopodobieństwem ϵ 1 / 2 k 1 {\displaystyle \epsilon \leqslant 1/2^{k-1}} ). Aby na pewno uzyskać poprawną odpowiedź (algorytm deterministyczny), wymagane jest wyznaczenie k = 2 n 1 + 1 {\displaystyle k=2^{n-1}+1} wartości funkcji. Algorytm Deutscha-Jozsy zwraca zawsze poprawną odpowiedź już po jednej ewaluacji funkcji f . {\displaystyle f.}

Historia

Algorytm Deutscha-Jozsy jest uogólnieniem wcześniejszej (1985) pracy Dawida Deutscha, która pokazuje rozwiązanie prostszego problemu. Konkretnie, mamy daną funkcję binarną, której dziedziną jest 1 bit: f : { 0 , 1 } { 0 , 1 } {\displaystyle f:\{0,1\}\to \{0,1\}} i pytamy, czy f {\displaystyle f} jest stała[4].

Algorytm proponowany początkowo przez Deutscha nie był właściwie deterministyczny. Algorytm dawał poprawną odpowiedź z prawdopodobieństwem 50%. W 1992, Deutsch i Jozsa wymyślili deterministyczny algorytm, który został uogólniony na przypadek funkcji, której argumentem jest n {\displaystyle n} bitów. W przeciwieństwie do aktualnego algorytmu, wymagał on dwukrotnego obliczenia wartości funkcji.

Późniejsze ulepszenia algorytmu Deutscha wprowadził Cleve (i inni)[2], czego efektem było powstanie deterministycznego algorytmu, który wymaga jednokrotnej ewaluacji funkcji f . {\displaystyle f.} Temu algorytmowi nadano imiona Deutscha-Jozsy, aby uczcić innowacyjne zmiany wprowadzone przez tych naukowców[2].

Algorytm Deutscha-Jozsy stanowił inspirację dla algorytmu Shora i Grovera, dwóch najbardziej rewolucyjnych algorytmów kwantowych[5][6].

Dekoherencja

Aby algorytm Deutscha-Jozsy działał, wyrocznia obliczająca f ( x ) {\displaystyle f(x)} z x {\displaystyle x} musi być wyrocznią kwantową, która nie dokonuje dekoherencji x . {\displaystyle x.} Wyrocznia w swoim wywołaniu musi również niszczyć informację o stanie x . {\displaystyle x.}

Algorytm Deutscha

Algorytm Deutscha to szczególny przypadek algorytmu Deutscha-Jozsy. Sprawdza się w nim warunek: f ( 0 ) = f ( 1 ) . {\displaystyle f(0)=f(1).} Jest to równoważne sprawdzeniu f ( 0 ) f ( 1 ) {\displaystyle f(0)\oplus f(1)} (gdzie {\displaystyle \oplus } to dodawanie modulo 2, na które można patrzeć jak na kwantową bramkę XOR zaimplementowaną jako kontrolowana bramka NOT) – jeśli wyjdzie zero, to f {\displaystyle f} jest stała, w przeciwnym przypadku f {\displaystyle f} nie jest stała.

Algorytm zaczyna się ustaleniem dwubitowego stanu A: | 0 | 1 {\displaystyle |0\rangle |1\rangle } i zaaplikowaniu przekształcenia Hadamarda do każdego kubitu, co daje stan B:

1 2 ( | 0 + | 1 ) ( | 0 | 1 ) . {\displaystyle {\frac {1}{2}}(|0\rangle +|1\rangle )(|0\rangle -|1\rangle ).}

Dana jest kwantowa implementacja funkcji f , {\displaystyle f,} która przekształca | x | y {\displaystyle |x\rangle |y\rangle } w | x | f ( x ) y . {\displaystyle |x\rangle |f(x)\oplus y\rangle .} Zastosowanie tej funkcji do stanu B daje:

1 2 ( | 0 ( | f ( 0 ) 0 | f ( 0 ) 1 ) + | 1 ( | f ( 1 ) 0 | f ( 1 ) 1 ) ) {\displaystyle {}\quad {\frac {1}{2}}(|0\rangle (|f(0)\oplus 0\rangle -|f(0)\oplus 1\rangle )+|1\rangle (|f(1)\oplus 0\rangle -|f(1)\oplus 1\rangle ))}
= 1 2 ( ( 1 ) f ( 0 ) | 0 ( | 0 | 1 ) + ( 1 ) f ( 1 ) | 1 ( | 0 | 1 ) ) {\displaystyle ={\frac {1}{2}}((-1)^{f(0)}|0\rangle (|0\rangle -|1\rangle )+(-1)^{f(1)}|1\rangle (|0\rangle -|1\rangle ))}
= ( 1 ) f ( 0 ) 1 2 ( | 0 + ( 1 ) f ( 0 ) f ( 1 ) | 1 ) ( | 0 | 1 ) . {\displaystyle =(-1)^{f(0)}{\frac {1}{2}}(|0\rangle +(-1)^{f(0)\oplus f(1)}|1\rangle )(|0\rangle -|1\rangle ).}

Ignorujemy ostatni bit i z dokładnością do globalnego czynnika fazowego (przemnożenia całości przez e i ϕ {\displaystyle e^{i\phi }} ) otrzymujemy stan:

1 2 ( | 0 + ( 1 ) f ( 0 ) f ( 1 ) | 1 ) . {\displaystyle {\frac {1}{\sqrt {2}}}(|0\rangle +(-1)^{f(0)\oplus f(1)}|1\rangle ).}

Zastosujmy do każdego kubitu tego stanu bramkę Hadamarda; bramka ta tworzy następujące superpozycje stanów bazowych | 0 {\displaystyle |0\rangle } i | 1 {\displaystyle |1\rangle }  :

H | 0 = 1 2 ( | 0 + | 1 ) , {\displaystyle H\,|0\rangle ={\frac {1}{\sqrt {2}}}{\Big (}|0\rangle +|1\rangle {\Big )},}
H | 1 = 1 2 ( | 0 | 1 ) . {\displaystyle H\,|1\rangle ={\frac {1}{\sqrt {2}}}{\Big (}|0\rangle -|1\rangle {\Big )}.}

Działając bramkami Hadamarda na każdy kubit otrzyma się stan:

1 2 ( | 0 + | 1 + ( 1 ) f ( 0 ) f ( 1 ) | 0 ( 1 ) f ( 0 ) f ( 1 ) | 1 ) {\displaystyle {}\quad {\frac {1}{2}}(|0\rangle +|1\rangle +(-1)^{f(0)\oplus f(1)}|0\rangle -(-1)^{f(0)\oplus f(1)}|1\rangle )}
= 1 2 ( ( 1 + ( 1 ) f ( 0 ) f ( 1 ) ) | 0 + ( 1 ( 1 ) f ( 0 ) f ( 1 ) ) | 1 ) . {\displaystyle ={\frac {1}{2}}((1+(-1)^{f(0)\oplus f(1)})|0\rangle +(1-(-1)^{f(0)\oplus f(1)})|1\rangle ).}

f ( 0 ) f ( 1 ) = 0 {\displaystyle f(0)\oplus f(1)=0} wtedy i tylko wtedy, jeśli zmierzono 0, a f ( 0 ) f ( 1 ) = 1 {\displaystyle f(0)\oplus f(1)=1} wtedy i tylko wtedy, jeśli zmierzono 1. Wynika z tego, iż z prawdopodobieństwem równym 100% wiemy, czy f ( x ) {\displaystyle f(x)} jest stała, czy zbalansowana.

Algorytm Deutscha-Jozsy

Ustalmy n + 1 {\displaystyle n+1} kubitowy stan A: | 0 n | 1 {\displaystyle |0\rangle ^{\otimes n}|1\rangle } (pierwsze n {\displaystyle n} bitów jest w stanie | 0 , {\displaystyle |0\rangle ,} a ostatni | 1 {\displaystyle |1\rangle } ). Do każdego kubitu A stosowana jest bramka Hadamarda, która z każdego kubitu tworzy superpozycję; w wyniku czego powstaje stan B:

Obwód kwantowy algorytmu Deutscha-Jozsy

1 2 n + 1 x = 0 2 n 1 | x ( | 0 | 1 ) . {\displaystyle {\frac {1}{\sqrt {2^{n+1}}}}\sum _{x=0}^{2^{n}-1}|x\rangle (|0\rangle -|1\rangle ).}

Następnie, kwantowa wyrocznia przekształca stan | x | y {\displaystyle |x\rangle |y\rangle } w | x | y f ( x ) , {\displaystyle |x\rangle |y\oplus f(x)\rangle ,} co daje:

1 2 n + 1 x = 0 2 n 1 | x ( | f ( x ) | 1 f ( x ) ) . {\displaystyle {\frac {1}{\sqrt {2^{n+1}}}}\sum _{x=0}^{2^{n}-1}|x\rangle (|f(x)\rangle -|1\oplus f(x)\rangle ).}

Po podstawieniu w miejsce f ( x ) {\displaystyle f(x)} 0 {\displaystyle 0} oraz 1 , {\displaystyle 1,} ten wzór przekształca się do:

1 2 n + 1 x = 0 2 n 1 ( 1 ) f ( x ) | x ( | 0 | 1 ) . {\displaystyle {\frac {1}{\sqrt {2^{n+1}}}}\sum _{x=0}^{2^{n}-1}(-1)^{f(x)}|x\rangle (|0\rangle -|1\rangle ).}

W tym momencie stan ostatniego kubitu może zostać zignorowany. Po zastosowaniu przekształceń Hadamarda ponownie na pierwszych n {\displaystyle n} bitach otrzyma się:

1 2 n x = 0 2 n 1 ( 1 ) f ( x ) y = 0 2 n 1 ( 1 ) x y | y = 1 2 n y = 0 2 n 1 [ x = 0 2 n 1 ( 1 ) f ( x ) ( 1 ) x y ] | y {\displaystyle {\frac {1}{2^{n}}}\sum _{x=0}^{2^{n}-1}(-1)^{f(x)}\sum _{y=0}^{2^{n}-1}(-1)^{x\cdot y}|y\rangle ={\frac {1}{2^{n}}}\sum _{y=0}^{2^{n}-1}\left[\sum _{x=0}^{2^{n}-1}(-1)^{f(x)}(-1)^{x\cdot y}\right]|y\rangle }

gdzie x y = x 0 y 0 x 1 y 1 x n 1 y n 1 {\displaystyle x\cdot y=x_{0}y_{0}\oplus x_{1}y_{1}\oplus \cdots \oplus x_{n-1}y_{n-1}}

Prawdopodobieństwo zmierzenia stanu | 0 n {\displaystyle |0\rangle ^{\otimes n}} wynosi:

| 1 2 n x = 0 2 n 1 ( 1 ) f ( x ) | 2 {\displaystyle {\bigg |}{\frac {1}{2^{n}}}\sum _{x=0}^{2^{n}-1}(-1)^{f(x)}{\bigg |}^{2}}

Wyrażenie to przyjmuje wartość 1, jeśli funkcja f ( x ) {\displaystyle f(x)} jest stała (interferencja konstruktywna). Jeżeli zaś funkcja f ( x ) {\displaystyle f(x)} jest zbalansowana, to przyjmuje wartość 0 (interferencja destruktywna).

Przypisy

  1. David Deutsch and Richard Jozsa. Rapid solutions of problems by quantum computation. „Proceedings of the Royal Society of London A”. 439, s. 553, 1992. DOI: 10.1098/rspa.1992.0167. Bibcode: 1992RSPSA.439..553D. 
  2. a b c R. Cleve, A. Ekert, C. Macchiavello, M. Mosca. Quantum algorithms revisited. „Proceedings of the Royal Society of London A”. 454, s. 339–354, 1998. DOI: 10.1098/rspa.1998.0164. arXiv:quant-ph/9708016. Bibcode: 1998RSPSA.454..339C. 
  3. Certainty from Uncertainty. fortunecity.com. [zarchiwizowane z tego adresu (2001-11-24)]..
  4. David Deutsch. The Church-Turing principle and the universal quantum computer. „Proceedings of the Royal Society of London A”. 400, s. 97, 1985. DOI: 10.1098/rspa.1985.0070. Bibcode: 1985RSPSA.400...97D. 
  5. A fast quantum mechanical algorithm for database search, [w:] Lov K.L.K. Grover Lov K.L.K., Proceedings of the Twenty-Eighth Annual ACM Symposium on Theory of Computing, 1996, s. 212–219, DOI: 10.1145/237814.237866, ISBN 0-89791-785-5, arXiv:quant-ph/9605043 .
  6. Algorithms for quantum computation: discrete logarithms and factoring. W: Peter W. Shor: Proceedings of the 35th IEEE Symposium on Foundations of Computer Science. 1994, s. 124–134. DOI: 10.1109/SFCS.1994.365700.

Zobacz też

Linki zewnętrzne

  • Deutsch’s lecture about Deutsch algorithm (ang.)
  • Implementation of the Deutsch-Jozsa algorithm in the Scala programming language (ang.)