Können wir Quantenparallelität verwenden, um viele Funktionen gleichzeitig zu berechnen?


9

Es ist bekannt, dass wir durch Verwendung der Quantenparallelität eine Funktion für viele verschiedene Werte von x gleichzeitig berechnen können. Es sind jedoch einige clevere Manipulationen erforderlich, um die Informationen jedes Werts zu extrahieren, dh mit dem Algorithmus von Deutsch.f(x)x

Betrachten Sie den umgekehrten Fall: Können wir mithilfe der Quantenparallelität viele Funktionen (z. B. ) gleichzeitig für einen einzelnen Wert x 0 berechnen ?f(x),G(x),x0


Um und g ( x 0 ) auszuwerten , müssen Sie für jede Operation eine Kopie von x 0 erstellen, was nach dem No-Cloning-Theorem im Allgemeinen nicht möglich ist. Wenn Sie andererseits nur einen Zustand vorbereiten, der zweimal x 0 ist , stellen Sie einfach die klassische Parallelität wieder her. f(x0)G(x0)x0x0

@HenriMenke Wie wäre es mit unvollkommenem Klonen?
donnydm

@HenriMenke: Ihre Vorstellung davon, was "Klonen" ist, scheint sehr weit gefasst zu sein, bis hin zu einigen Hindernissen für Ihre Fähigkeit, Probleme produktiv anzugehen.
Niel de Beaudrap

Antworten:


5

Die genaue Antwort hängt von der genauen Art der gewünschten Überlagerung ab. Die Antworten von Pyramiden und Niel geben Ihnen so etwas wie

EINt=1n|ft(x)|F.t

Hier bin ich Niel bei der Beschriftung der verschiedenen Funktionen , f 2 usw. gefolgt , wobei n die Gesamtzahl der Funktionen ist, die Sie überlagern möchten. Außerdem habe ich F t verwendet, um eine Beschreibung der Funktion f t als gespeichertes Programm zu bezeichnen. Das A ist genau die Zahl, die vorhanden sein muss, damit der Zustand normalisiert werden kann.f1f2nF.tftEIN

Beachten Sie, dass dies nicht einfach eine Überlagerung von . Es ist mit dem gespeicherten Programm verwickelt. Wenn Sie das gespeicherte Programm ausfindig machen würden, hätten Sie nur eine Mischung aus f t ( x ) . Dies bedeutet, dass das gespeicherte Programm "Müll" darstellen kann, wodurch Interferenzeffekte vermieden werden, auf die Sie möglicherweise zählen. Oder vielleicht auch nicht. Dies hängt davon ab, wie diese Überlagerung in Ihrer Berechnung verwendet wird.ft(x)ft(x)

Wenn Sie den Müll loswerden wollen, wird es schwieriger. Angenommen, Sie möchten ein einheitliches , das den Effekt hatU.

U.::|x|0N.EINt=1n|ft(x)

für alle möglichen Eingaben (von denen ich annehme, dass es sich um in der Berechnungsbasis geschriebene Bitfolgen handelt). Beachten Sie, dass ich auch einige leere Qubits auf der Eingangsseite eingefügt habe, falls die Funktionen längere Ausgänge als Eingänge haben.x

Daraus können wir sehr schnell eine Bedingung finden, die die Funktionen erfüllen müssen: Da die Eingangszustände eine orthogonale Menge bilden, müssen auch die Ausgänge eine Bedingung bilden. Dies wird die Arten von Funktionen, die auf diese Weise kombiniert werden können, erheblich einschränken.


Vielen Dank, ich denke auf diese Weise kann man etwas wie die Taylor-Expansionsberechnung beschleunigen. Wie auch immer, kann auf das gespeicherte Programm zugegriffen / gemessen werden, um Informationen zu erhalten, oder ist es nur ein Werkzeug?
donnydm

Das gespeicherte Programm wird nur in ein Qubit-Register geschrieben, so dass es sicherlich manipuliert werden kann.
James Wootton

5

Die Funktionen , die Sie in verschiedenen Rechenzweigen auswerten möchten, müssen, um überhaupt berechenbar zu sein, in irgendeiner Weise spezifizierbar sein (z. B. eine Folge klassischer Logikgatter). Und die Menge { f 1 , f 2 , } der Funktionen, die Sie berechnen möchten, sollte selbst berechenbar sein: Für ein gegebenes t müssen Sie in der Lage sein, eine Spezifikation zu berechnen, wie f t anhand seines Arguments berechnet werden soll. In der Tat: Sie müssen über ein Mittel zur Beschreibung der Funktionen f t verfügenf,G, {f1,f2,}}tftftals gespeicherte Programme. (Dies alles ist notwendig, noch bevor wir die Quantenberechnung betrachten, damit die Frage "Berechnung einer / aller Funktionen auf einem Eingang x 0 " sinnvoll ist.)f1,f2,x0

Sobald Sie die Möglichkeit haben, Funktionen als gespeicherte Programme anzugeben, sind Sie im Grunde genommen fertig: Ein Programm ist im Wesentlichen eine andere Art von Eingabe, die Sie in Überlagerung vorbereiten und z. B. anhand einer festen Eingabe oder einer Überlagerung von Eingaben durch Berechnung auswerten können die Funktionen aus ihren Spezifikationen in jedem Zweig.

Um einen comptational Vorteil zu gewinnen zu tun , ist so eine andere Sache, und muss eine bestimmte Struktur in den Funktionen beinhalten , dass Sie nutzen können, sondern einfach auf „bewertet in Überlagerung“ ist leicht getan , wenn Sie genügend Informationen für die Frage vernünftig zu sein.ft


3

Ja (je nachdem, was "viele Funktionen gleichzeitig berechnen" bedeutet)

Wenn Sie die Schaltung beschreiben, die die Funktion als U f gibt, und die Schaltung, die g als U g gibt, gibt es einige Möglichkeiten, dies zu tun:fU.fGU.G

  1. Beginnend mit den Qubit-Registern in Bereitet einen Zustand & agr; | 01 + & bgr; | 10 auf den ersten beiden Register. Dies kann durch Anwenden einer einheitlichen 1 auf das erste Register erfolgen, um dieses Register in den Zustand α | zu versetzen 0 + & bgr; | 1 vor CNOT, dann Anwenden I X . Wenden Sie dann C U f vom ersten Register auf das dritte und C U g vom zweiten auf das dritte an.|00xα|01+β|10α|0+β|1ichX.C.U.fC.U.G

    1.1. Dies ergibt, dass sich das dritte Register jetzt im Zustand befindet , wenn die Anfangsoperationen (bis I X ) auf den ersten beiden Registern umgekehrt sind. Aufgrund der allgemeinen Schwierigkeiten bei der Implementierung beliebiger Operationen mit kontrollierter Einheit (sowie der unnötigen Verwendung zusätzlicher Qubits) wäre es wahrscheinlich einfacher, dies direkt durch Wählen des einheitlichen α U f + β U g zu implementieren . Beachten Sie, dass dies weder f noch g implementiert , sondern eine neue, andere Funktion(αU.f+βU.G)|xichX.αU.f+βU.GfGf+G

    1.2. Wenn die anfänglichen Operationen an den ersten beiden Registern nicht umgekehrt werden, befindet sich das dritte in einem verschränkten Zustand von und g , der in anderen Antworten erörtert wird.fG

  2. Beginnend mit dem Zustand und Aufbringen U f mit dem ersten Register und U g auf den zweiten. Dies kommt der klassischen Parallelität am nächsten, bei der beide Funktionen unabhängig voneinander auf Kopien desselben Zustands angewendet werden. Abgesehen davon, dass doppelt so viele Qubits erforderlich sind, besteht das Problem hier darin, dass aufgrund des Nichtklonens | kopiert werden muss x , entweder bekannt sein muss, oder einen klassischen Zustand sein (dh keine Überlagerungen in den Berechnungsgrundlagen beinhalten). Es könnte auch ein ungefähres Klonen verwendet werden.|xxU.fU.G|x

  3. Beginnen Sie mit dem Status , sowie ein klassisches Register. Wenden Sie eine einheitliche 1 an, um das erste Register in die Überlagerung α | zu setzen 0 + & bgr; | 1 . Nun misst dieses Register (das Ergebnis im klassischen Register setzen) und die Anwendung der klassischen Betriebes . Dies scheint zwar weniger leistungsfähig zu sein als jede der obigen Operationen, ist jedoch in gewissem Sinne äquivalent zu dem Quantenkanal E ( ρ ) = | α | 2 U f ρ U.|0xα|0+β|1IF RESULT = 0 U_f ELSE U_g . Solche Methoden können verwendet werden, um zufällige Einheitlichkeiten zu erstellen, die Anwendungen beispielsweise bei derProbenahme von Bosonenund beimrandomisierten Benchmarking habenE.(ρ)=|α|2U.fρU.f+|β|2U.GρU.G


1 gegeben durch

(α- -ββα)


Dies ist teilweise deshalb interessant, weil kein gespeichertes Programm benötigt wird. Ist der CNOT in Nummer 1 notwendig?
donnydm

2

feinll(y,x)f(x)y=0G(x)y=1yxx0

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.