Oprogramować kwanty

Choć komputerów kwantowych nie ma i zapewne długo jeszcze nie będzie, już teraz powstają pierwsze języki ich programowania.

Choć komputerów kwantowych nie ma i zapewne długo jeszcze nie będzie, już teraz powstają pierwsze języki ich programowania.

Oprogramować kwanty

Połączenie dwóch światów - Schemat funkcjonowania sterownika urządzenia kwantowego, opartego na klasycznych rozwiązaniach, w którym urządzenie kwantowe jest sterowane przez klasyczny komputer, w świecie specjalistów z zakresu komputerów kwantowych zwany jest modelem QRAM.

Konstrukcja komputera kwantowego jest ogromnym wyzwaniem zarówno dla badań teoretycznych, jak i eksperymentalnych. Obecnie istnieje bowiem zdecydowanie więcej znaków zapytania, niż nawet przybliżonych odpowiedzi. Nie wiadomo nawet jak właściwie miałyby wyglądać mechanika i architektura komputera kwantowego - istnieją jedynie ogólne, teoretyczne koncepcje. Dlatego rozważając, w jaki sposób oprogramować takie komputery, rozsądnym rozwiązaniem będzie odejście od wyobrażeń fizycznej implementacji. Pewne jest, że język programowania komputerów kwantowych musi być językiem wysokiego poziomu abstrakcji - na tyle wysokim, by można było go zastosować do szerokiego spektrum możliwych implementacji maszyn kwantowych.

Poświęcona temu zagadnieniu pionierska praca Toward an architecture for quantum computing (W stronę architektury przetwarzania kwantowego) została przyjęta entuzjastycznie już do momentu opublikowania jej w prestiżowym periodyku naukowym European Physical Journal. Jej autorem jest dr Stefano Bettelli, naukowiec z uniwersytetu Paula Sabatiera w Tuluzie we Francji.

Zagubione intuicje

W "klasycznych" komputerach podstawowe jednostki informacji, jakimi są bity, przyjmują oczywiście dwie możliwe wartości: 1 lub 0. W komputerach kwantowych natomiast bity są zastąpione tzw. kwabitami (qubits), które mogą znajdować się jednocześnie w dwóch różnych stanach, tj. wartość pojedynczego bitu częściowo może być jedynką, zaś częściowo zerem (superpozycja). Dzięki temu rozdwojeniu uzyskuje się narzędzie zrównoleglenia prowadzonych obliczeń (wynikające z kwantowej własności polegającej na tym, że to samo zjawisko dzieje się jednocześnie w wielu różnych miejscach). Natomiast zgodnie z zasadą nieoznaczności, kluczową dla całej fizyki kwantowej, dokonanie pomiaru wartości takiego kwabitu prowadzi do jego przejścia w świat klasycznych wartości, czyli 1 lub 0. W przetwarzaniu kwantowym idzie zatem o to, by odczyt ten opóźnić tak długo, aż stanie się to absolutnie niezbędne. Praktyczna realizacja tego postulatu nie jest trywialnym zadaniem.

Zespół naukowców pod kierownictwem dr. Bettelli zaproponował posłużenie się kwantowymi rejestrami i operatorami. Pierwsze z nich umożliwiają programowi oddziaływanie na poszczególne kwabity - takie rejestry funkcjonują jako wskaźniki lokalizacji, w których znajdują się kwabity w maszynie kwantowej. Wówczas można je przetwarzać za pomocą operatorów kwantowych. Są one w pewnym sensie odpowiednikami logicznych operatorów (negacji, koniunkcji, alternatywy), które są podstawą tworzenia instrukcji w klasycznym programowaniu (przy tworzeniu zdań typu "Jeśli zachodzi A i B oraz nie zachodzi C to wykonaj D"). Funkcjonowanie operatorów kwantowych bazuje natomiast na przekształceniach unitarnych (w algebrze macierzowej) i dostępie do punktów (bramek) kwantowych.

Zespół dr. Bettelli posłużył się obiektowym językiem programowania do implementacji tych unitarnych przekształceń. Owa obiektowość została wykorzystana do pewnego rodzaju integracji klasycznego i kwantowego przetwarzania (to ostatnie zostało potraktowane jako bardziej wyspecjalizowane wcielenie przetwarzania klasycznego). Przy takim podejściu typowe operacje mogą zostać przekształcone w instrukcje fizycznej kontroli na poziomie kwantowym. Tak w ogromnym uproszczeniu można streścić prace zespołu dr. Bettelli.

Zupełnie inaczej

Idea komputerów kwantowych niesie obietnicę przewrotu w informatyce - mają one bowiem pozwolić na nie liniowe, lecz wykładnicze przyspieszenie obliczeń. Za ich pomocą będzie można rozwiązywać zadania właściwie nieobliczalne dzisiaj, a to oznaczałoby także, że wszystkie obecnie istniejące algorytmy kryptograficzne, łącznie z RSA, stałyby się bezużyteczne.

Podstawową zmianą jakościową jest niedeterminizm maszyn kwantowych - a jak wiadomo wszystkie dostępne dzisiaj komputery z definicji działają deterministycznie. To oznacza, że nie można pracy maszyn kwantowych zobrazować jakimś symulatorem zaimplementowanym na współczesnym komputerze. Można jednak stworzyć język, używając jak najbardziej klasycznych narzędzi, który sterowałby pracą takiego urządzenia kwantowego. Język ten powinien być kompletny (pozwalać na implementację dowolnego algorytmu kwantowego), stanowić rozszerzenie klasycznego języka programowania (tak, aby płynnie zintegrować przetwarzanie kwantowe z obróbką wyników tego przetwarzania za pomocą klasycznego komputera) przy jednoczesnym wyraźnym rozdzieleniu obu obszarów. I oczywiście język taki musi być niezależny od konkretnego rozwiązania sprzętowego maszyny kwantowej.

Budowanie takiego języka przed pojawieniem się komputerów kwantowych (choć nie ma pewności, czy kiedyś to nastąpi) nie jest wcale dziwnym przedsięwzięciem. Przecież teoretyczne fundamenty informatyki, zbudowane przez von Neumanna czy Alana Turinga, powstały na długo przedtem, zanim pojawiły się pierwsze komputery. Być może podobnie stanie się w przypadku komputerów kwantowych.

Pełny tekst artykułu Stefana Bettelli jest dostępny pod adresemhttp://arxiv.org/abs/cs/0103009 , zaś kody źródłowe implementacji prototypowego języka programowania komputerów kwantowych: http://sra.itc.it/people/serafini/qlang


TOP 200