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