Come consentire (rimpasto) un input n-bit?


13

Sono interessato a un algoritmo quantistico che ottiene come input una sequenza n-bit e che produce come output una versione rimescolata (permutata) di questa sequenza n-bit.

Ad esempio, se l'input è 0,0,1,1 (quindi n = 4 in questo caso), le possibili risposte sono:

  • 0,0,1,1
  • 0,1,0,1
  • 0,1,1,0
  • 1,0,0,1
  • 1,0,1,0
  • 1,1,0,0

Si noti che deve essere generato un solo output che viene scelto casualmente tra tutti i possibili output validi.

Come può essere meglio implementato in un algoritmo quantistico ?

Una soluzione per questo è già stata proposta come parte di una delle risposte per Come creare un algoritmo quantistico che produce sequenze a 2 n bit con uguale numero di 1 bit? . Ma il problema con questa soluzione è che ciò richiede circa qubit di aiuto che diventano rapidamente enormi se n è grande.(n2)

Nota:

  • Per favore, non fornire un algoritmo classico senza alcuna spiegazione di come i passi dell'algoritmo classico possano essere mappati su un computer quantistico universale.
  • per me ci sono 2 buoni modi di interpretare "scelti casualmente tra tutti i possibili buoni risultati" : (1) ogni possibile buon risultato ha pari possibilità di essere scelto. (2) ogni possibile buona uscita ha una probabilità> 0 di essere scelta.

1
L'input è una stringa binaria di lunghezza dove dei bit sono 1 e l'output è una delle possibili permutazioni di ? Questo può essere fatto su un computer classico con 1 passaggio. Vuoi alll possibili uscite? nk(nk)1
user1271772,

No, deve essere generato un solo output che viene scelto casualmente tra tutti gli output possibili.
JanVdA,

Un algoritmo classico sarebbe abbastanza buono? (Potresti ancora eseguirlo su un computer quantistico.) O hai bisogno di sth. quale supera il migliore algoritmo classico?
Norbert Schuch,

1
@JanVdA: Perché non scegliere solo 1 e 0 e scambiare i due su un computer classico?
user1271772

1
Dato che non hai specificato la distribuzione casuale che desideri, le lascerò qui: Dilbert e XKCD ;)
Ali

Risposte:


4

Potrebbe essere fatto con qubit aggiuntivi lungo queste linee:logn

  1. Trasforma i qubit aggiuntivi in ​​modo che codifichino un numero scelto uniformemente a caso.k{0,,n1}

  2. Spostare ciclicamente i qubit di input volte.k

  3. Lascia che l'ultimo qubit di input originale sia corretto come output e si ricorra sul restante di essi.n1

Questo è un algoritmo classico, ma ovviamente puoi eseguirlo su un computer quantistico, come ha suggerito Norbert in un commento. (L'aspetto della domanda irremovibile sul fatto che l'algoritmo sia quantico non mi è ancora chiaro, quindi se l'esecuzione di un algoritmo classico come quello che ho suggerito su un computer quantistico non è sufficiente, sarebbe utile che la domanda essere chiarito.)

Si noti che poiché la domanda richiede un output casuale, l'algoritmo dovrà generare entropia a un certo punto, presumibilmente attraverso misurazioni o eseguendo altre operazioni non unitarie su qubit (come inizializzarli). Nell'algoritmo sopra, è il primo passo che genera entropia: indipendentemente dallo stato dei qubit aggiuntivi prima che venga eseguita l'operazione nel passaggio 1, dovrebbero avere lo stato dopo aver eseguito il passaggio 1 (con codificato in binario, diciamo).K

1nk=0n1|kk|
k

Grazie per la risposta. Sono interessato a un vero algoritmo quantistico per il problema: se potessi mappare l'algoritmo classico sopra un programma quantico, allora anche questo va bene, ma non ho idea di come farlo.
JanVdA,

2
Penso che la domanda si stia focalizzando: non stai davvero cercando un algoritmo, stai cercando un codice. Quello che ho descritto è un algoritmo e il compito che rimane è implementare quell'algoritmo (o uno diverso) come codice in un linguaggio o come descrizione di basso livello di un circuito quantico. Ti suggerisco di rivedere la domanda per renderlo più chiaro, ma tieni presente che stai chiedendo a qualcuno di fare un lavoro noioso e concettualmente poco interessante per te. L'alternativa di imparare a farlo da soli può sembrare scoraggiante, ma potrebbe essere la soluzione migliore a lungo termine.
John Watrous,

Ho aggiunto una nota alla domanda. Penso che abbiamo interpretato l' algoritmo quantistico del concetto in modo diverso. Per me un_algoritmo classico_ non è un algoritmo quantico ma potrebbe essere mappato in un algoritmo quantistico .
JanVdA

@JanVdA: Cosa intendi con algoritmo quantistico? Ad esempio, hai bisogno che coinvolga almeno un cancello ? O che richiede almeno un cancello Y ? O che richiede qualche altro set di gate specifico? Quale gate set desideri utilizzare per questo algoritmo? HY
user1271772

Un algoritmo quantistico è un algoritmo che può essere mappato (a livello di step) su un programma per un computer quantistico universale. L'input e l'output dei passi dell'algoritmo quantistico sono qubit (o potrebbero essere mappati su una serie di qubit). L'ultimo passo dell'algoritmo quantistico = leggere (osservare) i valori dei qubit (quindi i qubit diventano mappati su bit effettivi) Non ci sono restrizioni sul gate set. L'idea è che l'algoritmo completo può essere eseguito su un computer quantistico universale.
JanVdA,

3

Nota: questa risposta presuppone che la permutazione sia coerente , ovvero che si desidera al posto di un terzo caso di001, un terzo possibilità di010, e un 1/3 probabilità di100.13(|001+|010+|100)001010100

Fai attenzione a come specifichi questa attività, perché potrebbe essere facilmente impossibile a causa di vincoli di reversibilità. Ad esempio, per l'input si desidera emettere lo stato GHZ | 3|001. Ma se si desidera anche generare lo stato GHZ per l'ingresso| 010e| 100, che non funziona. Non è possibile inviare più stati di input allo stesso stato di output (senza decoerenza). Finché dici "Mi preoccupo solo di input in ordine crescente come 0000111 ma non 1110000 o 0010110; puoi fare quello che vuoi con quelli", andrà bene.|31=13(|001+|010+|100)|010|100

Un trucco per produrre una permutazione quantistica di un input ordinato è preparare innanzitutto uno "stato di permutazione" applicando una rete di ordinamento a un elenco di valori seme ciascuno in una sovrapposizione uniforme. La rete di smistamento genererà qubit che contengono i semi ordinati, ma anche qubit che trattengono i confronti della rete di smistamento. Lo stato di permutazione è solo i qubit di confronto. Per applicarlo al tuo input, esegui semplicemente l'input attraverso la rete di ordinamento al contrario. Nota che ci sono alcuni dettagli difficili qui; vedere il documento " Tecniche migliorate per la preparazione di automi di Hamiltoniani fermionici ". Dovresti generalizzare questa tecnica per lavorare su input con valori ripetuti, anziché solo valori univoci.

|nknk

|000114|41|0011|4216


13(|001+|010+|100)|00113(|001|010+i.|100)

1
@JanVdA Corretto, si possono usare le fasi per rendere ortogonali le varie uscite. La mia lettura della tua domanda era che volevi la stessa fase in tutti i casi.
Craig Gidney,

0

Un computer quantistico può eseguire calcoli classici. L'algoritmo ottimale sarebbe:

  1. Scegli qualsiasi bit (il più veloce a cui puoi accedere).
  2. Trova un bit con valore opposto (se nel passaggio 1 hai ottenuto uno 0, trova un 1)
  3. Passali (0 diventa 1 e 1 diventa 0).

NO(N)nthO(N)


Grazie ma l'algoritmo cambierebbe solo 2 bit (quindi non genererà tutte le permutazioni) ed è ancora un algoritmo classico, mentre mi piacerebbe vedere un algoritmo quantistico.
JanVdA,
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.