Я новичок в квантовых вычислениях и играл с Цирк, когда читал Квантовые вычисления и квантовая информация Нильсена и Чуанга. Одна из первых интересных схем в тексте относится к квантовой телепортации, и я пытаюсь реализовать ее в Cirq. Построение пары ЭПР и большей части схемы, как описано, довольно просто.
Однако Бобу нужно «подправить» свой кубит ЭПР на основе измерений как кубита ЭПР Алисы, так и другого ее кубита (обозначенного в тексте как ψ). Мне неясно, как лучше всего включить классические биты из измерения в схему.
Что я сделал до сих пор, так это построил схему без исправления, запустил симуляцию, а затем добавил соответствующие вентили 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>
, повторный запуск симуляции с полной схемой не гарантирует получения тех же измерений для кубитов Алисы и, следовательно, исправления. часть будет неправильной.
Каков наилучший способ передать значения измерения обратно в схему?
Cirq намеренно еще не имеет этой функции, потому что большинство аппаратных средств не имеют этой функции, и одна из целей разработки Cirq заключается в том, чтобы руководствоваться аппаратными возможностями.
Вы можете обойти это упущение, вставив операции CNOT и CZ с их контролем над измеренными кубитами и просто притворившись, что они классически контролируются.