Odkrywanie algorytmów kwantowych za pomoc¡ programowania

advertisement
Odkrywanie algorytmów kwantowych
za pomocą programowania genetycznego
Piotr Rybak, Magda Saramak
Abstrakt: Komputery kwantowe, poza byciem szalenie interesującym konceptem, są szansą na szybsze znajdowanie rozwiązań wielu problemów. Niestety jedyne co
udało się zrobić na polu algorytmiki kwantowej, to wymyślenie wielu modyfikacji dwóch od dawna znanych algorytmów - Shora i Grovera. Skomplikowany i mało intuicyjny
model teoretyczny nie ułatwia konstruowania nowych algorytmów, dlatego też próbuje się znajdować je innymi metodami. Jedną z nich jest automatyczne odkrywanie
algorytmów kwantowych za pomocą programowania genetycznego.
Komputer kwantowy
Splątanie
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ń.
Wyniki
Nie zawsze można rozłożyć stan układu na iloczyny tensorowe
pojedynczych kubitów. Wynika to z braku niezależności
kubitów. Przykładowo, stanu układu x nie można rozłożyć na
iloczyn tensorowy stanów pojedynczych kubitów:
1
√
2
Problemy techniczne
Ideę komputera kwantowego zaproponował Richard Feynman.
Niestety idea sprzed kilkudziesięciu lat nadal nie została
wprowadzona w życie. Problemy techniczne na jakie natykamy
się próbując konstruować komputer kwantowy wciąż stanowią
dużą przeszkodę. Badania jednak trwają, działają już komputery
kwantowe złożone z kilku kubitów, oparte na pułapkach
jonowych. Planuje się też testy budowy komputera kwantowego
w oparciu o kropki kwantowe. Budowane komputery, choć
sprawne, mają wciąż niewielkie możliwości.
Problemy techniczne przy budowie komputera kwantowego
wynikają z jego natury. Operacje jakie są wykonywane w
komputerze kwantowym są możliwe tylko w ściśle
kontrolowanych warunkach. Fizyczny system kwantowego
komputera musi być całkowicie odizolowany od otoczenia. Jak
wiemy z mechaniki kwantowej - obserwacja ma wpływ na stan
układu i o ile w komputerach, do których jesteśmy
przyzwyczajeni, nie ma to specjalnego znaczenia, to dla
komputera kwantowego jest to poważnym problemem.
Komputer kwantowy to układ obiektów atomowej skali, które
mają dwa graniczne, rozróżnialne dla nas stany (uznajemy je za
bitowe 0 oraz 1). Do budowy komputera kwantowego nie nadają
się obiekty większe - ich złożoność uniemożliwiałaby
kontrolowanie układu. Komputer kwantowy „niszczą” zderzające
się z układem cząsteczki powietrza, zmiany temperatury,
wszystko to, co ma choćby marginalny wpływ na układ.
 
0
x= = ? ⊗ ?
0
√1
2
Algorytm Deutsch’a
Mamy daną jedno wejściową bramkę „czarną skrzynkę”, którą
możemy wywołać tylko raz i której postaci nie znamy. Chcemy
wiedzieć czy ta bramka dla dowolnych wejść daje ten sam
wynik, czy różne wyniki. Klasyczne rozwiązanie problemu
wymaga oczywiście dwóch odwołań do „skrzynki”. Algorytm
którego szukamy ma potrafić to zrobić w jednym odwołaniu
(jest to znany algorytm, pierwszy w którym pokazano przewagę
algorytmów kwantowych).
Kubity układu znajdującego się w stanie x są splątane - ich
stany zależą od siebie nawzajem.
Bramki kubitowe
Operacje na kubitach są wykonywane za pomocą bramek
kubitowych. Bramkę kubitową reprezentuje się za pomocą
macierzy unitarnych. Dla pojedynczego kubitu macierz ma
rozmiar 2 × 2 a dla układu kubitów 2n × 2n gdzie n to liczba
kubitów w układzie. Przykładowymi bramkami działającymi na
pojedynczy kubit są:
!
1
1
√
√
0 1
2
2
N OT =
H = 1
...
1
√ −√
1 0
2
2
Wynikiem działania bramki X na układ kubitów w stanie S jest
iloczyn: S · X .
Algorytm kwantowy
Algorytm kwantowy można zapisać jako ciąg bramek.
Przykłądowy zapis algorytmu Deutsch’a wygląda następująco:
< N, 1 >< H, 0 >< H, 1 >< F, 0, 1 >< H, 0 >
Algorytm Grover’a
Daną mamy „czarną skrzynkę” o której wiemy, że dla jednego
wejścia (wielokubitowego) zwraca jedynkę, a dla reszty zero.
Możemy traktować ten problem jako problem wyszukiwania w
bazie danych z jednym elementem pasującym do kryteriów
wyszukiwania.
Znany jest kwantowy algorytm rozwiązujący ten problem o
dowolnej
p liczbie kubitów z dużym prawdopodobieństwem w
czasie (n). W procesie ewolucyjnym skupiono się na
problemie z dwoma wejściami (czterema elementami w bazie
danych), który wymaga tylko jednego odwołania do czarnej
skrzynki.
Bit a kubit
W klasycznym komputerze podstawową jednostką informacji
jest bit, mogący przebywać w dwóch stanach: 0 lub 1.
Podstawową jednostką informacji komputera kwantowego jest
kubit. Może się on znajdować nie tylko w jednym z dwóch
podstawowych stanów, oznaczanych tak samo jak w przypadku
bitów - 0 i 1, ale również w superpozycji tych stanów.
Dowolny bit czy kubit można zapisać w postaci wektora o
dwóch współrzędnych. Bit może występować w dwóch stanach:
0
1
b0 =
lub
b1 =
1
0
natomiast kubit może wystąpić w kontinuum stanów pośrednich
pomiędzy stanem b0 a b1, jeśli tylko moduły kwadratów obu
współrzędnych wektorowej postaci kubitu sumują się do jedynki.
I tak kubit może się znajdować np. w stanie:
!
!
1
3
√
qH =
2
− √12
lub qi =
5
4i
5
lub
...
Moduł kwadratu pierwszej współrzędnej wektora odpowiada
prawdopodobieństwu uzyskania 0 przy pomiarze wartości
dowolnego kubitu, natomiast moduł kwadratu drugiej
współrzędnej - prawdopodobieństwu uzyskania 1.
Układ kubitów
Wektor stanu dla układu wielokubitowego określa się za pomocą
iloczynu tensorowego. Operacja ta jest bardzo istotna dla
teoretycznego modelu komputera kwantowego. Dla dwóch
kubitów v i w wektor stanu układu v ⊗ w wygląda
następująco:


α·γ


α
γ
α · δ 
v=
w=
v⊗w =

β
δ
β
·
γ


β·δ
Podobnie określamy stan dla układu dowolnej liczby kubitów.
Otrzymujemy więc dla n kubitów zestaw 2n liczb, określających
stan rejestru kubitów.
http://www.knf.ifd.uni.wroc.pl
Algorytmy ewolucyjne
Algorytmy ewolucyjne zostały zaproponowane w 1975 roku
przez Johna Hollanda. Pomysł czerpie z mechanizmu
przyrodniczej ewolucji i przekazywania genów potomstwu.
Algorytm ewolucyjny jest iteracyjny. W każdej iteracji z
istniejącej populacji rodziców tworzona jest, przy pomocy
operatorów reprodukcji, populacja potomków. Z nowej populacji
najlepsi osobnicy wybierani są jako następni rodzice. Wśród
operatorów reprodukcji wyróżniamy mutację i krzyżowanie.
W wyniku mutacji z jednego rodzica powstaje nowy potomek,
w wyniku krzyżowania - z dwóch.
Idea algorytmów ewolucyjnych opiera się na założeniu, że z
dwóch dobrych rodziców możemy uzyskać przy pomocy
pewnych operacji lepszego potomka. Tak więc jeśli chcemy
wykorzystać algorytm ewolucyjny do odkrywania nowych
algorytmów kwantowych, musimy założyć, że z dwóch prawie
dobrych programów (działających prawie tak, jak tego
oczekujemy) możemy uzyskać program działający lepiej.
Programowanie genetyczne
Programowaniem genetycznym nazywamy algorytm
ewolucyjnym, w którym zamiast wektorów binarnych występują
programy, a operatory reprodukcji są do nich przystosowane.
Mutacja: Dodanie bramki, usunięcie bramki, zmiana argumentu
bramki, odwrócenie kolejności wykorzystania bramek, . . .
Krzyżowanie: Cięcie osobników, wymiana operacji na
poszczególnych kubitach, . . .
Dalsze kroki
W całej tematyce istnieje wiele kwestii wymagających badań:
• Sprawdzenie skuteczności różnych operatorów.
• Ewolucja ogólnego algorytmu (względem liczby kubitów).
• Ewolucja większych algorytmów.
• Przyspieszenie symulacji.
• Testy minimalizacji różnych funkcji.
• Poprawa algorytmów utworzonych metodami teoretycznymi.
• ...
Literatura
Automatic Quantum Computer Programming. A Genetic
Programming Approach, Lee Spector, Springer (2004)
A review of procedures to evolve quantum algorithms Adrian
Gepp, Phil Stocks, Genetic Programming And Evolvable
Machines (Volume 10, Number 2, 2009)
Quantum Computation Lectures John Watrous, University of
Calgary, 2006
Quantum Computer Science. An introduction. David Mermin,
Cambridge University Press, 2007
http://www.wfa.uni.wroc.pl
Download