Creazione di nott controllati più grandi da porte a qubit singolo, Toffoli e CNOT, senza spazio di lavoro


8

L'esercizio 4.29 del calcolo quantistico e delle informazioni quantistiche di Nielsen e Chuang mi ha lasciato perplesso.

Trova un circuito contenente Toffoli, CNOT e porte a qubit singolo che implementa un gate (per ), senza qubit di lavoro.O(n2)Cn(X)n>3

Ho capito che questo non può essere fatto in modo classico .

Ho capito come farlo con cancelli esponenzialmente precisi (annidare la costruzione a doppio controllo-da-singolo-controllo-e-quadrata-radice-operazione dentro di sé volte).O(2n)n-2

Ho provato a generalizzare la costruzione di cui sopra nell'accumulare una combinazione lineare di operazioni controllate. Ad esempio, se ho 3 controlli chiamati A e B e C e realizzo un vettore dei vari casi [0, A, B, C, AB, BC, AC, ABC], allora:

  • L'applicazione di un'operazione aggiunge incondizionatamente [1, 1, 1, 1, 1, 1, 1, 1]
  • Il controllo di un'operazione su A aggiunge [0, 1, 0, 0, 1, 1, 0, 1]
  • Xoring A in C quindi controllo di un'operazione su C (quindi annullamento di xor) aggiungerebbe [0, 1, 0, 1, 1, 1, 0, 0]
  • Xoring (A e B) in C tramite una porta toffoli quindi il controllo di un'operazione su C aggiungerebbe [0, 0, 0, 1, 1, 1, 1, 0]

Quindi proverei ad aggiungere (applicare una radice di X) e sottrarre (applicare la radice quadrata inversa) i vari vettori che posso fare fino a quando il risultato non viene visualizzato come [0, 0, 0, 0, 0, 0, 0, N] .

Ma continuo a colpire vari muri, come soluzioni che finiscono con grandi multipli (cioè le porte che sto usando diventano esponenzialmente precise, che penso sia un no-no) o semplicemente non sono in grado di risolvere il sistema a causa dell'interazione tra generare elementi con AND / XOR quindi risolverli con + / * non standard o creare numeri esponenziali di porte.

Quali sono alcuni altri approcci da provare?

Risposte:


5

Alla fine ho finito per risolverlo O(n)cancelli. Ho scritto una trilogia di post sul blog.

  1. Costruire Nots controllati di grandi dimensioni (classicamente, con un ancilla)

  2. Costruire grandi incrementi (classicamente, con un ancilla)

  3. Utilizzo di Quantum Gates anziché Ancilla Bits

Ovviamente farebbe schifo se lo scoprissi tra venti anni e il mio sito Web fosse sparito da tempo, quindi i passaggi di base seguono in una forma di immagine descritta rapidamente.

1. Bootstrap un Bit Ancilla mutuabile

Utilizzare una radice quadrata e il suo inverso per ridurre di uno il numero massimo di controlli, creando un filo non coinvolto per ciascuna operazione. Quindi spostare iterativamente i controlli dalle operazioni non-Not e riorganizzare la cruft che si traduce in grandi gate di incremento e gate di fase a qubit singolo.

Avvio automatico di un bit Ancilla

2. Utilizzare il bit Ancilla singolo per dimezzare le operazioni

Per ogni operazione di grandi dimensioni, utilizzare il filo non coinvolto come bit ancilla preso in prestito. Usalo per trasformare l'enorme incremento e le porte controllate e non in operazioni più piccole, ciascuna delle quali ha circa la metà dei fili non coinvolti. Ripetere due volte, se necessario per il passaggio successivo per disporre di spazio di lavoro sufficiente.

Dimezzare le dimensioni di Controlled-Not con Ancilla

Dimezzare le dimensioni dell'incrementatore con Ancilla

3. Utilizzare molti bit Ancilla per terminare

Per ogni operazione ancora troppo grande, prendere in prestito i molti fili non coinvolti come bit ancilla. Usali per arrivare fino alle porte di Toffoli o più piccole.

Ridurre Controlled-Not to Toffolis

Riduzione dell'incrementatore a Toffolis

Questi tre passaggi ti porteranno da un cancello completamente controllato, non linearmente, a molti Toffoli, CNOT e single-qubit. Ci sono alcuni pezzi impliciti, come come unire un controllo in un gate di incremento, ma sono piuttosto semplici.

(Ci scusiamo per lo stile incoerente dei diagrammi.)

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.