Dobrze wiadomo, że wykorzystując paralelizm kwantowy możemy obliczyć funkcję dla wielu różnych wartości jednocześnie. Potrzebne są jednak pewne sprytne manipulacje w celu wydobycia informacji o każdej wartości, tj. Algorytmem Deutscha.
Rozważmy odwrotny przypadek: czy możemy użyć równoległości kwantowej do obliczenia wielu funkcji (powiedzmy ) jednocześnie dla pojedynczej wartości x_0 ?
Odpowiedzi:
Dokładna odpowiedź zależy od dokładnego rodzaju superpozycji, którą chcesz. Odpowiedzi piramid i Niel dają ci coś podobnego
Tutaj śledziłem Niel w oznaczaniu różnych funkcji , itd., oznacza całkowitą liczbę funkcji, które chcesz nałożyć. Użyłem również do oznaczenia opisu funkcji jako zapisanego programu. Tylko cokolwiek potrzeby numer będzie tam stan zostać znormalizowane.fa1 fa2) n fat fat ZA
Zauważ, że nie jest to po prostu superpozycja . Jest zaplątany w przechowywany program. Jeśli miałbyś wyśledzić zapisany program, miałbyś po prostu kombinację . Oznacza to, że przechowywany program może stanowić „śmieci”, co zapobiega efektom interferencyjnym, na które możesz liczyć. A może nie. To zależy od tego, w jaki sposób ta superpozycja zostanie wykorzystana w obliczeniach.fat( x ) fat( x )
Jeśli chcesz pozbyć się śmieci, sprawy stają się trudniejsze. Załóżmy na przykład, że chcesz uzyskać jednolity który ma efektU
dla wszystkich możliwych danych wejściowych (które, jak zakładam, są łańcuchami bitów zapisanymi w podstawie obliczeniowej). Zauważ, że umieściłem również puste kubity po stronie wejściowej, na wypadek gdyby funkcje miały dłuższe wyjścia niż wejścia.x
Z tego możemy bardzo szybko znaleźć warunek, który muszą spełniać funkcje: ponieważ stany wejściowe tworzą zbiór ortogonalny, podobnie jak wyniki. Spowoduje to znaczne ograniczenie rodzajów funkcji, które można łączyć w ten sposób.
źródło
Funkcje , które chcesz ocenić w różnych gałęziach obliczeniowych, muszą być, aby w ogóle być obliczalne, w jakiś sposób określone (np. Sekwencja klasycznych bramek logicznych). A zbiór funkcji, które chcesz obliczyć, powinien sam być obliczalny: dla danego musisz być w stanie obliczyć specyfikację tego, jak ma być obliczony na podstawie jego argumentu. W rezultacie: musisz mieć możliwość opisania funkcji jako zapisanych programów. (Wszystkie są konieczne, nawet zanim rozważymy obliczenia kwantowe, na pytanie „obliczenie jednej / wszystkich funkcji na wejściufa, g, … {fa1,fa2), … } t fat fat fa1,fa2), … x0 „mieć sens.)
Gdy masz już sposób określania funkcji jako przechowywanych programów, to w zasadzie gotowe: program jest zasadniczo innym rodzajem danych wejściowych, które możesz przygotować w superpozycji, i np. Ocenić na stałym wejściu lub superpozycji danych wejściowych, obliczając funkcje z ich specyfikacji w każdej branży.
Aby uzyskać comptational przewagę od tego jest inna sprawa, i będzie musiał zaangażować jakąś specyficzną strukturę w funkcje , które można wykorzystać, ale po prostu do „oceny w superpozycji” jest łatwo zrobić, jeśli masz wystarczająco dużo informacji dla pytanie rozsądne.fat
źródło
Tak (w zależności od tego, co oznacza „oblicz wiele funkcji jednocześnie”)
Opisując obwód, który daje funkcję jako i obwód dający jako , można to na kilka sposobów:f Uf g Ug
Zaczynając od rejestrów qubit w , Przygotuj stan na pierwszych dwóch rejestrach. Można to zrobić poprzez zastosowanie jednolitego 1 w pierwszym rejestrze, aby umieścić ten rejestr w stanie przed nałożeniem CNOT, potem . Następnie zastosuj z pierwszego rejestru do trzeciego i z drugiego do trzeciego.|00x⟩ α|01⟩+β|10⟩ α|0⟩+β|1⟩ I⊗X CUf CUg
1.1 Daje to, że trzeci rejestr jest teraz w stanie , kiedy początkowe operacje (do ) na pierwszych dwóch rejestrach są wywrócony. Jednak ze względu na ogólne trudności związane z realizacją arbitralnych operacji kontrolowanych-jednostkowych (a także niepotrzebnego korzystania z dodatkowych kubitów) prawdopodobnie łatwiej byłoby to zrealizować bezpośrednio, wybierając numer jednolity . Zauważ, że nie jest to ani implementacja ani , ale nowa, inna funkcja(αUf+βUg)|x⟩ I⊗X αUf+βUg f g f+g
1.2 Brak odwrócenia początkowych operacji na pierwszych dwóch rejestrach stawia trzeci w pewnym splątanym stanie i , co omówiono w innych odpowiedziach.f g
Zaczynając od stanu i stosując do pierwszego rejestru i do drugiego. Jest to najbliższy klasycznemu paralelizmowi, w którym obie funkcje są stosowane niezależnie do kopii tego samego stanu. Poza wymaganiem podwójnej liczby kubitów, problem polega na tym, że ze względu na brak klonowania, aby skopiować , musi on być znany lub być stanem klasycznym (tj. Nie obejmować superpozycji w podstawie obliczeniowej). Można również zastosować przybliżone klonowanie .|xx⟩ Uf Ug |x⟩
Zacznij od stanu , a także klasycznego rejestru. Zastosuj jednostkę 1, aby umieścić pierwszy rejestr w superpozycji . Teraz zmierz ten rejestr (umieszczając wynik w rejestrze klasycznym) i zastosuj klasyczną operację . Chociaż może się to wydawać mniej skuteczne niż którakolwiek z powyższych operacji, jest to w pewnym sensie równoważne kanałowi kwantowemu . Takie metody można stosować do tworzenia losowych jednostek, które mają zastosowanie np. W próbkowaniu bozonów i|0x⟩ α|0⟩+β|1⟩ E(ρ)=|α|2UfρU†f+|β|2UgρU†g randomizowane testy porównawcze
IF RESULT = 0 U_f ELSE U_g
1 podany przez(αβ−β∗α∗)
źródło
Tak, można. Sztuczka polega na zdefiniowaniu (i zaimplementowaniu) nowej funkcji która ma wartość jeśli , do jeśli itd. Następnie przygotowuje się kubity reprezentujące żądanej superpozycji i ustaw na .fall(y,x) f(x) y=0 g(x) y=1 y x x0
źródło