Koło naukowe fizyków Migacz, Uniwersytet Wrocławski
Komputer kwantowy - co to właściwie jest? Komputer kwantowy Komputer, którego zasada działania nie może zostać wyjaśniona bez użycia formalizmu mechaniki kwantowej. Wykorzystuje on zjawiska opisywane przez jej formalizm do obliczeń. Ideę komputera kwantowego zaproponował po raz pierwszy Richard Feynman. Komputer klasyczny potrzebuje wykładniczego czasu (względem rozmiaru zadania, czyli liczby kubitów) do wykonania symulacji opartej na formaliźmie mechaniki kwantowej. Gdyby jednak zbudować maszynę, która działa wykorzystując mechanikę kwantową - taką symulację można by przeprowadzić w zdecydowanie krótszym czasie.
Pierwszy komputer kwantowy Wykonany w 1998 roku przez Neila Gershenfelda, Isaac L. Chuanga i Marka Kubineca. Działał na dwóch kubitach. Wykorzystano zjawisko magnetycznego rezonansu jądrowego (NMR - Nuclear Magnetic Resonance). Procesorem były cząsteczki chloroformu. Do obliczeń wykorzystano spiny cząstek, którymi manipulowano przy pomocy zewnętrznego pola magnetycznego. Fizyczne ograniczenie Nie można zbudować komputera kwantowego opartego na NMR o liczbie kubitów większej niż 7.
Inne pomysły Wstęp Konstruuje się także komputery kwantowe działające na jonach umieszczonych w specjalnych pułapkach (schłodzony, pojedynczy jon umieszcza się w specjalnym polu elektrycznym w celu unieruchomienia), rozważa się również użycie tzw. kropek kwantowych (są to struktury o rozmiarach nanometrowych w ciałach stałych, wytwarzane laboratoryjnie, w których ruch nośników ładunku jest ograniczony we wszystkich trzech kierunkach przestrzennych). Fizyczne ograniczenie Pułapki są duże i kosztowne, a operacje na kubitach (jonach w pułapkach) bardzo ciężkie w realizacji i, co gorsza, nie zawsze działające prawidłowo. Możliwości i ograniczenia komputera kwantowego zbudowanego na kropkach kwantowych nie zostały jeszcze sprawdzone w praktyce.
Budowane komputery kwantowe, choć sprawne, mają wciąż niewielkie możliwości. Problemy techniczne przy budowie komputera kwantowego wynikają z jego natury. Fizyczny system kwantowego komputera musi być całkowicie odizolowany od otoczenia. Jak wiadomo - obserwacja ma wpływ na stan układu i o ile w komputerach klasycznych nie ma to specjalnego znaczenia, to dla komputera kwantowego jest to poważnym problemem. Komputer kwantowy niszczą zderzające się z układem cząsteczki powietrza, zmiany temperatury, cokolwiek. Częstokroć same elementy z których składa się komputer kwantowy powodują jego uszkodzenie gdyż oddziałują ze sobą w sposób, który jest niepożądany czy niekontrolowany.
Dekoherencja Mechanizm poprzez który fizyczny system komputera kwantowego oddziałuje z otoczeniem, w konsekwencji zmieniając swój stan. efekt ten jest nieodwracalny. Istnieją co prawda sposoby polegające na korekcie błędów spowodowanych dekoherencją, ale nie są one doskonałe i powodują skomplikowanie układu. A im większy i bardziej skomplikowany układ, tym łatwiej o dekoherencję.
Nic jednak nie stoi na przeszkodzie by zająć się teorią algorytmów kwantowych, póki nauka wciąż pracuje nad budową coraz to lepszych komputerów kwantowych.
Prosty model probabilistyczny X - urządzenie, które może się znajdować w jednym ze stanów z jakiegoś określonego zbioru, powiedzmy ze zbioru {0,1}. v - wektor określający prawdopodobieństwa wystąpienia danych stanów urządzenia X. v = α = β prawdopodobieństwo wystąpienia stanu 0 prawdopodobieństwo wystąpienia stanu 1
Wstęp Klasyczny bit informacji, jaki dobrze znamy, możemy uznać za obiekt przyjmujący dwie możliwe wartości: 0 lub 1, jedną z prawdopodobieństwem równym 1, drugą - 0. b 0 = 1 0 b 1 = 0 1 Kubit jest nieco bardziej niezdecydowany. Może się znajdować w dowolnym spośród kontinuum stanów, będących superpozycją stanu 0 i 1. Dopiero obserwacja powoduje przejście do stanu stacjonarnego kubitu - przyjmuje on wówczas wartość 0 lub 1.
Kubit Wstęp Wektor ψ określający stan kubitu nieco różni się od wprowadzonego wcześniej modelu probabilistycznego. Współczynniki α i β nie są prawdopodobieństwami, dopiero α i β określają prawdopodobieństwo tego, że kubit po pomiarze znajdzie się w stanie odpowiednio 0 lub 1. Sama superpozycja stanów może być dowolna, α, β C. Przykładowe stany kubitu 1 ( 3 ) 1 5 0 4i 5...
Wstęp Z układem bitów nie ma żadnego problemu - jeśli mamy 3 bity, to układ może się znajdować w jednym z 3 stanów i znajduje się zawsze w jednym z nich. Z układem kubitów nie jest już tak prosto. Wróćmy na chwilę do modelu probabilistycznego. Mamy teraz już nie, a 3 możliwych stanów układu, dlatego wektor prawdopodobieństwa ma 8 współrzędnych. Każda z nich odpowiada prawdopodobieństwu tego, że układ znajduje się w stanie 000, 001, 010, 011,... prawdopodobieństwo wystąpienia stanu 000 prawdopodobieństwo wystąpienia stanu 001 v =. prawdopodobieństwo wystąpienia stanu 111
Przykład Wstęp Dla przykładu - układ dwóch kubitów jest określony wektorem: v = 0 i 1 Zatem prawdopodobieństwa poszczególnych stanów wynoszą: prawdopodobieństwo wystąpienia stanu 00: 1 = 1, prawdopodobieństwo wystąpienia stanu 01: 0 = 0, prawdopodobieństwo wystąpienia stanu 10: i = 1 4, prawdopodobieństwo wystąpienia stanu 11: 1 = 1 4,
Iloczyn tensorowy Wstęp Załóżmy, że mamy dwa niezależne urządzenia X oraz Y, które możemy opisać za pomocą wprowadzonego wcześniej modelu probabilistycznego. Wektor prawdopodobieństwa dla układu dwóch urządzeń można zapisać jako iloczyn tensorowy, gdyż jeśli urządzenia są niezależne, to prawdopodobieństwa po prostu mnożymy: prawdopodobieństwo wystąpienia stanu 00 prawdopodobieństwo wystąpienia stanu 01 v xy = v x v y = prawdopodobieństwo wystąpienia stanu 10 prawdopodobieństwo wystąpienia stanu 11
Iloczyn tensorowy - przypomnienie α β δ = γ α δ α γ β δ β γ b1,1 b a 1, 1,1 b a1,1 a 1, b1,1 b 1,,1 b, = a,1 a, b,1 b, b1,1 b a 1,,1 b,1 b, b1,1 b a 1, 1, b,1 b, b1,1 b a 1,, b,1 b,
Ważną obserwacją jest fakt, że nie wszystkie wektory prawdopodobieństw v można rozłożyć na iloczyn tensorowy innych wektorów. Popatrzmy na wektor: 1 0 v = 0 1 Nie można go w żaden sposób rozłożyć na iloczyn tensorowy dwóch wektorów. Dzieje się tak, ponieważ jeśli v opisuje stan urządzeń X oraz Y, to urządzenia te nie są niezależne.
Jeśli przełożyć to na układ dwóch kubitów, możemy powiedzieć, że są one splątane. Ich stany są od siebie zależne. 1 0 v q = 0 =?? Jak wyglądają operacje bramkowe na układzie kubitów? Co się dzieje, jeśli kubity są splątane?
logiczne Wstęp Skoro już mamy bity (czy kubity), to chcielibyśmy móc wykonywać na nich jakieś operacje. Każdy program można przestawić jako ciąg bramek logicznych (kubitowych), a bramkę logiczną można zapisać w postaci macierzowej. Przykładowe bramki logiczne 0 1 1 0 NOT = I = 1 0 0 1 INIT 1 = 0 0 1 1... Przy pomocy takich bramek możemy budować układy logiczne, reprezentujące programy.
kubitowe Wstęp W przypadku kubitów jest podobnie. Macierze reprezentujące operacje wykonywane na pojedynczym kubicie są tak samo macierzami rozmiarów. Przykładowe bramki kubitowe 0 1 NOT = H = 1 0 cos(θ) sin(θ) R(θ) = sin(θ) cos(θ) ( 1 1 1 Przy ich pomocy można budować układy bramek kubitowych, reprezentujące programy.... )
Przykład Wstęp Załóżmy, że Jacek ma kubit i chce się dowiedzieć w której z dwóch superpozycji się on znajduje: v 0 = Co powinien zrobić? v 1 = 1
Przykład Wstęp Mierzenie kubitu niczego nie da, bowiem w obu przypadkach dostaniemy po prostu losową wartość - 0 lub 1. Możemy jednak, korzystając z tego jak wyglądają obie superpozycje między kórymi przyszło Jackowi decydować, zastosować transformację H i otrzymać: 1 Hv 0 = 1 = 1 0 Hv 1 = 0 1 Jeśli teraz Jacek dokona pomiaru odpowiedź będzie jasna.
Jeśli mamy układ dwóch kubitów i chcemy wykonać jakąś operację na jednym z nich - drugi również może to odczuć! Wszystko dlatego, że kubity, w przeciwieństwie do bitów, nie są do końca niezależne. Operacji trzeba zatem dokonać na wektorze stanów układu a macierz operacji konstruujemy przez iloczyn tensorowy. Przykład NOT H = 0 1 1 0 ( 1 1 1 1 ) = 0 0 1 1 0 0 1 1 1 1 0 0 0 0
Macierz, którą otrzymaliśmy w wyniku iloczynu tensorowego jest poprawną macierzą operacji, która odpowiada zanegowaniu pierwszego kubitu oraz zastosowania transformacji Hadamard a na drugim kubicie. Działa ona nawet w przypadku splątanych kubitów: Przykład 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 = 1 1 1 1 0 0 1
Przepis jest zatem następujący: dla układu n kubitów mamy wektor reprezentujący stan układu o n współrzędnych a macierze reprezentujące bramki kubitowe muszą mieć wymiar n n. Macierze te konstruujemy przy pomocy iloczynu tensorowego. Istnieją również bardzo ważne bramki, których nie można zapisać za pomocą iloczynu tensorowego. Są to min. bramka CNOT (Controlled NOT) oraz bramka Toffoli ego (controlled controlled NOT). CNOT, Toffoli 1 0 0 0 0 1 0 0 CNOT = 0 0 0 1 0 0 1 0
Mamy już wszystko czego potrzeba by zajmować się algorytmami kwantowymi. Można je bowiem przestawiać za pomocą bramek kubitowych, dokładnie tak, jak na poniższym obrazku.
Literatura Wstęp Quantum Computation Lectures John Watrous University of Calgary, 006 Quantum Computer Science. An introduction. N. David Mermin Cambridge University Press, 007 Quantum Circuit Simulation George F. Viamontes, Igor L. Markov, John P. Hayes Springer, 009