Odkrywanie algorytmów kwantowych za pomocą programowania genetycznego Piotr Rybak Koło naukowe fizyków Migacz, Uniwersytet Wrocławski Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 1 / 17
Spis treści 1 Problem znajdowania algorytmów kwantowych 2 Algorytmy ewolucyjne 3 Zastosowanie algorytmów ewolucyjnych w algorytmice kwantowej 4 Przykłady 5 Podsumowanie Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 2 / 17
Podstawy zagadnienia Motywacja Szansa na fizyczną implementację. Istotnie szybsze obliczenia niż na klasycznych komputerach (rozkład liczby na czynniki pierwsze w czasie wielomianowym, znajdowanie danych w bazie w średnim czasie O( n)). Problemy Model obliczeń kwantowych jest znacząco różny od modelu klasycznego. Interesują nas tylko algorytmy sprawniejsze niż na klasycznych komputerach. Wczesne komputery kwantowe są bardzo ograniczone (liczba kubitów, liczba operacji w algorytmie), więc algorytmy, które chcielibyśmy używać w praktyce, powinny być możliwie optymalne pod tym względem. Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 3 / 17
Odkrywanie algorytmów kwantowych jako problem optymalizacyjny Reprezentacja Przez algorytm kwantowy możemy rozumieć ciąg poleceń dla komputera kwantowego, zapisany w postaci bramek. Przykład Zaczynając od kubitów w stanach klasycznych (0,0) nałóż bramkę H na pierwszy kubit, następnie bramkę NOT na drugi kubit po czym bramkę CNOT na pierwszy kubit z drugim kubitem jako kubit kontrolny. < INIT 0, 1 >< INIT 0, 2 >< H, 1 >< NOT, 2 >< CNOT, 1, 2 > Przestrzeń Tak rozumiane algorytmy kwantowe możemy utożsamiać z elementami przestrzeni na których można wykonywać operację (dodanie bramki, odjęcie bramki, połączenie dwóch algorytmów,... ). Dodatkowo z każdym algorytmem powiązane są pewne wielkości, przede wszystkim szansa na uzyskanie z układu takiego wyjścia jakie oczekujemy, ale i długość układu, krotność wykorzystania poszczególnych bramek. Problem znalezienia konkretnego algorytmu kwantowego zredukujemy do problemu optymalizacji (maksymalizacji) szansy na uzyskanie oczekiwanego wyniku. Możemy również starać się jednocześnie minimalizować inne właściwości (liczbę bramek). Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 4 / 17
Metody optymalizacji Problem Zdefiniowany problem jest problemem optymalizacji dyskretnej o nieregularnej strukturze. To znaczy, że nie mamy dokładnych i szybkich metod rozwiązywania tego problemu. Przegląd zupełny Przejrzenie całej przestrzeni w celu znalezienia maksimum jest praktycznie niemożliwe. Byłoby to wykonywalne gdyby ograniczyć długość algorytmu przez jakąś stałą, ale ta stała musiałaby być duża co znowu prowadzi do problemu niemożliwego obliczeniowo. Nie będę się zajmować takimi metodami. Metody heurystyczne Szukamy możliwie dobrego rozwiązania problemu godząc się na to, że nie uda nam się znaleźć najlepszego. Możemy stosować bardzo różne metody, od przeszukiwania lokalnego przez próbkowanie losowe do algorytmów populacyjnych. Takie podejście zwykle daje satysfakcjonujące rezultaty. Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 5 / 17
Algorytmy ewolucyjne Historia Algorytmy ewolucyjne zostały zaproponowane w 1975 roku przez Johna Hollanda, początkowo służyły do optymalizacji wektorów binarnych (poszukiwań wektorów jak najlepiej spełniających podane kryteria). Pomysł mocno czerpie z mechanizmu przyrodniczej ewolucji i przekazywania genów potomstwu. Algorytm Algorytm jest iteracyjny. W każdej iteracji z istniejącej populacji rodziców tworzona jest, przy pomocy operatorów reprodukcji populacja potomków. Z populacji potomków najlepsi osobnicy wybierani są do następnej populacji jako rodzice. Głównym założeniem, które uzasadnia wykorzystanie algorytmu, jest że z dobrych rodziców mamy szansę uzyskać jeszcze lepszego potomka (łącząc dobre cechy każdego z rodziców). Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 6 / 17
Algorytmy ewolucyjne - klasyczne operatory reprodukcji Mutacja Z jednego rodzica powstaje jeden nowy osobnik. Osobnik tworzony jest poprzez odwrócenie bitów rodzica z jakimś (przeważnie małym) prawdopodobieństwem. Krzyżowanie Z dwójki rodziców powstaje dwójka potomków. Wybierany jest punkt cięcia, pierwszy potomek dostaje pierwszą część drugiego rodzica, a drugą część pierwszego rodzica. Drugi potomek uzyskuje pozostałe geny. Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 7 / 17
Programowanie genetyczne dla komputera kwantowego Programowanie genetyczne Programowaniem genetycznym nazywamy algorytm ewolucyjnym w którym zamiast wektorów binarnych występują programy, a operatory reprodukcji są do nich przystosowane. Reprezentacja dla algorytmów kwantowych Najprostszą możliwą reprezentacją jest reprezentacja bezpośrednia. Reprezentujemy algorytm jako ciąg bramek z definicjami na których kubitach działają odpowiednie bramki. Operatory reprodukcji dla algorytmów kwantowych 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,... Od doboru operatorów reprodukcji zależy skuteczność algorytmu, więc jest to istotne zagadnienie, które operatory sprawdzają się najlepiej można przekonać się w doświadczeniu. Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 8 / 17
Zmiana reprezentacji dla algorytmów kwantowych Pomysł Zamiast zajmować się bezpośrednio ewolucją programów na komputer kwantowy można ewoluować klasyczne programy, których zadaniem jest wytworzenie algorytmu kwantowego. Programy można przedstawić w prostym języku imperatywnym (C podobnym) dodając do niego instrukcję dodaj bramkę(nazwa bramki, argumenty). Wprowadzając taką modyfikację możemy wykorzystywać klasyczne techniki programowania genetycznego, a poza tym przygotować sposób na opracowanie algorytmów kwantowych dla dowolnej liczby kubitów. Przykład Odwroc_wszystkie(liczba_kubitow) { ak = new algorytm_kwantowy(); for (i = 0; i < liczba_kubitów; ++i) ak.dodaj_bramke(not,i); return ak; } Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 9 / 17
Optymalizacja z uwzględnieniem długości Motywacja Jak wspominałem wcześniej często zależy nam na tym, żeby mieć jak najmniejsze algorytmy rozwiązujące dany problem. Aby to osiągnąć warto uwzględnić w procesie ewolucji liczbę wykorzystanych bramek. Sposoby Problem można rozwiązać na bardzo wiele sposobów, na przykład: Akceptowanie tylko rozwiązań o liczbie bramek nie przekraczającej pewnej stałej. Optymalizacja względem wartości będącej kombinacją szansy na powodzenie algorytmu i długości algorytmu. Porządek leksykograficzny z prawdopodobieństwem powodzenia jako pierwszym parametrem, a długością jako drugim. Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 10 / 17
Problem Deutsch-a Problem 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. Trochę dokładniej wynik działania bramki to: F a, b >= a, F (a) b > Gdzie to XOR. 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). Podejście ewolucyjne Reprezentacja bezpośrednia 100 osobników w populacji. Suma prawdopodobieństw dobrej odpowiedzi we wszystkich przypadkach. Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 11 / 17
Problem Deutsch-a - cd Przebieg ewolucji Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 12 / 17
Problem Deutsch-a z minimalizacją bramek Różnice 300 osobnikw. Leksykograficznie maksymalizacja sumy prawdopodobieństw i minimalizacja liczby bramek. Przebieg ewolucji Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 13 / 17
Problem Grovera Problem 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 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. Podejście ewolucyjne 2500 osobników. Pozostałe parametry jak w Deutsch-a. Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 14 / 17
Problem Grovera - cd Przebieg ewolucji Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 15 / 17
Czym można się zająć 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.... Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 16 / 17
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 Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 17 / 17