Я новичок в квантовых вычислениях и играю с Cirq , когда я прочитал Квантовые вычисления и Квантовая информация Нильсена и Чуанга. Одна из первых интересных схем в тексте относится к квантовой телепортации, и я пытаюсь реализовать ее в Cirq. Построить пару EPR и большую часть схемы, как описано, довольно просто.
Однако Бобу необходимо «починить» свой EPR-кубит, основываясь на измерениях как EPR-кубита Алисы, так и ее другого кубита (в тексте помечено ψ ). Для меня неясно, как лучше включить классические биты из измерения в схему.
Что я сделал до сих пор, так это построил схему без ремонта, запустил симуляцию и затем добавил соответствующие логические элементы X
и / или Z
на основе измеренных значений. Код выглядит как
import cirq
psi_qubit = cirq.GridQubit(0, 0)
epr_alice = cirq.GridQubit(0, 1)
epr_bob = cirq.GridQubit(0, 2)
circuit = cirq.Circuit()
# Generate the EPR pair
circuit.append(
[
cirq.H(epr_alice),
cirq.CNOT(epr_alice, epr_bob)
]
)
# Create the teleporation circuit without the fix up on Bob's EPR pair
circuit.append(
[
cirq.CNOT(psi_qubit, epr_alice),
cirq.H(psi_qubit),
cirq.measure(psi_qubit, epr_alice)
]
)
simulator = cirq.Simulator()
result = simulator.run(circuit)
measurement = result.measurements[f"{psi_qubit},{epr_alice}"][0]
if measurement[1]:
circuit.append([cirq.X(epr_bob)])
if measurement[0]:
circuit.append([cirq.Z(epr_bob)])
circuit.append(cirq.measure(epr_bob))
print(circuit)
Печатная схема выглядит как
(0, 0): ───────────@───H───M───────────
│ │
(0, 1): ───H───@───X───────M───────────
│
(0, 2): ───────X───────────────Z───M───
В то время как эта схема согласуется с тем, что напечатано в тексте для случая, когда ЭБП Алисы измеряет |0>
и ее другие меры кубита |1>
, повторное выполнение симуляции с полной схемой не гарантирует получение тех же самых измерений для Кубиты Алисы и, следовательно, часть исправления будут неправильными.
Каков наилучший способ передачи значений из измерения обратно в схему?