Jak obliczenia kwantowe zmienią programowanie? [Zamknięte]


33

Czym różni się programowanie algorytmu kwantowego? Jak wyglądałby język C, gdyby był zaprojektowany dla kubitów? Czy typy się zmieniły?


Uwaga: nie jestem pewien, czy jest to prawidłowe pytanie. Przepraszam, jeśli nie jest.
MaiaVictor,

4
Myślę, że to jest. Z drugiej strony tak naprawdę nie znam zasad tej witryny. I tak naprawdę nie mam świetnej odpowiedzi na to pytanie, ale znam ten algorytm, który można by wykorzystać do efektywniejszego obliczania liczb całkowitych: arxiv.org/abs/0812.0380
John Davis

3
Myślę, że chociaż ten temat jest wciąż przedmiotem badań naukowych, podstawy hipotetycznego komputera kwantowego są dobrze znane AFAIK, więc na pytanie powinien odpowiedzieć ekspert w danej dziedzinie (którym nie jestem). Głosuję więc, aby go nie zamknąć.
Doc Brown

Odpowiedzi:


17

Kiedy spojrzałem na to jakiś czas temu, było jasne, że algorytmy kwantowe, choć nie są szczególnie szybkie, pozwalają na wykładniczo masywną równoległość. Będą więc świecić w przypadkach, w których wyszukiwanie w przestrzeniach jest niepraktyczne w przypadku sprzętu sekwencyjnego, a nawet masowo równoległego sprzętu sekwencyjnego.

Jedną z właściwości algorytmów kwantowych jest to, że muszą być odwracalne . Dany algorytm można przetłumaczyć na odwracalny, dodając do niego wystarczającą liczbę rejestrów, aby można go było uruchomić wstecz.

Inną właściwością jest to, że uzyskanie odpowiedzi z algorytmu kwantowego jest sprawą trafienia i nieudanej próby, ponieważ na końcu obliczeń otrzymujesz wiele odpowiedzi, każda z własnym prawdopodobieństwem. Należy go uruchomić w taki sposób, aby oczekiwana odpowiedź miała duże prawdopodobieństwo. Może to obejmować wielokrotne uruchomienie algorytmu do przodu i do tyłu.

Sprawdź algorytm wyszukiwania Grovera .


WSTAWIONO, aby pokazać podstawowe działanie algorytmu Grovera. Załóżmy, że występuje problem z wyszukiwaniem. Możliwe odpowiedzi to 0, 1, 2 i 3, ale prawidłowa odpowiedź to 2. Tak więc komputer kwantowy jest nakładany na superpozycję wszystkich czterech stanów i przechodzi przez sekwencję kroków, aby sprawdzić, który z nich jest poprawny, i odwraca swoją amplitudę, jak czarne kropki i strzałki poniżej:

wprowadź opis zdjęcia tutaj

Widać, że strzałka 2 została odwrócona wewnątrz maszyny, ale nie ma sposobu, aby powiedzieć, że na zewnątrz, ponieważ na zewnątrz widoczne są tylko prawdopodobieństwa, które są amplitudami do kwadratu , a gdy są do kwadratu, wszystkie są równe.

Jednak amplitudy mają średnią, oznaczoną czerwoną linią, a komputer może przejść przez sekwencję kroków, która odwraca każdą amplitudę względem średniej . Kiedy to się stanie, amplitudy i prawdopodobieństwa zostaną przeniesione do stanu 2, właściwa odpowiedź ! Więc jeśli maszyna zostanie zaobserwowana, stan 2 świeci.

To nie jest takie proste. Zasadniczo potrzeba wielu cykli maszyny, do przodu i do tyłu, odwracając na końcu każdego cyklu, aby zmaksymalizować prawdopodobieństwo właściwej odpowiedzi. Ponadto należy uważać, aby nie robić tego więcej niż tyle razy, ponieważ może on równie łatwo się odwrócić.

Dlaczego więc mówią, że komputery kwantowe są tak szybkie ? Ponieważ za każdym razem, gdy podwoisz liczbę kubitów, wyrównasz równoległość, ale nie wyrównasz długości czasu, więc ostatecznie wygrywa.

Czy to nie jest zabawne?


Byłem osobiście zainteresowany, w jaki sposób można to zastosować do weryfikacji poprawności oprogramowania. Teraz testujemy oprogramowanie, rzucając na niego wiązkę testowych danych wejściowych i (aby być zbyt prostym) sprawdzając, czy trafi ono w Assert. W komputerze kwantowym może być możliwe równoległe uruchomienie go na znacznie gęstszym zestawie danych wejściowych i sprawdzenie, czy którykolwiek z tych przypadków nie trafi w Assert.

Tak jakby wejściowy algorytm miał 128 bajtów lub 1024 bity, istnieją 2 ^ 1024 lub 10 ^ 308 możliwych różnych danych wejściowych. Nie ma sposobu na przetestowanie tylu wejść na konwencjonalnym komputerze, ale komputer kwantowy mógłby wypróbować je wszystkie równolegle.


2
Sprawdzanie algorytmu wyszukiwania Grovera ... O Boże! Nie byłem na to gotowy!
Philip,

1
@Philip: Wiem, że matematyka jest dość odrażająca, ale kluczową ideą jest rotacja wokół średniej, która skutkuje przeniesieniem prawdopodobieństwa do stanu odpowiedzi. Następnie biegniesz z powrotem do początku, biegniesz do przodu i robisz to jeszcze raz, określoną liczbę razy. Następnie, jeśli robisz obserwację, zmaksymalizowałeś prawdopodobieństwo zobaczenia stanu odpowiedzi.
Mike Dunlavey,

Widzisz, naprawdę nie jest tak źle, kiedy tak mówisz. Chyba nie jestem zaznajomiony z notacją, której używają, ani z obwodami kwantowymi. Strona na temat algorytmów kwantowych jest również zastraszająca. Uważam, że Qubit to miejsce, od którego można zacząć. (Prosta wikipedia ma stronę o komputerach kwantowych , ale przydałaby się trochę pracy)
Philip

@Philip: Załóżmy, że masz tabelę zawierającą 1024 wpisy, więc indeksowanie zajmuje 10 bitów. Masz rejestr 10- (qu) bitowy i ma 1024 możliwe stany. OK, więc tworzysz wszechświat, w którym rejestr ma wartość 0, inny, w którym jest to 1, do 1024 równoległych wszechświatów. Następnie kwantowe „instrukcje” działają na wszystkie z nich równolegle. Każdy wszechświat ma „wektor amplitudy”, którego wielkością jest prawdopodobieństwo, ale ma również kierunek, a te są manipulowane. Ponieważ zbiór 1024 wektorów ma niezerowy średni wektor, obrót czyni jeden większy, a reszta mniejsza.
Mike Dunlavey,

Jestem zreformowanym fizykiem i przegłosowałem tę odpowiedź, ponieważ jest ona myląca. 1) algorytmy kwantowe często szczególnie (asymptotycznie) szybkie - algorytm wyszukiwania Grovera działa w O (sqrt (n)), podczas gdy najlepsze, co może zrobić klasyczny komputer, to O (n). Gdyby komputery kwantowe nie były asymptotycznie szybsze, nie byłyby bardzo interesujące. Sprzęt może być teraz wolny, ale to nie wina algorytmów!
Benjamin Hodgson,

7

Jak wyglądałby język C, gdyby był zaprojektowany dla kubitów? Czy typy się zmieniły?

Byłoby tak drastycznie inne, że byłoby niezrozumiałe jak C.

Główną kwestią (jak rozumiem) jest to, że obliczenia kwantowe nie działają w miły, imperatywny sposób „zrób to, potem to, a potem jeszcze jedno”. Próba zmuszenia C do zrobienia tego w „procesorze” komputera kwantowego będzie, jeśli nie niemożliwa, bardzo nieefektywna.

Algorytmy programowania dla komputerów kwantowych (znowu, jak rozumiem), wydają się być bliższe funkcjonalnemu mapowaniu / zmniejszaniu stylu programowania, ponieważ obliczenia kwantowe pozwalają na jednoczesne istnienie wszystkich kandydatów w części „redukującej” i „wypadnięcie” z komputera kiedy zaobserwowano.

Zauważ, że istnieją pewne algorytmy dla komputerów kwantowych, nawet jeśli nie istnieją urządzenia do ich uruchomienia. Na przykład algorytm Simona .


ELI5 dla algorytmu kwantowego byłby świetny.
MaiaVictor,

3

Aby jak najbardziej efektywnie wykorzystać komputer kwantowy, trzeba umieć radzić sobie z wejściami i wyjściami, które są stanami rejestru kwantowego, dla których tak naprawdę nie ma klasycznego analogu. Mówiąc z kilku lat doświadczenia w dziedzinie informacji kwantowej, muszę cię ostrzec, że nikt tak naprawdę nie ma dobrej intuicji poza abstrakcyjną matematyką algebr C *, i powiedziano mi, że nawet ta intuicja okazuje się nieodpowiednia jeśli zaczniecie się zastanawiać nad teorią względności.

Klasa problemów, które można skutecznie rozwiązać na komputerze kwantowym, jest znana jako BQP, dla Bounded Quantum Polynomial. To jest kwantowa wersja BPP i więcej informacji można znaleźć w tym artykule: http://www.scottaaronson.com/papers/bqpph.pdf

Wczoraj wieczorem badacz algorytmów kwantowych powiedział mi, że istnieje bardzo ważny problem, który jest kompletny w BQP: rozwiązanie liniowego układu N równań. Klasycznie jest to możliwe do rozwiązania w krokach O (N) z eliminacją Gaussa. Algorytm Harrow-Hassidim-Lloyd ( http://arxiv.org/abs/0811.3171 ) rozwiązuje go w polylog (N), pod warunkiem, że jesteś gotów zaakceptować odpowiedź, która ma rozwiązanie zakodowane jako stan kwantowy. Jeśli chcesz w pełni wykorzystać komputer kwantowy, wydaje się konieczne, abyś miał typ odpowiadający stanowi rejestru kwantowego.

Chociaż obecnie jestem trochę poza moją szczególną wiedzą, zaryzykuję przypuszczenie, że będziesz w stanie zaprogramować komputer kwantowy, o ile masz dostęp do typu odpowiadającego stanom magicznym. Jest to jednak trudna koncepcja, która wymaga dogłębnego przestudiowania tematu.

Ostrzegamy, że mamy bardzo dużo czasu od posiadania kwantowego języka programowania, ponieważ jesteśmy na bardzo prymitywnym etapie badań w dziedzinie obliczeń kwantowych. Pytanie o kwantowe C w tej chwili byłoby jak pójście do Alana Turinga i poproszenie go o zaprojektowanie Pythona. Nie mamy jeszcze kwantowej wersji lampy próżniowej!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.