Programowanie komputerów kwantowych

Już możemy programować komputery kwantowe!

IBM udostępnia platformę programistyczną (framework), na której możemy ćwiczyć programowanie komputerów kwantowych.

Pięciokubitowy komputer kwantowy IBM, dostępny za darmo przez internet, umożliwia wykonywanie własnych aplikacji kwantowych.

IBM ma do dyspozycji użytkowników kilka urządzeń kwantowych i symulator:

  • 5 kubitów – IBM Q 5 Tenerife,
  • 14 kubitów – IBM Q 14 Melbourne,
  • 16 kubitów – IBM Q 16 Rüschlikon,
  • 20 kubitów – IBM Q 20 Tokyo – dostępny tylko dla klientów IBM.
  • symulator 32 kubity – IBM Q QASM 32 Q Simulator.

Symulator ma tę zaletę, że nie robi błędów, jak to się zdarza rzeczywistym procesorom kwantowym, więc najlepiej nadaje się do nauki programowania. Ponadto dostęp do symulatora jest nielimitowany, zaś do prawdziwych komputerów kwantowych darmowy dostęp jest ograniczany do kilku eksperymentów.

IBM szacuje, że pięćdziesięciokubitowy komputer kwantowy będzie miał taką moc obliczeniową, jak dzisiejsze najszybsze komputery.

Komputery kwantowe mogą znaleźć zastosowanie do rozwiązywania niektórych problemów, zwłaszcza o dużej złożoności obliczeniowej. Przyczyną jest stocha styczność wyniku – nie jest on tak zdeterminowany, jak w komputerach cyfrowych. (Podobnie jest w sieciach neuronowych, które znalazły swoje specyficzne zastosowania.)

Komputer kwantowy

Komputer Kwantowy IBM
Komputer Kwantowy IBM

Komputer kwantowy, choć pracuje na cząstkach elementarnych, wcale nie jest mały. Mierzenie kwantów wymaga temperatury poniżej 1 Kelvina, potrzebna jest bardzo mocna zamrażarka.

Strona firmowa IBM na temat komputerów kwantowych: https://www.research.ibm.com/ibm-q/.

Programowanie

Programowanie komputerów kwantowych różni się bardzo od programowania komputerów cyfrowych przy pomocy języków, a przypomina układanie obwodów komputerów analogowych.

Urządzenia kwantowe IBM można wykorzystywać za pomocą:

  • zestawu do tworzenia oprogramowania kwantowego „Qiskit” (https://qiskit.org/),
  • wirtualnego interfejsu do kodowania komputera kwantowego „IBM Q Experience” z programem Composer.

Podręcznik programowania znajdziemy na stronie https://quantumexperience.ng.bluemix.net.

W programie Composer mamy pięciolinię (gdy pracujemy na komputerze pięciokubitowym), na której będziemy umieszczać elementy operujące na kwantach.

Interfejs programu Composer

Programowanie komputerów kwantowych
Programowanie komputerów kwantowych

Każda linia reprezentuje 1 kubit. Podobnie jak w przypadku nut, każdy kubit ma inną częstotliwość.

Po umieszczeniu na linii wybranego kubitu elementów działających na kwantach („bramek”) i uruchomieniu programu, na kubitach będą odbywać się kolejne operacje zdefiniowane bramkami, w kolejności od lewej do prawej strony pięciolinii.

W prawej części interfejsu widoczne są bramki, które można chwytać myszką i przeciągać na linię wybranego kubitu i w wybrane jej miejsce, które decyduje o sekwencji działań.

Każdy obwód (program ułożony z bramek) musi kończyć się bramką pomiarową, która odczytuje efekt eksperymentu.

Bramka pomiarowa umieszczona na kubicie nr 0
Bramka pomiarowa umieszczona na kubicie nr 0

Bramki zmieniają stan kubitów, bramka pomiarowa odczytuje ich stan.Wynikiem działania programu (eksperymentu, jak go nazywa IBM) jest wykres słupkowy pokazujący, ile razy każda kombinacja kubitów wystąpiła w serii. Bowiem po uruchomieniu symulacji (lub pracy komputera kwantowego) ten sam program przeprowadzany jest wielokrotnie.

Przykład rezultatów eksperymentu
Przykład rezultatów eksperymentu

Tu, w wynikach eksperymentów, ujawnia się główna cecha programowania kwantowego: niepewność wyniku.

Kubit uzyskuje oczekiwany stan z jakimś prawdopodobieństwem, zależnym od wykonywanych na nim działań. Dlatego przeprowadzana jest od razu cała seria tych samych sekwencji działań, której wynik reprezentuje wykres słupkowy (na załączonym przykładzie seria wynosiła 100 sekwencji).

Kubit

Kubit jest jednostką informacji w kwantowym świecie, jest odpowiednikiem bitu.

W odróżnieniu od bitu, kubit może przyjmować nieskończoną ilość wartości.

Ilustracją stanu kubitu jest strefa Blocha.

Strefa Blocha
Strefa Blocha

Fizycznie rolę kubitu spełnia spin elektronu. Ponieważ spin może przyjmować różne kierunki i zwroty w przestrzeni, to stan kubitu może przyjmować różne wartości na strefie Blocha.

Kąt ϕ do osi x mówi o fazie kubitu.

Podstawowymi stanami kubitu są |0> i |1> (bieguny sfery Blocha na osi z). |0> i |1> to oznaczenia kwantowego 0 i kwantowej 1.

|0>jest stanem o najniższej energii i od niego rozpoczyna się programowanie.

Bramka pomiarowa potrafi mierzyć tylko stany podstawowe |0> i |1>, a o innych stanach pośrednich możemy wnioskować na podstawie znajomości funkcji bramek biorących udział w eksperymencie.

Bramki

Wystarczy zarejestrować się na stronie internetowej https://quantumexperience.ng.bluemix.net/qx/signup, aby móc sprawdzać działanie różnych obwodów, korzystając z programu Composer .W przewodniku przy opisach bramek są załączone linki do symulacji działania obwodów skonfigurowanych z użyciem opisywanych bramek.

  • Bramka ”X”, znana jako „bit-flip”, odwraca stan kubitu z |0> do |1> lub z |1> do |0>.

(Jest to działanie podobne do klasycznej bramki NOT.)

Działanie bramki X
Działanie bramki X
  • Bramka „H” tworzy superpozycję stanów podstawowych.

Superpozycja to dziwny stan, w którym |0> i |1> są równie prawdopodobne,a wektor kubitu jest na osi x.

Gdy wektor kubitu ma zwrot zgodny z osią x, stan superpozycji oznacza się symbolem |+>. Natomiast |-> oznacza stan superpozycji z wektorem skierowanym wzdłuż osi -x. Aby go uzyskać, przed bramką H wstawiamy bramkę X.

Eksperymentalnie nie możemy mierzyć stanów superpozycji.

(H działa jak rzucenie monetą – póki wiruje zmienia stan, a gdy ją złapiemy, to zmierzymy stan.)

Choć bramka H powoduje powstanie losowego stanu, to parzysta liczba bramek H daje stan zdeterminowany:

  • |0> H H daje |0>,
  • |0> X H H daje |1>.
Efekt działania pojedynczej bramki superpozycji
Efekt działania pojedynczej bramki superpozycji

Bramki zmieniające fazę kubitu:

  • Z obraca wektor o 180 stopni wokół osi z,
  • S obraca wektor o 90 stopni wokół osi z,
  • S+ obraca wektor o -90 stopni wokół osi z,
  • T obraca wektor o 45 stopni wokół osi z,
  • T+ obraca wektor o -45 stopni wokół osi z.

Gdy wejściowy stan kubitu jest |0> lub |1>, zmiana fazy nic nie wnosi do wyniku działania. Ale jeśli wprowadzimy kubit w stan superpozycji |+> lub |->, bramka zmieniająca fazę wpływa na wynik.

Przykład wpływu bramki Z na stan superpozycji
Przykład wpływu bramki Z na stan superpozycji

Razem ze wzbudzającą superpozycję bramką H bramki zmieniające fazę mogą tworzyć następujące sekwencje:

  • |0>H H daje 0
  • |0>H T H daje 0 z prawdopodobieństwem 85%
  • |0>H S H daje 0 z prawdopodobieństwem 50%
  • |0>H S T H daje 1 z prawdopodobieństwem 85%
  • |0>H Z H daje 1.

Wykorzystywanie 2 kubitów

Jeśli odczytujemy dane z 2 linii kubitów, możliwe są 4 stany: |00>,|01>, |10>, |11>.

W oznaczeniach tych pierwszy kubit (q0) jest zawsze wyświetlany po prawej stronie.

Aby programować różne funkcje, potrzeba bramek, które wykonują logikę warunkową między kubitami, co oznacza, że stan jednego kubitu zależy od stanu innego.

Bramka CNOT

Brama warunkowa, której użyjemy, to Controlled-NOT lub CNOT. Oznaczeniem jej jest + w kółku.

Działanie bramki CNOT na stanach bazowych polega na odwróceniu zwrotu (jakbramka X) docelowego kubitu, ale tylko wtedy,gdy kontrolny kubit to |1>; inaczej CNOT nic nie robi.

Jeśli pierwszy kubit (ten z prawej) jest kontrolny, to:

  • |00>pozostanie |00>,
  • |10>pozostanie |10>,
  • |01>przejdzie w |11>,
  • |11>przejdzie w |01>.

Aby użyć bramki warunkowej w programie Composer, należy bramkę CNOT przeciągnąć na linię docelowego kubitu, a następnie kliknąć kubit kontrolny, dodając w ten sposób połączenie między nimi.

Przykładzastosowania bramki warunkowej z warunkiem spełnionym
Przykładzastosowania bramki warunkowej z warunkiem spełnionym
Rezultatdziałania bramki warunkowej z |1> na jej wejściu i |0> nawejściu kontrolowanego kubitu” class=”wp-image-24″/><figcaption>Rezultatdziałania bramki warunkowej z |1> na jej wejściu i |0> nawejściu kontrolowanego kubitu</figcaption></figure></div>



<h2 class= Splątanie

Kiedy mierzony jest jeden z kubitów będący w stanie splątania, w dowolnej osi pomiarowej, zachowuje się on losowo, ale jego losowe zachowanie pozwala dokładnie przewidzieć, jak zachowywałby się inny kubit mierzony wzdłuż tej samej osi.

Przykład stanu splątania
Przykład stanu splątania

Dalsze informacje

Pełny przewodnik użytkownika komputerów kwantowych IBM zaczyna się na stronie internetowej https://quantumexperience.ng.bluemix.net/qx/tutorial?sectionId=full-user-guide&page=introduction.

Można tam znaleźć m.in. przykłady kwantowych algorytmów.