簡體   English   中英

如何在Cirq電路中采用經典輸入

[英]How to take classical input in a Cirq circuit

我是量子計算的新手,在閱讀Nielsen和Chuang 撰寫的《 量子計算》和《量子信息》時 ,一直在與Cirq一起玩。 本文中最有趣的電路之一與量子隱形傳態有關,我正在嘗試在Cirq中實現它。 如描述的那樣構造EPR對和大部分電路非常簡單。

但是,Bob需要根據來自Alice的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───

盡管此電路與Alice的EPR量子位|0>和她的其他量子位|1>情況下的文本一致,但不能保證在完整電路上再次運行仿真可以得到與Alice的量子位相同的測量值。因此修復部分將不正確。

將測量值反饋回電路的最佳方法是什么?

Cirq刻意不具備此功能,因為大多數硬件都不具備此功能,並且Cirq的設計目標之一是由硬件功能來驅動。

您可以通過插入CNOT和CZ操作及其對測得的量子位的控制來解決遺漏,並假裝它們是經典控制的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM