【问题标题】:How to make an iterative quantum circuit in Qiskit?如何在 Qiskit 中制作迭代量子电路?
【发布时间】:2019-07-31 04:00:57
【问题描述】:

我想做一个迭代执行的代码。

例如:在one-qubit系统中,我想在theta = [ 0, ..., 2π]的每个角度进行100次测量,电路如下。

我们可以制作如下的迭代代码吗? (这是完全错误的!)

theta = 0
for theta in np.arange(0, np.pi, np.pi/100):
    qreg q[1]
    creg c[1]
    ry(theta) q[0]
    measure q[0] -> c[0]

另外,我们可以制作一个参数为theta的函数如下吗? (这是完全错误的!)

function q_citcuit(theta)
    qreg q[1]
    creg c[1]
    ry(theta) q[0]
    measure q[0] -> c[0]
    return result

【问题讨论】:

    标签: qiskit


    【解决方案1】:

    除了为每次迭代指定门之外,您还需要定义一个电路和寄存器,每次都运行和测量。这是一个演示这些概念的 Jupyter 笔记本: https://nbviewer.jupyter.org/github/Qiskit/qiskit-tutorials/blob/master/qiskit/basics/1_getting_started_with_qiskit.ipynb

    【讨论】:

      【解决方案2】:

      一旦您完成了 James 发给您的教程并掌握了基础知识,我认为以下信息将对您想要运行的特定实验有所帮助。您可以在一次执行调用中执行circuits 的列表,并且可以迭代地创建这些电路。

      theta_list = [...]  # Whatever angles you want to put in here
      circuit_list = []  # This will be what is executed
      
      # After instantiating the QuantumRegisters and ClassicalRegisters as qreg and creg
      for index in range(len(theta_list)):
         qc = QuantumCircuit(qreg, creg)
         qc.ry(theta_list[index], qreg[0])
         qc.measure(qreg[0], creg[0])
         circuit_list.append(qc)
      
      # After choosing a backend
      job = execute(circuit_list, backend, shots=100)
      

      这应该对您有用,但是,我还是会先查看 James 回答中的教程,以确保您掌握了核心概念并能够完全理解这段代码中发生的事情。

      【讨论】:

        猜你喜欢
        • 2020-08-30
        • 2020-04-20
        • 2021-11-13
        • 1970-01-01
        • 2020-01-23
        • 1970-01-01
        • 2016-02-06
        • 2020-07-10
        • 1970-01-01
        相关资源
        最近更新 更多