Possiamo usare il parallelismo quantistico per calcolare molte funzioni contemporaneamente?


9

È noto che utilizzando il parallelismo quantistico possiamo calcolare una funzione f(x) per molti valori diversi di contemporaneamente. Tuttavia, sono necessarie alcune manipolazioni intelligenti per estrarre le informazioni di ciascun valore, ovvero con l'algoritmo di Deutsch.x

Considera il caso inverso: possiamo usare il parallelismo quantistico per calcolare molte funzioni (diciamo ) contemporaneamente per un singolo valore ?f(x),g(x),x0


Per valutare e è necessario effettuare una copia di per ogni operazione che è, in generale, non è possibile per il teorema di no-cloning. Se invece prepari uno stato due volte , ripristini il parallelismo classico. g ( x 0 ) x 0 x 0f(x0)g(x0)x0x0

@HenriMenke Che ne dici di una clonazione imperfetta?
donnydm,

@HenriMenke: la tua idea di cosa sia la "clonazione" sembra essere molto ampia, al punto da porre alcuni ostacoli alla tua capacità di affrontare i problemi in modo produttivo.
Niel de Beaudrap il

Risposte:


5

La risposta esatta dipende dal tipo esatto di sovrapposizione che si desidera. Le risposte di piramidi e Niel ti danno entrambe qualcosa di simile

At=1n|ft(x)|Ft

Qui ho seguito Niel nell'etichettare le diverse funzioni , f 2 , ecc., Con n come numero totale di funzioni che si desidera sovrapporre. Inoltre ho usato F t per una descrizione della funzione come programma memorizzato. La è esattamente il numero che deve essere presente affinché lo stato sia normalizzato.f1f2nFtftA

Nota che questa non è semplicemente una sovrapposizione di . È impigliato nel programma memorizzato. Se dovessi rintracciare il programma memorizzato, avresti solo una combinazione di . Ciò significa che il programma memorizzato potrebbe costituire "immondizia", ​​il che impedisce effetti di interferenza su cui si può contare. O potrebbe non farlo. Dipende da come questa sovrapposizione verrà utilizzata nel tuo calcolo.ft(x)ft(x)

Se vuoi sbarazzarti della spazzatura, le cose si complicano. Ad esempio, supponiamo che ciò che vuoi sia una unitaria che abbia l'effettoU

U:|x|0NAt=1n|ft(x)

per tutti i possibili input (che presumo siano stringhe di bit scritte nella base computazionale). Si noti che ho anche incluso alcuni qubit vuoti sul lato input, nel caso in cui le funzioni abbiano output più lunghi degli input.x

Da ciò possiamo trovare molto rapidamente una condizione che le funzioni devono soddisfare: poiché gli stati di ingresso formano un insieme ortogonale, così anche le uscite. Ciò comporterà una significativa limitazione dei tipi di funzioni che possono essere combinati in questo modo.


Grazie, penso che in questo modo si potrebbe accelerare come il calcolo dell'espansione di Taylor. Ad ogni modo, è possibile accedere / misurare il programma memorizzato per ottenere alcune informazioni o è solo uno strumento?
donnydm,

Il programma memorizzato verrà appena scritto in un registro di qubit, quindi può certamente essere manipolato.
James Wootton,

5

Le funzioni che si desidera valutare in diversi rami computazionali devono, per essere assolutamente calcolabili, essere in qualche modo specificabili (ad esempio una sequenza di porte logiche classiche). E l' insieme { f 1 , f 2 , ... } delle funzioni che si desidera calcolare dovrebbe in sé ad essere computabili: per un dato t , è necessario essere in grado di calcolare una specificazione di come f t deve essere calcolata sul suo argomento. In effetti: devi avere un mezzo per descrivere le funzioni f tf,g, {f1,f2,}tftftcome programmi memorizzati. (Questi sono tutti necessari, anche prima di considerare il calcolo quantistico, perché la questione di "calcolare una / tutte le funzioni su un input x 0 " sia significativa.)f1,f2,x0

Una volta che hai un modo per specificare le funzioni come programmi memorizzati, hai praticamente finito: un programma è essenzialmente un altro tipo di input, che puoi preparare in sovrapposizione, e ad esempio valutare su un input fisso o una sovrapposizione di input, calcolando le funzioni dalle loro specifiche in ciascun ramo.

Per ottenere un vantaggio comptational dal farlo è una questione diversa, e dovrà coinvolgere qualche struttura specifica nelle funzioni che si può trarre vantaggio, ma semplicemente per "valutare in sovrapposizione" è presto fatto se si dispone di informazioni sufficienti per la domanda è ragionevole.ft


3

Sì (a seconda del significato di "calcola più funzioni contemporaneamente")

Descrivendo il circuito che dà la funzione come U f e il circuito che dà g come U g , ci sono alcuni modi per fare ciò:fUfgUg

  1. A partire dai registri qubit in , Preparare uno stato alfa | 01 + ß | 10 sui primi due registri. Questo può essere fatto applicando un 1 unitario sul primo registro per mettere quel registro nello stato α | 0 + ß | 1 prima di applicare CNOT, poi mi X . Quindi, applica C U f dal primo registro al terzo e C U g dal secondo al terzo.|00xα|01+β|10α|0+β|1IXCUfCUg

    1.1. Questo dà che il terzo registro è ora nello stato , quando le operazioni iniziali (fino a I X ) sui primi due registri sono invertiti. Tuttavia, a causa delle difficoltà generali dell'implementazione di operazioni arbitrarie controllate-unitarie (oltre a utilizzare inutilmente qubit extra), sarebbe probabilmente più semplice implementarlo direttamente componendo il α U f + β U g unitario . Si noti che non si tratta né di implementare fg , ma di una nuova, diversa funzione(αUf+βUg)|xIXαUf+βUgfgf+g

    1.2. Non invertendo le operazioni iniziali sui primi due registri mette il terzo in uno stato entangled di e g , descritto in altre risposte.fg

  2. A partire dallo stato e applicando U f al primo registro e U g al secondo. Questo è il più vicino al parallelismo classico, in cui entrambe le funzioni sono applicate indipendentemente alle copie dello stesso stato. Oltre a richiedere il doppio del numero di qubit, il problema qui è che, a causa della mancata clonazione, per copiare | x , questo è contrassegnato da conoscere, o essere uno stato classico (cioè non comportano sovrapposizioni in base computazionale). Si potrebbe anche usare la clonazione approssimativa .|xxUfUg|x

  3. Inizia con lo stato , così come un registro classico. Applicare 1 unitario per mettere il primo registro nella sovrapposizione α | 0 + ß | 1 . Ora, misura questo registro (inserendo il risultato nel registro classico) e applica l' operazione classica . Anche se questo può sembrare meno potente di una delle operazioni precedenti, in un certo senso è equivalente al canale quantico E ( ρ ) = | α | 2 U f ρ U|0xα|0+β|1IF RESULT = 0 U_f ELSE U_g . Tali metodi possono essere utilizzati per creare unità casuali, che hanno applicazioni, ad esempio, nelcampionamento del bosonee nelbenchmarking randomizzatoE(ρ)=|α|2UfρUf+|β|2UgρUg


1 dato da

(αββα)


Questo è interessante, in parte perché non è necessario alcun programma memorizzato. Il CNOT nel numero 1 è necessario?
donnydm,

2

Sì, uno può. Il trucco è definire (e implementare) una nuova funzione che valuta f ( x ) se y = 0 , g ( x ) se y = 1 , ecc. Quindi si preparano i qubit che rappresenta y nella sovrapposizione desiderata e imposta x su x 0 .fall(y,x)f(x)y=0g(x)y=1yxx0

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.