Как взять классический вход в цепи Cirq - PullRequest
0 голосов
/ 11 марта 2019

Я новичок в квантовых вычислениях и играю с 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>, повторное выполнение симуляции с полной схемой не гарантирует получение тех же самых измерений для Кубиты Алисы и, следовательно, часть исправления будут неправильными.

Каков наилучший способ передачи значений из измерения обратно в схему?

1 Ответ

0 голосов
/ 20 марта 2019

Cirq намеренно пока не имеет этой функции, потому что большинство оборудования не имеет этой функции, и одной из целей проектирования Cirq является управление аппаратными возможностями.

Вы можете обойти это упущение, вставив операции CNOT и CZ с их контролем в измеряемые кубиты, и просто притворившись, что они управляются классически.

...