【问题标题】:Deutsch algorithm with NOT gate as oracle以非门作为预言的 Deutsch 算法
【发布时间】:2023-04-01 14:33:02
【问题描述】:

我尝试使用 qiskit 实现 Deutsch 算法。以下是代码。

circ = QuantumCircuit(2, 2)  # |q_1q_0>
circ.x(0)
circ.h([0,1])

# Oracle
circ.barrier()
circ.x(1)
circ.barrier()

circ.h(0)
circ.measure([0,1], [0,1])

backend_sim = Aer.get_backend('qasm_simulator')
job = execute(circ, backend_sim, shots=1024)
result = job.result()

counts = result.get_counts(circ)
print(counts)

enter image description here

我预计第一个经典位是 0(也就是说,对应于那个 oracle 的函数是一个常量函数)。但是,输出如下。

{'11': 496, '01': 528}

为什么输出暗示函数是平衡的?

【问题讨论】:

    标签: python quantum-computing


    【解决方案1】:

    Deutsch 算法将 X 门应用于您用于相位回扣技巧的量子位,使其在应用预言机之前处于 |-⟩ 状态。您的实现将其应用于“数据”量子位,因此算法的组合效果(在 H 门取消之后)只是准备处于 |1⟩ 状态的数据量子位。

    【讨论】:

    • 非常感谢。我误解了算法。我将我的代码更正为circ.h(0)circ.h(1),然后我得到了输出{'00': 515, '01': 509},现在我知道第二个经典位显示了函数类型。
    • @kskS 我很高兴能帮上忙!您可以将答案标记为已接受,以表明它解决了您的问题
    • 感谢您的 cmets。我猜我将您的答案标记为已接受:)
    猜你喜欢
    • 1970-01-01
    • 2015-05-12
    • 2020-02-03
    • 2014-10-25
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多