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:⌈log⁡n⌉

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

  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.n−1

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

1n∑k=0n−1|k⟩⟨k|
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| 010⟩e| 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.

|nk⟩nk

|0001⟩14|41⟩|0011⟩|42⟩16


13(|001⟩+|010⟩+|100⟩)|001⟩13(|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.