Myślenie o obliczeniach komputerowych w terminach mechaniki kwantowej otwiera całkowicie nowe horyzonty. Pojawiają się perspektywy zwiększenia szybkości obliczeń. Zwielokrotnienie mocy obliczeniowej komputera jest bezpośrednią konsekwencją kwantowej natury procesów, w wyniku których następuje przekształcenie danych wejściowych na wyjściowe. Aby to zrozumieć, rozpatrzmy abstrakcyjny model klasycznego obliczenia. Stan początkowy układu fizycznego odpowiada danej wejściowej. Każdą liczbę można zakodować za pomocą dwu cyfr: zera i jedynki. Odpowiadać im będą dwa stany elementarnych układów, z których składa się procesor (w klasycznym komputerze mogą to być dwie, rozróżnialne wartości napięcia w układzie). Aby więc zapisać dowolną liczbę naturalną z przedziału [0, 2N -1] potrzebujemy N takich elementarnych dwustanowych układów. Obliczenie polega na takiej manipulacji stanami, aby w wyniku otrzymać zakodowaną w ten sam sposób liczbę, będącą rezultatem obliczenia. Podkreślmy tu oczywistą rzecz. Jeśli interesuje nas wynik obliczenia dla każdej liczby naturalnej mniejszej od 2N, to musimy dokonać 2N przebiegów procesu.
Wyobraźmy sobie, jak takie obliczenie wyglądałoby w układzie kwantowym. Narzucającym się sposobem zakodowania 1 bitu informacji jest przyporządkowanie dwóch cyfr, 0 i 1, dwóm stanom stacjonarnym układu kwantowego, np. cząstki o spinie 1/2. Kodowanie liczb wielocyfrowych wymaga użycia odpowiednio większej liczby takich cząstek. Mechanika kwantowa jednak pozwala cząstce znajdować się nie tylko w jednym ze stanów o określonej wartości rzutu spinu, ale również w stanie będącym ich dowolną kombinacją liniową. Ten fakt oraz liniowość praw mechaniki kwantowej pozwalają na takie przygotowanie stanu początkowego, aby jednorazowy przebieg procesu obliczeniowego prowadził do stanu końcowego, kodującego w sobie wyniki obliczeń dla wielu różnych wartości danych początkowych. Pozostaje problem odczytania takiego wyniku. Tu, niestety, mechanika kwantowa stawia poważne ograniczenia. Odczytanie wyniku musi polegać na pomiarze stanu końcowego. Prowadzi to do nieodwracalnej jego zmiany, uniemożliwiającej dalsze wykorzystanie w celu znalezienia wyniku dla innej wartości początkowej. Tak więc, podobnie jak w klasycznym komputerze, jeden przebieg procesu obliczeniowego pozwala na znalezienie wyniku dla jednej danej początkowej.
Okazuje się jednak, że na lepiej postawione pytania obliczenia kwantowe dają odpowiedzi wymagające mniejszej liczby procesów obliczeniowych niż komputery klasyczne. Tak np. znalezienie okresu funkcji okresowej wymaga w przypadku klasycznym obliczenia wartości funkcji dla wszystkich argumentów mniejszych od jej okresu. Obliczenia kwantowe mogą być w tym przypadku o wiele efektywniejsze. Zwrócili na to uwagę po raz pierwszy Deutsch i Jozsa [1]. Pionierska praca Deutscha [2], kładąca podstawy teorii komputerów kwantowych, była zainspirowana rozważaniami Feynmana [3]. Podanie przez Shora [4] algorytmu pozwalającego na wykorzystanie komputerów kwantowych dla przyspieszenia rozkładu liczb na czynniki pierwsze (problem ten ma duże znaczenie w kryptografii) wzbudziło falę zainteresowania komputerami kwantowymi. Jak dotąd komputery kwantowe pozostają w sferze teorii. Zaproponowano jednak kilka możliwych rozwiązań praktycznych, stwarzających perspektywy praktycznej realizacji. Proponują one wykorzystanie kropek kwantowych [5], jonów w pułapkach [6], fotonów we wnęce rezonansowej [7] oraz jądrowego rezonansu magnetycznego [8].
Literatura
[1] D. Deutsch, R. Jozsa, Proc. Roy. Soc. 439A, 553 (1992).
[2] D. Deutsch, Proc. Roy. Soc. 400A, 97 (1985).
[3] R. Feynman, Int. J. Theor. Phys. 21, 467 (1982).
[4] P. Shor, Proceedings 35th Annual Symposium on Foundations
of Computer Science (1994), s. 124.
[5] W. Teich, G. Mahler, SFI Studies in the Sciences of
Complexity, t. VIII (1990), s. 289.
[6] J.I. Cirac, P. Zoller, Phys. Rev. Lett. 74, 4091 (1995).
[7] Q. Turchette i in., Phys. Rev. Lett. 75, 4710 (1995).
[8] D. Cory, A. Fahmy, T. Havel, Proceedings of the 4th Workshop
on Physics and Computation (1996), s. 87.