二、量子状态的表示和单量子比特门

1. 量子状态的表示


1.1 使用 Qiskit 初始化量子态

       我们知道,一个量子的状态可以表示为基态的线性叠加,如果我们使用
∣ 0 ⟩ = [ 1 0 ]      ∣ 1 ⟩ = [ 0 1 ] . |0\rangle = \begin{bmatrix} 1 \\ 0 \end{bmatrix} \, \, \, \, |1\rangle =\begin{bmatrix} 0 \\ 1 \end{bmatrix}. 0=[10]1=[01].

表示两个基态,那么任意的一个 qubit 的状态可以表示为

∣ ψ ⟩ = α ∣ 0 ⟩ + β ∣ 1 ⟩ |\psi\rangle = \alpha|0\rangle + \beta|1\rangle ψ=α0+β1

       对于任意一个状态,测量的过程可以转换为使用内积求得获得指定状态的概率,这个概率可以表示为 p ( ∣ x ⟩ ) = ∣ ⟨ x ∣ ψ ⟩ ∣ 2 p(|x\rangle) = | \langle x| \psi \rangle|^2 p(x)=xψ2 。例如,对于 ∣ ψ ⟩ |\psi\rangle ψ ,获得 ∣ 0 ⟩ |0\rangle 0 态的概率可以表示为 p ( ∣ 0 ⟩ ) = ∣ ⟨ 0 ∣ ψ ⟩ ∣ 2 p(|0\rangle) = | \langle 0| \psi \rangle|^2 p(0)=0ψ2

       对于状态 ∣ 1 ⟩ |1\rangle 1 进行测量,我们将会确定的得到 1。但是对于如下的状态:
[ 0 i ] = i ∣ 1 ⟩ \begin{bmatrix}0 \\ i\end{bmatrix} = i|1\rangle [0i]=i1

如果我们使用测量规则,可以得到如下结果:
∣ ⟨ x ∣ ( i ∣ 1 ⟩ ) ∣ 2 = ∣ i ⟨ x ∣ 1 ⟩ ∣ 2 = ∣ ⟨ x ∣ 1 ⟩ ∣ 2 |\langle x| (i|1\rangle) |^2 = | i \langle x|1\rangle|^2 = |\langle x|1\rangle|^2 x(i1)2=ix12=x12

我们可以发现, i i i 对于整个测量过程是没有影响的,状态 i ∣ 1 ⟩ i|1\rangle i1 ∣ 1 ⟩ |1\rangle 1 的测量概率是相等的( i i i 表示虚数,在 python 中使用 j j j 表示虚数 i i i)。因为测量是我们从 qubit 获取信息的唯一方式,所以从某种程度上来说,这两种状态是等价的。

       更普遍的,如果状态参数 γ \gamma γ 的模为 1,即 ∣ γ ∣ = 1 |\gamma|=1 γ=1 ,那么我们称 γ \gamma γ 为全局相位 (global phase),这个参数对 ∣ 0 ⟩ |0\rangle 0 ∣ 1 ⟩ |1\rangle 1 的影响是相同的,不会对最后的测量结果有影响。相反,除了全局相位,我们对只影响 ∣ 0 ⟩ |0\rangle 0 ∣ 1 ⟩ |1\rangle 1 的相位为相对相位(relative phase)。

       在 Qiskit 中,线路的默认输入状态都是 ∣ 0 ⟩ |0\rangle 0 ,但是我们可以使用 QuantumCircuit 的 initialize() 方法,将一个 qubit 转换为我们想要的叠加态。它的基本用法为:

QuantumCircuit.initialize( [ a, b ] , num)

该方法接收两个参数,第一个参数是一个列表,分别表示叠加状态的 α \alpha α β \beta β,他们要满足归一性,即 ∣ α ∣ 2 + ∣ β ∣ 2 = 1 |\alpha|^2 +|\beta|^2=1 α2+β2=1 ;第二个参数 num 表示将第几个 qubit 转换为指定的状态。

       我们可以使用 statevector_simulator模拟器执行线路,然后可以从结果中使用 .get_statevector() 获得状态向量。下面的代码展示了使用这种方法获得状态向量。

from qiskit import QuantumCircuit, execute, Aer
from qiskit.visualization import plot_histogram, plot_bloch_vector
from math import sqrt, pi

qc = QuantumCircuit(1)
initial_state = [1/sqrt(2),1/sqrt(2)]   #指定初始化状态

qc.initialize(initial_state, 0) # 将 qubit 初始化为指定状态
backend = Aer.get_backend('statevector_simulator') #指定 backend 为 statevector_simulator

result = execute(qc,backend).result() #执行线路
out_state = result.get_statevector()  #获取状态向量

print(out_state) 

"""output
[0.70710678+0.j 0.70710678+0.j]
"""

1.2 观察者效应

       每个量子态在经过测量后就会坍缩为基态中的一个,所以在电路中我们对整个线路执行一次测量后,所有的 qubit 都会坍缩为一个基态,对测量后的线路再次执行也只是使用基态在执行线路。下面展示了一个例子,该线路使用先将状态初始化为一个指定状态,然后对状态进行测量。执行该线路,输出测量结果,在运行后再次执行该电路多次,可以发现得到的结果和测量后的结果一直相同,这表示量子态已经坍缩到基态,再次执行也不会改变状态了。

from qiskit import QuantumCircuit, execute, Aer
from qiskit.visualization import plot_histogram, plot_bloch_vector
from math import sqrt, pi

qc = QuantumCircuit(1)

initial_state = [1/sqrt(3),sqrt(2)/sqrt(3)]    #指定初始状态
qc.initialize(initial_state, 0)                #初始化输入状态


backend = Aer.get_backend('statevector_simulator')   #指定模拟器
result = execute(qc,backend).result()                #执行线路,获取结果
out_state = result.get_statevector()                 #得到状态向量
counts = result.get_counts()                         #获取输出结果的占比

print('out_state:',out_state)                        #输出向量
print('counts:',counts)                              #输出结果的占比

"""output
out_state: [0.57735027+0.j 0.81649658+0.j]
counts: {'0': 0.333333333333333, '1': 0.666666666666667}
"""

qc.measure_all() #测量线路中的所有 qubit

#第二次执行线路
result = execute(qc,backend).result()
out_state = result.get_statevector()
counts = result.get_counts()

print('out_state:',out_state)                       #输出向量
print('counts:',counts)                             #输出结果的占比

"""output 输出的结果
out_state: [1.+0.j 0.+0.j]
counts: {'0': 1}
"""

#第三次次执行线路
result = execute(qc,backend).result()
out_state = result.get_statevector()
counts = result.get_counts()

print('out_state:',out_state)                      #输出向量
print('counts:',counts)                            #输出结果的占比

"""output 输出的结果
out_state: [1.+0.j 0.+0.j]
counts: {'0': 1}
"""
qc.draw()

在这里插入图片描述

       我们可以发现,在第一次执行测量之后,后面的结果其实就已经固定了,因为 qubit 已经坍缩到了某个基态,因此我们如果想要得到 qubit 的状态,应该将测量放在线路的最后,否则可能回对之后的运行造成影响。这里我们也可以看出,对于含有 global phase 的量子态,我们进行测量后,global phase 仍然存在,在真正的量子计算机上,我们永远无法测量 global phase 。

       量子的状态可以写成上面的叠加状态,但是在真正的量子计算机上我们只能得到确定的 qubit 0 或 qubit 1,也就是得到一串确定的比特流,并不能得到中间的量子态,量子态的概率性也不能体现出来,为了模拟得到这个量子态,Qiskit 提供了两种不同的模拟器,qasm_simulator 和真实计算机中的结果一样,只能的到确定的 bit 0 或 1 ,statevector_simulator 能够让我们在测量前获得叠加的量子状态。


1.3 布洛赫球

一个量子态可以表示为
∣ q ⟩ = α ∣ 0 ⟩ + β ∣ 1 ⟩ , α , β ∈ C |q\rangle = \alpha|0\rangle + \beta|1\rangle,\alpha, \beta \in \mathbb{C} q=α0+β1α,βC

通过后面的条件我们可以知道,量子态的系数都是复数,在上面我们也知道,对于有 global phase 的状态,我们并不能对他们进行区分,那么我们有没有更好的方法表示一个量子的状态呢?之所以我们不能区分有 global phase 的状态,是因为 α \alpha α β \beta β 可以取复数,我们可以将他们的取值限制为实数,然后为他们增加一项,从而让我们知道他们的 relative phase,如下定义
∣ q ⟩ = α ∣ 0 ⟩ + e i ϕ β ∣ 1 ⟩ , α , β , ϕ ∈ R |q\rangle = \alpha|0\rangle + e^{i\phi}\beta|1\rangle,\alpha, \beta, \phi \in \mathbb{R} q=α0+eiϕβ1α,β,ϕR

因为量子态必须是归一的,即
α 2 + β 2 = 1 \sqrt{\alpha^2 + \beta^2} = 1 α2+β2 =1

所以我们可以使用三角函数表示它们,即
sin ⁡ 2 x + cos ⁡ 2 x = 1 \sqrt{\sin^2{x} + \cos^2{x}} = 1 sin2x+cos2x =1

为了使用同一个变量 θ \theta θ 表示 α \alpha α β \beta β,我们将 α \alpha α β \beta β 表示如下:
α = cos ⁡ θ 2 , β = sin ⁡ θ 2 \alpha = \cos{\tfrac{\theta}{2}}, \quad \beta=\sin{\tfrac{\theta}{2}} α=cos2θ,β=sin2θ

因此,我们可以使用两个变量 ϕ \phi ϕ θ \theta θ 表示量子态:
∣ q ⟩ = cos ⁡ θ 2 ∣ 0 ⟩ + e i ϕ sin ⁡ θ 2 ∣ 1 ⟩ , θ , ϕ ∈ R |q\rangle = \cos{\tfrac{\theta}{2}}|0\rangle + e^{i\phi}\sin{\tfrac{\theta}{2}}|1\rangle,\theta, \phi \in \mathbb{R} q=cos2θ0+eiϕsin2θ1θ,ϕR


1.4 可视化量子比特

       如果我们将 ϕ \phi ϕ θ \theta θ 看作球坐标系中的参数(其中 r = 1 r=1 r=1,因为比特状态的模长为 1 ),那么我们可以在一个球面中画出任意的量子态,我们称为 布洛赫球(Bloch sphere)。Qiskit 中提供了将量子态转换为在布洛赫球中表示的方法,使用 qiskit.visualization 中的 plot_bloch_vector 即可实现。下面展示了 plot_bloch_vector 的用法。

from qiskit.visualization import plot_bloch_vector

coords = [1,0,0]                       #coords[<r>,<theta>,<phi>] 
plot_bloch_vector(coords)              #theta 是和z轴的夹角,phi 是和 x轴的夹角

在这里插入图片描述

2. 单量子比特门

       量子线路的一个重要特点是,对量子的操作(量子门)是可逆的,这些可逆的门可以表示为矩阵,也可以表示为围绕布洛赫球的旋转。

2.1 泡利门 (The Pauli Gates)

2.1.1 The X-Gate

X-gate 可以表示为 Pauli-X 矩阵:
X = [ 0 1 1 0 ] = ∣ 0 ⟩ ⟨ 1 ∣ + ∣ 1 ⟩ ⟨ 0 ∣ X = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} = |0\rangle\langle1| + |1\rangle\langle0| X=[0110]=01+10

X-gate 的作用是执行 比特翻转,它可以将 ∣ 0 ⟩ |0\rangle 0 转换为 ∣ 1 ⟩ |1\rangle 1 ,将 ∣ 1 ⟩ |1\rangle 1 转换为 ∣ 1 ⟩ |1\rangle 1 。在 Qiskit 中,我们使用 x 操作实现 X-gate 。下面展示了使用 X-gate 对输入 qubit 进行操作,从结果可以看出,X-gate 将 ∣ 0 ⟩ |0\rangle 0 态转换为了 ∣ 1 ⟩ |1\rangle 1

       我们可以使用 qiskit.visualization.plot_bloch_multivector 来将状态向量在布洛赫球中表示出来。

from qiskit import QuantumCircuit, execute, Aer
from math import pi
from qiskit.visualization import plot_bloch_multivector

qc = QuantumCircuit(2)
qc.x(1)
qc.draw()

backend = Aer.get_backend('statevector_simulator')     #设置模拟器
out = execute(qc,backend).result().get_statevector()   #执行线路

plot_bloch_multivector(out)     #使用布洛赫球表示状态向量

在这里插入图片描述
在这里插入图片描述

2.1.2 The Y-gate & Z -gate

Y-gate 为 Pauli-Y 矩阵,它表示如下,Y-gate 在布洛赫球面表达下将使目标量子位绕 y 轴旋转 180 度。
Y = [ 0 − i i 0 ] = − i ∣ 0 ⟩ ⟨ 1 ∣ + i ∣ 1 ⟩ ⟨ 0 ∣ Y = \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}=-i|0\rangle\langle1| + i|1\rangle\langle0| Y=[0ii0]=i01+i10

Z-gate 为 Pauli-Z 矩阵,表示如下,它是将 ∣ 1 ⟩ |1\rangle 1 转换为 − ∣ 1 ⟩ -|1\rangle 1
Z = [ 1 0 0 − 1 ] = ∣ 0 ⟩ ⟨ 0 ∣ − ∣ 1 ⟩ ⟨ 1 ∣ Z = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}=|0\rangle\langle0| - |1\rangle\langle1| Z=[1001]=0011

       在 Qiskit 中,使用 y 和 z 分别表示 Y-gate 和 Z-gate,下面展示了他们的作用方式和结果。

from qiskit import QuantumCircuit, execute, Aer
from math import pi
from qiskit.visualization import plot_bloch_multivector

qc = QuantumCircuit(3)     #创建有三个 qubit 的线路
qc.y(1)                    #对第二个 qubit 使用 Y-gate
qc.z(2)					   #对第三个 qubit 使用 Z-gate
qc.draw()

backend = Aer.get_backend('statevector_simulator')
out = execute(qc,backend).result().get_statevector()
plot_bloch_multivector(out)    #使用布洛赫球表示状态向量


在这里插入图片描述

       通过计算我们可以发现 ∣ 0 ⟩ |0\rangle 0 ∣ 1 ⟩ |1\rangle 1 其实是 Z-gate 的特征向量,它们对应于 Z 轴的上下两个方向,我们称为 Z-basis;而 ∣ + ⟩ |+\rangle + ∣ − ⟩ |-\rangle 是 X-gate 的特征向量,对应于 X 轴前后两个方向,称为 X-basis 。Y-gate 的特征向量也可以组合成为一组基态,他们对应 Y 轴的左右两个方向,所以其实我们有无穷多个基态,只要保持他们是正交的向量即可。


2.2 The Hadamard Gates

The Hadamard Gates(H-gate),是一个基本的量子门,它可以让我们创建一个叠加态。泡利门只能让我们实现状态 ∣ 0 ⟩ |0\rangle 0 ∣ 1 ⟩ |1\rangle 1 之间的转换,但是我们并不能得到叠加态。H-gate 可以用矩阵表示为:
H = 1 2 [ 1 1 1 − 1 ] H = \frac{1}{\sqrt{2}}\begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} H=2 1[1111]

H-gate 作用在 ∣ 0 ⟩ |0\rangle 0 ∣ 1 ⟩ |1\rangle 1 可以表示如下:
H ∣ 0 ⟩ = ∣ + ⟩ H|0\rangle = |+\rangle H0=+

H ∣ 1 ⟩ = ∣ − ⟩ H|1\rangle = |-\rangle H1=

H-gate 可以看作是将状态绕 x轴 和 z轴 中间的 z = x z=x z=x 这条线进行旋转,也可以看做是 X-basis 和 Z-basis 之间的转换。下面是使用 Qiskit 应用 H-gate 的一个例子。

from qiskit import QuantumCircuit, execute, Aer
from math import pi
from qiskit.visualization import plot_bloch_multivector


qc = QuantumCircuit(2)
qc.h(1)      #在第二个 qubit 上使用 H-gate
qc.draw()


backend = Aer.get_backend('statevector_simulator')
out = execute(qc,backend).result().get_statevector()
plot_bloch_multivector(out)

在这里插入图片描述
在这里插入图片描述

2.3 使用不同基态进行测量

       在对 qubit 测量时我们可以选择不同的基态,在不同的基态测量可能会得到不同的结果,例如,我们在 X-basis 下测量得到各个基态的概率就可以表示为:
p ( ∣ + ⟩ ) = ∣ ⟨ + ∣ q ⟩ ∣ 2 , p ( ∣ − ⟩ ) = ∣ ⟨ − ∣ q ⟩ ∣ 2 p(|+\rangle) = |\langle+|q\rangle|^2, \quad p(|-\rangle) = |\langle-|q\rangle|^2 p(+)=+q2,p()=q2

       经过测量,我们可以确定的得到两个基态中的一个,但是 Qiskit 中仅仅支持在 Z-basis 下测量,即得到 ∣ 0 ⟩ |0\rangle 0 ∣ 1 ⟩ |1\rangle 1 ,如果我们想要在其他基态下测量,需要使用 H-gate 构建。下面创建了一个基于 X-basis 的测量方式,在两个 H-gate 之间加入一个基于 Z-basis 的测量,就可以实现在 X-basis 下的测量。

在这里插入图片描述

from qiskit import QuantumCircuit, execute, Aer
from math import pi
from qiskit.visualization import plot_bloch_multivector

def x_measurement(qc,qubit,cbit):
    #将 qubit 的测量结果保存到 cbit
    qc.h(qubit)
    qc.measure(qubit, cbit)
    qc.h(qubit)
    return qc

initial_state = [0,1]  #初始化状态为 |1>

qc = QuantumCircuit(1,1)
qc.initialize(initial_state, 0)
x_measurement(qc, 0, 0)   #使用 X-basis 测量
qc.draw()

backend = Aer.get_backend('statevector_simulator') 
out_state = execute(qc,backend).result().get_statevector() 
plot_bloch_multivector(out_state) 

在这里插入图片描述
在这里插入图片描述

       我们将状态初始化为 ∣ 1 ⟩ |1\rangle 1 ,如果在 Z-basis 下测量,我们只能得到 ∣ 1 ⟩ |1\rangle 1 ,但是在 X-basis 下测量,我们可以随机的得到 ∣ + ⟩ |+\rangle + ∣ − ⟩ |-\rangle 中的任意一个。

       在 Z-basis 上测量一个状态,将消除在 X-basis 上测量特定状态的所有确定性,反之亦然。无论我们的量子系统处于什么状态,总有一种测量,在这种测量下,得到的结果是确定的。


2.4 The R ϕ \boldsymbol{_\phi} ϕ-gate

       R ϕ _\phi ϕ-gate 是一个带有参数的门,在使用是我们需要给定一个数字 ϕ \phi ϕ 。它表示将布洛赫向量围绕 Z轴 方向旋转 ϕ \phi ϕ 角度,所以有时候也称为 R z _\mathrm{z} z-gate 。矩阵表示为:
R ϕ = [ 1 0 0 e i ϕ ] R_\phi = \begin{bmatrix} 1 & 0 \\ 0 & e^{i\phi} \end{bmatrix} Rϕ=[100eiϕ]

其中 ϕ \phi ϕ 是一个实数。

在 Qiskit 中使用 rz(phi, qubit) 表示 R ϕ _\phi ϕ-gate 。

from qiskit import QuantumCircuit, execute, Aer
from math import pi
from qiskit.visualization import plot_bloch_multivector

qc = QuantumCircuit(2)  #创建有两个 qubit 的线路

qc.h(0)     #将两个 qubit 调整到 x 轴以观察效果
qc.h(1)

qc.rz(pi/2, 1)  #将 qubit 1 绕 z 轴旋转 pi/2 角度
qc.draw()

backend = Aer.get_backend('statevector_simulator') 
out_state = execute(qc,backend).result().get_statevector() 
plot_bloch_multivector(out_state) 

在这里插入图片描述
在这里插入图片描述


2.5 The I-gate, S-gate and T-gate

2.5.1 The I-gate

I-gate 表示等价门,也就是单位向量,I-gate 门作用在线路上不会对 qubit 有任何影响,可以用单位矩阵表示为:
I = [ 1 0 0 1 ] I = \begin{bmatrix} 1 & 0 \\ 0 & 1\end{bmatrix} I=[1001]

2.5.2 The S-gates

S-gate 是 ϕ = π 2 \phi = \frac{\pi}{2} ϕ=2π 时的 R ϕ _\phi ϕ-gate,它表示绕 Z轴 旋转 9 0 ° 90^\degree 90° 。S † ^\dagger -gate 是在 ϕ = − π 2 \phi = -\frac{\pi}{2} ϕ=2π 时的 R ϕ _\phi ϕ-gate 门。它们可以用矩阵表示为:
S = [ 1 0 0 e i π 2 ] , S † = [ 1 0 0 e − i π 2 ] S = \begin{bmatrix} 1 & 0 \\ 0 & e^{\frac{i\pi}{2}} \end{bmatrix}, \quad S^\dagger = \begin{bmatrix} 1 & 0 \\ 0 & e^{-\frac{i\pi}{2}} \end{bmatrix} S=[100e2iπ],S=[100e2iπ]

S-gate 和 S † ^\dagger -gate 也分别被称为 Z \sqrt{}{Z} Z-gate 和 Z † \sqrt{}{Z}^\dagger Z-gate ,因为两个连续的 S-gate 等价于使用一次 Z-gate ,即:
S S ∣ q ⟩ = Z ∣ q ⟩ SS|q\rangle = Z|q\rangle SSq=Zq

在 Qiskit 中,我们使用 s() 和 sdg() 分别表示 S-gate 和 S † ^\dagger -gate 。

from qiskit import QuantumCircuit, execute, Aer
from math import pi
from qiskit.visualization import plot_bloch_multivector

qc = QuantumCircuit(3)

qc.h(0)
qc.h(1)
qc.h(2)


qc.s(1)  #对 qubit 1 施加 S-gate
qc.sdg(2) 
qc.draw()

backend = Aer.get_backend('statevector_simulator') 
out_state = execute(qc,backend).result().get_statevector() 
plot_bloch_multivector(out_state) 

在这里插入图片描述
在这里插入图片描述

2.5.3 The T-gate

T-gates 是在 ϕ = π / 4 \phi = \pi/4 ϕ=π/4 时的 R ϕ _\phi ϕ-gate ,分别表示为:
T = [ 1 0 0 e i π 4 ] , T † = [ 1 0 0 e − i π 4 ] T = \begin{bmatrix} 1 & 0 \\ 0 & e^{\frac{i\pi}{4}} \end{bmatrix}, \quad T^\dagger = \begin{bmatrix} 1 & 0 \\ 0 & e^{-\frac{i\pi}{4}} \end{bmatrix} T=[100e4iπ],T=[100e4iπ]

类似于 S-gate ,T-gate 也可以表示为 Z \sqrt{}{Z} Z-gate 。

在 Qiskit 中使用 t() 和 tdg() 表示。

from qiskit import QuantumCircuit, execute, Aer
from math import pi
from qiskit.visualization import plot_bloch_multivector

qc = QuantumCircuit(3)

qc.h(0)
qc.h(1)
qc.h(2)


qc.t(1)  #在 qubit 1 施加 T-gate
qc.tdg(2)

qc.draw()


backend = Aer.get_backend('statevector_simulator') 
out_state = execute(qc,backend).result().get_statevector() 
plot_bloch_multivector(out_state) 

在这里插入图片描述
在这里插入图片描述

2.6 General U-gates

       从上面我们可以看出,I, Z, S & T-gates 都是 R ϕ _\phi ϕ-gate 的特殊情况。其实 U 3 _3 3-gate 是所有单量子比特的通用形式,它是一个参数化的门,可以表示为:
U 3 ( θ , ϕ , λ ) = [ cos ⁡ ( θ / 2 ) − e i λ sin ⁡ ( θ / 2 ) e i ϕ sin ⁡ ( θ / 2 ) e i λ + i ϕ cos ⁡ ( θ / 2 ) ] U_3(\theta, \phi, \lambda) = \begin{bmatrix} \cos(\theta/2) & -e^{i\lambda}\sin(\theta/2) \\ e^{i\phi}\sin(\theta/2) & e^{i\lambda+i\phi}\cos(\theta/2) \end{bmatrix} U3(θ,ϕ,λ)=[cos(θ/2)eiϕsin(θ/2)eiλsin(θ/2)eiλ+iϕcos(θ/2)]

       上面所展示的所有的门都可以通过固定 U 3 ( θ , ϕ , λ ) U_3(\theta,\phi,\lambda) U3(θ,ϕ,λ) 中的参数确定。

       Qiskit 提供了 U 2 _2 2-gate 和 U 3 _3 3-gate ,它们分别是 θ = π 2 \theta=\frac{\pi}{2} θ=2π,和 θ = ϕ = 0 \theta=\phi=0 θ=ϕ=0 时的 U 3 _3 3 门。其实 U 1 _1 1-gate 就等价于 R ϕ _\phi ϕ-gate 。
U 3 ( π 2 , ϕ , λ ) = U 2 = 1 2 [ 1 − e i λ e i ϕ e i λ + i ϕ ] U 3 ( 0 , 0 , λ ) = U 1 = [ 1 0 0 e i λ ] \begin{aligned} U_3(\tfrac{\pi}{2}, \phi, \lambda) = U_2 = \tfrac{1}{\sqrt{2}}\begin{bmatrix} 1 & -e^{i\lambda} \\ e^{i\phi} & e^{i\lambda+i\phi} \end{bmatrix} & \quad & U_3(0, 0, \lambda) = U_1 = \begin{bmatrix} 1 & 0 \\ 0 & e^{i\lambda}\\ \end{bmatrix} \end{aligned} U3(2π,ϕ,λ)=U2=2 1[1eiϕeiλeiλ+iϕ]U3(0,0,λ)=U1=[100eiλ]

       在使用真正的 IBM 量子硬件运行线路时,所有的单量子比特操作都先被编译为 U 1 U_1 U1 U 2 U_2 U2 U 3 U_3 U3 ,因为他们又被称为物理门。

  • 14
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值