Multiple Bipartite Entangled State in Cirq

Oct 22 2020

Sto cercando di creare questo stato: rho = = q. rho_ {1,2} + r. rho_ {2,3} + s. rho {1,3} + (1-qrs). rho_separable

E ho scritto questo codice:

   import random
import numpy as np
import cirq

circuit, circuit2, circuit3   = cirq.Circuit()
p = 0.2
q = 0.1
r = 0.3
alice, bob, charlie = cirq.LineQubit.range(1, 4)
rho_12 = circuit.append([cirq.H(alice), cirq.CNOT(alice, bob)]) 
#circuit.append([cirq.H(alice), cirq.CNOT(alice, bob)]) 
rho_23 = circuit.append([cirq.H(bob), cirq.CNOT(bob, charlie)]) 
rho_13 = circuit.append([cirq.H(alice), cirq.CNOT(alice, charlie)]) 
circuit = rho_12 + rho_23 + rho_13
print(circuit)

Qui ho 2 problemi:

1) Questa linea non funziona: circuit = rho_12 + rho_23 + rho_13

2) Non posso moltiplicare lo stato con p o q o r. Quello che voglio dire è che non posso scrivere questa riga:

rho_12 = circuit.append([cirq.H(alice), cirq.CNOT(alice, bob)]) * q 

Potresti per favore mostrarmi come posso scrivere questo stato?

Risposte

CraigGidney Oct 22 2020 at 04:28

Sembra che tu pensi che appendstia restituendo un circuito, invece di modificare il circuito su cui lo hai chiamato. circuit.append(op)non restituisce nulla, aggiunge un'operazione a circuit.

alice, bob, charlie = cirq.LineQubit.range(1, 4)
circuit = cirq.Circuit()
circuit.append([cirq.H(alice), cirq.CNOT(alice, bob)])
circuit.append([cirq.H(bob), cirq.CNOT(bob, charlie)]) 
...

In alternativa, puoi creare un nuovo circuito per ciascuno dei pezzi e quindi aggiungerli insieme:

rho_12 = cirq.Circuit(
    cirq.H(alice),
    cirq.CNOT(alice, bob),
)
...
circuit = rho_12 + rho_23 + rho_13