IBM Qiskit 入门

使用Qiskit的工作流程包括三个主要步骤:

  • 构建:设计一个代表您正在考虑的问题的量子电路。

  • 执行:在不同的后端(包括系统和模拟器)上运行实验。

  • 分析:计算汇总统计数据并可视化实验结果。

这是整个工作流程的示例,每个步骤在后续部分中都有详细说明:

import numpy as np
from qiskit import(
  QuantumCircuit,
  execute,
  Aer)
from qiskit.visualization import plot_histogram

# Use Aer's qasm_simulator
simulator = Aer.get_backend('qasm_simulator')

# Create a Quantum Circuit acting on the q register
circuit = QuantumCircuit(2, 2)

# Add a H gate on qubit 0
circuit.h(0)

# Add a CX (CNOT) gate on control qubit 0 and target qubit 1
circuit.cx(0, 1)

# Map the quantum measurement to the classical bits
circuit.measure([0,1], [0,1])

# Execute the circuit on the qasm simulator
job = execute(circuit, simulator, shots=1000)

# Grab results from the job
result = job.result()

# Returns counts
counts = result.get_counts(circuit)
print("\nTotal count for 00 and 11 are:",counts)

# Draw the circuit
circuit.draw()

在这里插入图片描述

# Plot a histogram
plot_histogram(counts)

在这里插入图片描述

分步工作流程

上面的程序可以分为六个步骤:

  • 导入包
  • 初始化变量
  • 添加门
  • 可视化电路
  • 模拟实验
  • 可视化结果

第1步:导入包

程序所需的基本元素如下导入:

import numpy as np
from qiskit import(
  QuantumCircuit,
  execute,
  Aer)
from qiskit.visualization import plot_histogram

其中:

QuantumCircuit:可以看作是量子系统的指令。它拥有您所有的量子运算。

execute:运行电路/实验。

Aer:处理模拟器后端。

plot_histogram:创建直方图。

步骤2:初始化变量

考虑下一行代码

circuit = QuantumCircuit(2, 2)

在这里,您将使用处于零状态的2个量子位进行初始化。将2个经典位设置为零;circuit是量子电路。

句法:

QuantumCircuit(int, int)

步骤3:添加逻辑门

您可以添加门(操作)来操纵电路的寄存器。

考虑以下三行代码:

circuit.h(0)
circuit.cx(0, 1)
circuit.measure([0,1], [0,1])

将门一对一地添加到电路中以形成贝尔状态

上面的代码应用了以下门:

QuantumCircuit.h(0):哈达玛门 H 作用在qubit 0上,使其处于叠加状态。
QuantumCircuit.cx(0, 1):受控非操作(CX)在控制量子位0和目标量子位1上,将量子位置于纠缠状态。   
QuantumCircuit.measure([0,1], [0,1]):如果将整个量子和经典寄存器传递给measure,第i位量子比特的测量结果将存储在第i个经典位中。

步骤4:可视化的电路

您可以使用 许多教科书和研究文章中使用QuantumCircuit.draw()的各种形式来查看设计的电路。

circuit.draw()

在这里插入图片描述

在此电路中,量子比特按顺序排列,顶部为量子比特0,底部为量子比特1。从左到右读取电路,这意味着在电路中较早使用的门显示在左侧。

QuantumCircuit.draw()或qiskit.visualization.circuit_drawer() 的默认后端是文本后端。但是,根据本地环境,可将这些默认值进行更改。这是通过用户配置文件完成的。默认情况下,用户配置文件应位于, ~/.qiskit/settings.conf并且是一个.ini文件。

例如,settings.conf用于设置Matplotlib画图的文件为:

[default]
circuit_drawer = mpl

您可以使用任何有效的电路画图后端作为此配置的值,其中包括text,mpl,latex和latex_source。

步骤5:模拟实验

Qiskit Aer是用于量子电路的高性能仿真器框架。它提供了多个后端 来实现不同的仿真目标。

如果您在安装Aer时遇到问题,则可以通过使用BasicAer替换Aer来使用Basic Aer提供程序。基本Aer包含在Qiskit Terra中。

import numpy as np
from qiskit import(
  QuantumCircuit,
  execute,
  BasicAer)
...

要模拟此电路,您将使用qasm_simulator。该电路的每次运行都会产生位串00或11。

simulator = Aer.get_backend('qasm_simulator')
job = execute(circuit, simulator, shots=1000)
result = job.result()
counts = result.get_counts(circuit)
print("\nTotal count for 00 and 11 are:",counts)
Total count for 00 and 11 are: {'00': 506, '11': 494}

如预期的那样,大约在百分之五十的时间内输出位串为00。可以通过方法的shots 参数指定电路运行的execute次数。模拟的数量设置为1000(默认值为1024)。

有了result对象后,您可以通过方法访问计数 get_counts(circuit)。这可以为您运行的实验提供汇总结果。

步骤6:可视化结果

Qiskit提供了许多可视化效果,

包括功能plot_histogram,以查看您的结果。

plot_histogram(counts)

在这里插入图片描述
观察到的概率 Pr(00) 和 Pr(11) 通过取各自的计数并除以总张数来计算。

  • 更多精彩?
    在这里插入图片描述

版权声明:本文为iMotherBoard原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。