如何使用 qiskit 将每个纯状态 ||0011⟩、||1100⟩、||0101⟩ 转换为 ||1111⟩

问题描述 投票:0回答:1

设计一个具有 4 个输入位 𝑏0,𝑏1,𝑏2,𝑏3 的量子电路,使其“标记”对应于状态 ||𝑏0𝑏1𝑏2𝑏3⟩ε{||0011⟩,||1100⟩,||0101⟩}

通过反转它们的振幅,保持所有其他状态不变。在此问题中,要求您在不使用辅助量子位或结果位的情况下实现此目的。

让我们考虑一个简单的问题,即反转 ||1111⟩ 对应的幅度,而其他所有值不变。证明这可以使用相位为 𝜋 弧度的“多控制相位门”来执行。写下该电路如何工作的简要描述。请参阅此类门的文档:https://docs.quantum.ibm.com/api/qiskit/qiskit. Circuit.library.MCPhaseGate

具有控制量子位 𝑏0、𝑏1、𝑏2 的多控相门,在 𝑏3 和 𝜋 相上运行,实现将 ||1111⟩ 转换为 −||1111⟩ 的酉运算,同时保持所有其他纯状态不变。

利用多控制相门的思想,现在使用 X 门(非量子)将每个纯态 ||0011⟩、||1100⟩、||0101⟩ 分别转换为 ||1111⟩ 并使用上面的 MCP 门用于标记相位。请记住使用 X 门将输入转换回来。

from qiskit import QuantumRegister, QuantumCircuit
from numpy import pi
def mark_pure_states(qc, b0 , b1, b2, b3):
    # mark the components corresponding to the pure states |0011> , |1100>, |0101>
    # your code here
    input_registers = [b0,b1,b2,b3]
    for i in input_registers:
        qc.h(i)
        qc.x(i)
    n = len(input_registers)
    qc.mcp(np.pi, input_registers[0:n-1], input_registers[n-1])
    for i in input_registers:
        qc.x(i) # invert back
        qc.h(i) # apply Hadamard back
    
b = QuantumRegister(4, 'b')
qc = QuantumCircuit(b)
mark_pure_states(qc, b[0], b[1], b[2], b[3])
qc.draw('mpl', style='iqp')

量子抽奖

quantum-computing qiskit
1个回答
0
投票

您能更准确地说明您期望的输出是什么吗? 据我所知,我认为您正在寻找 GHZ 门操作,您可以根据 b0,b1,b2,b3 值添加它的受控版本。

© www.soinside.com 2019 - 2024. All rights reserved.