mindspore打卡第十三天之mindquantum计算基测量
# 量子测量
## 概述
在量子线路设计时,我们最终需要通过测量(measure)操作获得结果,进行测量的时候需要选定特定的基态进行测量,而测量得到的结果是不确定的,测量后量子态也会随机坍塌到我们测量的某个基态上。
量子测量由一组测量算子${M_m}$描述,这些算子作用在被测系统状态空间上,指标$m$表示实验中可能的测量结果,若在测量前,量子系统的状态为$|\psi〉$,则结果$m$发生的可能性为:
$$
p(m)=〈\psi|M^\dagger_mM_m|\psi〉
$$
测量后系统的状态塌缩为:
$$
\frac{M_m|\psi〉}{\sqrt{〈\psi|M^\dagger_mM_m|\psi〉}}
$$
测量算子满足完备性方程:
$$
\Sigma_mM^\dagger_mM_m=I
$$
完备性方程表达了概率之和为1的事实:
$$
1=\Sigma_m p(m)=\Sigma_m 〈\psi|M^\dagger_mM_m|\psi〉
$$
该方程对所有的$|\psi〉$都成立,与完备性方程等价,但直接验证完备性方程更简单,所以将完备性方程作为约束条件。
根据选取测量算子的不同,我们常见的测量分成计算基测量、投影测量、Pauli测量等,MindSpore Quantum提供了丰富的测量功能与可视化展示工具,我们利用这些功能进一步学习量子测量。
在量子力学中,测量过程可以借助线性代数的概念来理解。假设我们有一个量子系统,其状态在测量前由向量 $|\psi〉$ 描述,这个向量位于复数向量空间中,满足归一化条件。测量算子 ${M_m}$ 是一组正交投影算子,它们作用于这个状态空间上。每个算子 $M_m$ 对应一个可能的测量结果 $m$。下面用线性代数的术语来解析测量过程:
### 测量结果的概率 $p(m)$
测量结果 $m$ 发生的概率由算子 $M_m$ 通过以下公式计算:
\[ p(m) = 〈\psi|M^\dagger_mM_m|\psi〉 \]
这里 $M^\dagger_m$ 是 $M_m$ 的共轭转置(或称为伴随算子)。为了计算这个表达式,首先,$M_m|\psi〉$ 是算子 $M_m$ 作用于状态向量 $|\psi〉$ 的结果,得到一个新的向量。然后,$〈\psi|M^\dagger_m$ 是算子 $M^\dagger_m$ 作用于 $|\psi〉$ 的伴随向量 $〈\psi|$ 的结果。最后,两个结果向量的内积给出的是一个标量,即概率 $p(m)$。
### 测量后的状态
测量后,量子系统塌缩到一个新的状态,这个新的状态由 $M_m|\psi〉$ 归一化后给出:
\[ |\psi_{new}〉 = \frac{M_m|\psi〉}{\sqrt{〈\psi|M^\dagger_mM_m|\psi〉}} \]
这里的分母 $\sqrt{〈\psi|M^\dagger_mM_m|\psi〉}$ 正是前面提到的概率 $p(m)$ 的平方根,保证了新状态向量的归一化,即 $〈\psi_{new}|\psi_{new}〉 = 1$。
### 解释
1. **概率计算**:$p(m)$ 的计算涉及内积,内积在向量空间中衡量两个向量的方向相似性及其大小乘积。在量子力学中,这个内积代表了测量得到特定结果的可能性大小。
2. **状态塌缩**:测量后状态的更新是量子力学的一个关键概念,反映了测量对量子系统的影响。通过将 $M_m|\psi〉$ 归一化,我们得到了一个反映测量结果的新状态向量,这与量子力学的哥本哈根诠释相一致。
综上所述,测量过程的数学描述不仅体现了线性代数中向量和算子的运算,而且深刻地揭示了量子力学的非经典特性,如概率性和塌缩。
```python
```
```python
```
假设我们有一个简单的量子系统,其状态可以表示为一个两维的希尔伯特空间,即一个两量子比特系统。我们考虑一个具体的例子来解释测量过程及测量算子的概念。
### 例子:测量一个两量子比特系统
假设我们有两个测量算子 \(M_0\) 和 \(M_1\),分别对应测量结果为 \(0\) 和 \(1\) 的情况。为了简化,我们考虑测量第一个量子比特的情况。如果系统状态为 \(|\psi〉 = \alpha|00〉 + \beta|01〉 + \gamma|10〉 + \delta|11〉\),其中 \(\alpha, \beta, \gamma, \delta\) 是复数,且满足归一化条件 \(|\alpha|^2 + |\beta|^2 + |\gamma|^2 + |\delta|^2 = 1\)。
### 测量算子定义
为了测量第一个量子比特,我们定义测量算子 \(M_0\) 和 \(M_1\) 如下:
- \(M_0 = |0〉〈0| \otimes I = \begin{bmatrix} 1 & 0 \\ 0 & 0 \end{bmatrix} \otimes \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix}\)
- \(M_1 = |1〉〈1| \otimes I = \begin{bmatrix} 0 & 0 \\ 0 & 1 \end{bmatrix} \otimes \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}\)
### 完备性方程验证
完备性方程 \(Σ_m M^\dagger_m M_m = I\) 可以通过计算来验证:
- \(M_0^\dagger M_0 = M_0\) 和 \(M_1^\dagger M_1 = M_1\),因为这些矩阵都是厄米矩阵(Hermitian matrices)。
- 验证完备性方程:\(M_0^\dagger M_0 + M_1^\dagger M_1 = M_0 + M_1 = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} = I\)
### 测量结果的概率
测量结果为 \(0\) 的概率 \(p(0)\) 可以通过 \(p(0) = 〈\psi|M_0^\dagger M_0|\psi〉\) 计算:
- \(p(0) = 〈\psi|M_0|\psi〉 = (\alpha^* \alpha + \beta^* \beta)\)
同样,测量结果为 \(1\) 的概率 \(p(1)\) 可以通过 \(p(1) = 〈\psi|M_1^\dagger M_1|\psi〉\) 计算:
- \(p(1) = 〈\psi|M_1|\psi〉 = (\gamma^* \gamma + \delta^* \delta)\)
### 测量后状态
如果测量结果为 \(0\),则测量后的状态为:
\[
\frac{M_0|\psi〉}{\sqrt{p(0)}} = \frac{\alpha|00〉 + \beta|01〉}{\sqrt{|\alpha|^2 + |\beta|^2}}
\]
如果测量结果为 \(1\),则测量后的状态为:
\[
\frac{M_1|\psi〉}{\sqrt{p(1)}} = \frac{\gamma|10〉 + \delta|11〉}{\sqrt{|\gamma|^2 + |\delta|^2}}
\]
### 数值例子
假设 \(|\psi〉 = \frac{1}{2}|00〉 + \frac{\sqrt{3}}{2}|01〉 + \frac{1}{\sqrt{2}}|10〉\),那么:
- \(p(0) = 〈\psi|M_0|\psi〉 = \left|\frac{1}{2}\right|^2 + \left|\frac{\sqrt{3}}{2}\right|^2 = \frac{1}{4} + \frac{3}{4} = 1\)
- \(p(1) = 〈\psi|M_1|\psi〉 = \left|\frac{1}{\sqrt{2}}\right|^2 = \frac{1}{2}\)
测量后,如果结果为 \(0\),状态为 \(\frac{1}{2}|00〉 + \frac{\sqrt{3}}{2}|01〉\);如果结果为 \(1\),状态为 \(\sqrt{2}|10〉\)。
这个例子展示了如何通过具体的数值来理解和计算量子测量的过程。
公式 \(p(m)=〈\psi|M^\dagger_mM_m|\psi〉\) 描述的是量子力学中的测量概率,其中涉及的符号和运算规则遵循量子力学的数学框架。让我们逐步解析这个表达式:
1. **Dirac Notation(狄拉克符号)**:
- \(|\psi〉\) 表示量子系统的状态向量,称为“Ket”,代表一个量子态。
- \(〈\psi|\) 是 \(|\psi〉\) 的Hermitian共轭,称为“Bra”,它是量子态的复共轭转置。
2. **Adjoint Operator(伴随算符)**:
- \(M^\dagger_m\) 是测量算子 \(M_m\) 的伴随算符(或称作Hermitian共轭),它保证了算子的线性性和量子力学中概率的实数性质。
3. **Measurement Operators(测量算子)**:
- \(M_m\) 是与测量结果 \(m\) 相关联的测量算子,它代表了在测量时对量子态的影响。
4. **Inner Product(内积)**:
- \(〈\psi|M^\dagger_mM_m|\psi〉\) 是两个量子态的内积,具体来说,是 \(|\psi〉\) 和 \(M^\dagger_mM_m|\psi〉\) 这两个态的内积。量子力学中,两个态的内积给出了它们之间的“相似度”。
5. **Probability of Measurement Outcome(测量结果的概率)**:
- \(p(m)\) 表示在测量时得到结果 \(m\) 的概率。这个概率是由 \(|\psi〉\) 经过 \(M^\dagger_mM_m\) 算子变换后再与原态 \(|\psi〉\) 的内积的模平方给出的。
6. **Normalization(归一化)**:
- 在量子力学中,量子态需要归一化,即 \(〈\psi|\psi〉=1\),这意味着测量任何可能的结果的概率总和为1。
7. **Completeness Relation(完备性关系)**:
- 测量算子满足完备性关系 \(\sum_m M^\dagger_mM_m=I\),其中 \(I\) 是单位算子。这确保了所有可能测量结果的概率加起来等于1。
现在,让我们通过一个具体的例子来说明这个公式的使用:
假设一个量子系统处于状态 \(|\psi〉\),并且我们有两个可能的测量结果,分别由算子 \(M_0\) 和 \(M_1\) 表示。如果我们想知道测量结果为 \(m=0\) 的概率,我们按照公式计算:
\[p(0)=〈\psi|M^\dagger_0M_0|\psi〉\]
具体地,如果 \(|\psi〉\) 和 \(M_0\) 是这样的:
\[|\psi〉 = \alpha|0〉 + \beta|1〉\]
\[M_0 = |0〉〈0|\]
其中 \(|0〉\) 和 \(|1〉\) 是正交基矢,\(\alpha\) 和 \(\beta\) 是复数,满足 \(|\alpha|^2 + |\beta|^2 = 1\)。
则 \(M^\dagger_0 = M_0\)(因为 \(M_0\) 是Hermitian算子),于是:
\[p(0) = 〈\psi|M_0M_0|\psi〉 = 〈\psi|M_0|\psi〉 = |\alpha|^2\]
这表明,测量结果为 \(0\) 的概率就是量子态在基矢 \(|0〉\) 上的投影的模平方。
这个公式和概念是量子测量理论的核心部分,它解释了在量子系统中如何通过算子来预测测量结果的概率。
狄拉克符号(Dirac notation)是量子力学中用来表示量子态的一种简洁而有力的数学工具。由物理学家保罗·狄拉克(Paul Dirac)提出,它使用“Ket”和“Bra”来分别表示量子态向量和其共轭转置。下面通过一个具体的例子来解析这一符号体系。
### Ket 表示量子态
假设我们有一个简单的量子系统,例如一个量子比特(qubit),它可以处于两种可能的状态之一:|0〉 和 |1〉。|0〉 和 |1〉 是该系统的一组正交基,意味着任何一个量子比特的状态都可以用这两个基矢的线性组合来表示。
例如,一个量子比特的状态可以表示为:
\[
|\psi〉 = \alpha|0〉 + \beta|1〉
\]
其中,\(\alpha\) 和 \(\beta\) 是复数系数,且它们满足归一化条件 \(|\alpha|^2 + |\beta|^2 = 1\)。这表示量子比特以 \(|\alpha|^2\) 的概率处于状态 |0〉,以 \(|\beta|^2\) 的概率处于状态 |1〉。
### Bra 表示量子态的共轭转置
对于上述量子态 \(|\psi〉\),其对应的“Bra”表示为 \(〈\psi|\),它是 \(|\psi〉\) 的Hermitian共轭,即复共轭转置。具体来说,如果 \(|\psi〉\) 写成列向量的形式,那么 \(〈\psi|\) 就是相应的行向量,并且每个元素都取复共轭。
继续上面的例子,如果我们有:
\[
|\psi〉 = \alpha|0〉 + \beta|1〉 = \begin{bmatrix} \alpha \\ \beta \end{bmatrix}
\]
则 \(〈\psi|\) 将是:
\[
〈\psi| = (\alpha^*, \beta^*)
\]
其中,\(\alpha^*\) 和 \(\beta^*\) 分别是 \(\alpha\) 和 \(\beta\) 的复共轭。
### 内积与外积
狄拉克符号也用来表示内积和外积。内积(也叫标量积或点积)是两个量子态之间的运算,它将两个“Ket”和“Bra”结合在一起,给出一个复数结果。例如,两个量子态 \(|\phi〉\) 和 \(|\psi〉\) 的内积表示为 \(〈\phi|\psi〉\)。
在外积中,“Ket”和“Bra”结合形成一个算符,它可以作用于另一个量子态。例如,\(|\psi〉〈\phi|\) 表示一个从 \(|\phi〉\) 到 \(|\psi〉\) 的算符。
### 示例:计算内积
假设我们有两个量子态:
\[
|\psi〉 = \frac{1}{\sqrt{2}}|0〉 + \frac{1}{\sqrt{2}}|1〉
\]
\[
|\phi〉 = \frac{1}{\sqrt{2}}|0〉 - \frac{1}{\sqrt{2}}|1〉
\]
我们想要计算 \(〈\psi|\phi〉\),即这两个量子态的内积。
首先,写出它们的矩阵形式:
\[
|\psi〉 = \begin{bmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{bmatrix}
\]
\[
|\phi〉 = \begin{bmatrix} \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} \end{bmatrix}
\]
因此,
\[
〈\psi| = \left(\frac{1}{\sqrt{2}}, \frac{1}{\sqrt{2}}\right)
\]
\[
〈\phi| = \left(\frac{1}{\sqrt{2}}, -\frac{1}{\sqrt{2}}\right)
\]
计算内积 \(〈\psi|\phi〉\):
\[
〈\psi|\phi〉 = \left(\frac{1}{\sqrt{2}}, \frac{1}{\sqrt{2}}\right) \begin{bmatrix} \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} \end{bmatrix} = \frac{1}{2} - \frac{1}{2} = 0
\]
这意味着 \(|\psi〉\) 和 \(|\phi〉\) 是正交的,即它们在量子力学意义上是不相关的。
通过这个例子,我们看到狄拉克符号不仅提供了一种紧凑的方式来表示量子态,而且还提供了一种清晰的方式来表达量子力学中的各种运算。
共轭转置(Conjugate Transpose)是线性代数中的一个重要概念,特别是在量子计算和量子力学领域中,它被广泛应用于量子态的表示和运算中。共轭转置也被称为埃尔米特转置(Hermitian transpose)或埃尔米特共轭(Hermitian adjoint)。
### 定义
如果有一个矩阵 \(A\),其共轭转置记作 \(A^\dagger\) 或 \(A^*\),计算方法如下:
1. **转置**:首先,将矩阵 \(A\) 的行和列互换,即 \(A\) 的第 \(i\) 行第 \(j\) 列的元素变成新的矩阵的第 \(j\) 行第 \(i\) 列的元素。
2. **共轭**:然后,对转置后矩阵的每一个元素取复共轭,即如果原矩阵的某个元素是复数 \(a + bi\)(其中 \(a\) 和 \(b\) 是实数,\(i\) 是虚数单位),则共轭转置后的对应位置元素变为 \(a - bi\)。
### 符号
共轭转置通常用上标 \(\dagger\) 或者 \(*\) 来表示,例如,矩阵 \(A\) 的共轭转置写作 \(A^\dagger\) 或 \(A^*\)。
### 例子
假设有一个复数矩阵 \(A\),如下所示:
\[
A = \begin{bmatrix}
1 + i & 2 \\
3 - 2i & 4i \\
\end{bmatrix}
\]
其共轭转置 \(A^\dagger\) 的计算步骤如下:
1. 转置:
\[
A^T = \begin{bmatrix}
1 + i & 3 - 2i \\
2 & 4i \\
\end{bmatrix}
\]
2. 共轭:
\[
A^\dagger = A^{*T} = \begin{bmatrix}
1 - i & 3 + 2i \\
2 & -4i \\
\end{bmatrix}
\]
### 特性
共轭转置有一些重要的数学性质,包括但不限于:
1. **自反性**:\((A^\dagger)^\dagger = A\)。
2. **线性**:\((\alpha A + \beta B)^\dagger = \alpha^* A^\dagger + \beta^* B^\dagger\),其中 \(\alpha\) 和 \(\beta\) 是复数。
3. **乘法的逆序性**:\((AB)^\dagger = B^\dagger A^\dagger\)。
4. **单位矩阵的共轭转置还是单位矩阵**:\(I^\dagger = I\)。
### 在量子力学中的应用
在量子力学中,量子态通常用列向量表示,称为“Ket”(记作 \(|v\rangle\)),其共轭转置称为“Bra”(记作 \(〈v|\)),用于计算内积和外积,是量子力学计算中的基本操作。例如,量子态 \(|v\rangle\) 和 \(|w\rangle\) 的内积可以表示为 \(〈v|w〉\),它给出了两个态的重叠程度。
外积(Outer Product)是线性代数中的一个概念,它与内积(点积)相对,通常用于将两个向量生成一个矩阵。在量子力学中,外积常用来构建算符或者描述量子态之间的转换。下面我将通过一个具体的例子来解释外积的计算过程。
### 外积的定义
对于两个向量 \(|u〉\) 和 \(|v〉\),它们的外积 \(|u〉〈v|\) 是一个矩阵,其中 \(|u〉\) 是一个列向量,而 \(〈v|\) 是 \(|v〉\) 的共轭转置(即“Bra”向量)。外积的结果是一个矩阵,其第 \(i\) 行第 \(j\) 列的元素等于 \(|u〉\) 的第 \(i\) 个元素与 \(〈v|\) 的第 \(j\) 个元素的乘积。
### 例子
假设我们有两个量子态向量,一个为 \(|u〉\),另一个为 \(|v〉\),它们的矩阵表示如下:
\[
|u〉 = \begin{bmatrix}
1 \\
2 \\
\end{bmatrix}
\]
\[
|v〉 = \begin{bmatrix}
3 \\
4 \\
\end{bmatrix}
\]
首先,我们要找到 \(|v〉\) 的共轭转置 \(〈v|\),由于这里的向量都是实数向量,共轭转置仅仅是转置:
\[
〈v| = \begin{bmatrix}
3 & 4 \\
\end{bmatrix}
\]
接下来,我们计算外积 \(|u〉〈v|\)。这等同于矩阵乘法 \(|u〉 \cdot 〈v|\):
\[
|u〉〈v| = \begin{bmatrix}
1 \\
2 \\
\end{bmatrix}
\begin{bmatrix}
3 & 4 \\
\end{bmatrix}
\]
进行矩阵乘法:
\[
|u〉〈v| = \begin{bmatrix}
1\cdot3 & 1\cdot4 \\
2\cdot3 & 2\cdot4 \\
\end{bmatrix}
= \begin{bmatrix}
3 & 4 \\
6 & 8 \\
\end{bmatrix}
\]
所以,外积 \(|u〉〈v|\) 的结果是一个 \(2 \times 2\) 的矩阵:
\[
|u〉〈v| = \begin{bmatrix}
3 & 4 \\
6 & 8 \\
\end{bmatrix}
\]
### 在量子力学中的应用
在量子力学中,外积 \(|u〉〈v|\) 可以用来表示从量子态 \(|v〉\) 到量子态 \(|u〉\) 的转换算符。如果 \(|u〉\) 和 \(|v〉\) 是同一个系统的正交基矢,则 \(|u〉〈v|\) 将是一个投影算符,它将任何态向量投影到 \(|u〉\) 上的分量,但前提是 \(|v〉\) 必须是 \(|u〉\) 的规范正交基的一部分。
例如,如果 \(|u〉\) 和 \(|v〉\) 是量子比特的两个正交基矢 \(|0〉\) 和 \(|1〉\),则 \(|0〉〈0|\) 和 \(|1〉〈1|\) 分别是投影到 \(|0〉\) 和 \(|1〉\) 上的算符,而 \(|0〉〈1|\) 和 \(|1〉〈0|\) 则是描述从一个基矢到另一个基矢转换的算符。
在量子力学中,外积 `|ψ〉〈ϕ|` 描述的是从量子态 `|ϕ〉` 到量子态 `|ψ〉` 的转换算符。具体而言,如果你有一个量子系统处于态 `|ϕ〉`,那么应用算符 `|ψ〉〈ϕ|` 到 `|ϕ〉` 上,会将系统从 `|ϕ〉` 转换至 `|ψ〉`。但是,值得注意的是,这种转换只会在 `|ϕ〉` 和 `|ψ〉` 正交的情况下完美实现,否则结果将是 `|ψ〉` 态的相应部分。让我们通过一个具体的例子来理解这个概念。
假设我们有一个量子系统,它有三个可能的态 `|0〉`, `|1〉`, 和 `|2〉`。这些态构成了系统的基矢。现在,如果我们想要从态 `|1〉` 转换到态 `|2〉`,我们可以使用算符 `|2〉〈1|`。
### 具体步骤
1. **定义基态**:设 `|0〉 = [1, 0, 0]`, `|1〉 = [0, 1, 0]`, `|2〉 = [0, 0, 1]`。
2. **构造算符**:`|2〉〈1|` 就是将 `|1〉` 转换到 `|2〉` 的算符,其矩阵形式为 `[0, 0, 0; 0, 0, 1; 0, 0, 0]`。
3. **应用算符**:将 `|1〉` 写成列向量 `[0, 1, 0]`,然后应用算符 `|2〉〈1|`。
### 应用算符的过程
\[
|2〉〈1| =
\begin{bmatrix}
0 & 0 & 0 \\
0 & 0 & 1 \\
0 & 0 & 0 \\
\end{bmatrix}
\]
\[
|1〉 =
\begin{bmatrix}
0 \\
1 \\
0 \\
\end{bmatrix}
\]
\[
|2〉〈1| |1〉 =
\begin{bmatrix}
0 & 0 & 0 \\
0 & 0 & 1 \\
0 & 0 & 0 \\
\end{bmatrix}
\begin{bmatrix}
0 \\
1 \\
0 \\
\end{bmatrix}
=
\begin{bmatrix}
0 \\
0 \\
1 \\
\end{bmatrix}
= |2〉
\]
可以看到,应用算符 `|2〉〈1|` 到态 `|1〉` 上确实得到了态 `|2〉`。
### 实际应用
在量子计算中,这样的算符转换是非常常见的,例如在量子门操作中,如 CNOT 门、Hadamard 门等,本质上就是应用特定的算符到量子态上,以实现从一个态到另一个态的转换。此外,在量子力学的测量理论中,投影算符也是基于外积的概念来定义的,用于描述测量操作对量子态的影响。例如,测量一个量子比特是否处于态 `|0〉`,可以用投影算符 `|0〉〈0|` 来表示这一过程。如果量子比特的初始态为 `|1〉`,那么应用 `|0〉〈0|` 将会得到零向量,这意味着测量结果不会是 `|0〉` 态。反之,如果初始态是 `|0〉`,应用 `|0〉〈0|` 则会得到 `|0〉`,意味着测量结果会是 `|0〉` 态。
```python
```
```python
```
```python
```
```python
```
```python
```
```python
```
```python
```
```python
```
## 计算基测量
我们先对计算基测量有一个简单认识:假设有一个n个量子比特的态,我们对它执行n比特计算基测量,测量后,如果结果为$00 \cdots0$,表明该n量子比特系统的量子状态已塌缩到$|00 \cdots0〉$态;类似地,如果测量其中一个量子比特,那么它表示的$2^n$种情况就会被排除掉一半,即在两个各占一半的空间中,测量操作将量子态投影到其中一个空间,表明该n量子比特系统的量子状态中一个子系统塌缩了。
在量子力学中,计算基测量是指在标准基底(通常为 \(|0\rangle\) 和 \(|1\rangle\))上进行的测量。对于一个 n 量子比特的系统,计算基测量将确定系统在测量时刻处于 \(2^n\) 种可能状态中的哪一种,即 \(|00\cdots0\rangle, |00\cdots1\rangle, \ldots, |11\cdots1\rangle\) 之一。
### 完全测量的例子
假设我们有一个两量子比特的系统处于态 \(\alpha|00\rangle + \beta|01\rangle + \gamma|10\rangle + \delta|11\rangle\),其中 \(\alpha, \beta, \gamma, \delta\) 是复数系数,并且满足归一化条件 \(|\alpha|^2 + |\beta|^2 + |\gamma|^2 + |\delta|^2 = 1\)。如果在这个系统上执行计算基测量,可能发生以下四种情况之一:
1. 测量结果为 \(|00\rangle\),系统塌缩到 \(|00\rangle\) 态,发生的概率是 \(|\alpha|^2\)。
2. 测量结果为 \(|01\rangle\),系统塌缩到 \(|01\rangle\) 态,发生的概率是 \(|\beta|^2\)。
3. 测量结果为 \(|10\rangle\),系统塌缩到 \(|10\rangle\) 态,发生的概率是 \(|\gamma|^2\)。
4. 测量结果为 \(|11\rangle\),系统塌缩到 \(|11\rangle\) 态,发生的概率是 \(|\delta|^2\)。
### 部分测量的例子
如果我们只对其中一个量子比特进行测量,例如只测量第一个量子比特,那么只有两种可能的结果:测量结果为 \(0\) 或者 \(1\)。
1. 如果测量第一个量子比特的结果为 \(0\),那么系统塌缩到 \(|00\rangle\) 或者 \(|01\rangle\) 的线性组合,具体为 \(\frac{\alpha|00\rangle + \beta|01\rangle}{\sqrt{|\alpha|^2 + |\beta|^2}}\)。这时,第二量子比特的状态仍然是未知的,但第一量子比特的状态被固定在 \(0\)。
2. 如果测量第一个量子比特的结果为 \(1\),那么系统塌缩到 \(|10\rangle\) 或者 \(|11\rangle\) 的线性组合,具体为 \(\frac{\gamma|10\rangle + \delta|11\rangle}{\sqrt{|\gamma|^2 + |\delta|^2}}\)。这时,第二量子比特的状态仍然不确定,但第一量子比特的状态被固定在 \(1\)。
### 总结
完全测量会将整个量子系统塌缩到计算基的一个特定态上,而部分测量则只会影响被测量的子系统,使它塌缩到相应的计算基态上,同时保留其他未测量子系统的不确定性。无论是哪种测量,都会根据波函数的幅度平方来决定塌缩到各个态的概率。
举例说明,如果一个两量子比特系统处于 \(|+\rangle|0\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |10\rangle)\) 态,那么:
- 如果我们测量整个系统,可能的结果是 \(|00\rangle\) 或 \(|10\rangle\),每个结果发生的概率都是 \(1/2\)。
- 如果我们只测量第一个量子比特,可能的结果是 \(|0\rangle|0\rangle\) 或 \(|1\rangle|0\rangle\),同样每个结果发生的概率都是 \(1/2\)。在这种情况下,无论第一个量子比特的结果如何,第二个量子比特的状态总是 \(|0\rangle\)。
```python
```
```python
```
```python
```
```python
```
### 单量子比特在计算基下的测量
计算基测量算子:$M_0=|0〉〈0|$和$M_1=|1〉〈1|$,注意到每个测量算子都是Hermite的,即满足$M_0^\dagger=M_0,M_1^\dagger=M_1$,并且$M^2_0=M_0,M^2_1=M_1$,于是满足完备性关系:
$$
I=M^\dagger_0M_0+M^\dagger_1M_1=M_0+M_1
$$
计算基测量是量子力学中的一种基本测量,它基于一组正交归一的基矢量来进行,对于单量子比特来说,计算基测量就是基于 \(|0〉\) 和 \(|1〉\) 这两个正交基矢量进行的测量。
计算基测量的算子可以表示为 \(M_0=|0〉〈0|\) 和 \(M_1=|1〉〈1|\)。这些算子满足以下性质:
1. **Hermite性**:即 \(M_0^\dagger=M_0\) 和 \(M_1^\dagger=M_1\),这是因为 \(|0〉〈0|\) 和 \(|1〉〈1|\) 都是对称的算子。
2. **幂等性**:即 \(M_0^2=M_0\) 和 \(M_1^2=M_1\),这是因为 \(M_0\) 和 \(M_1\) 分别投影到 \(|0〉\) 和 \(|1〉\) 上,再次应用它们会得到相同的结果。
3. **完备性关系**:即 \(I=M_0+M_1\),其中 \(I\) 是单位算子,意味着所有可能的测量结果的算子之和等于单位算子。
让我们通过数值计算来验证上述性质。首先,我们知道 \(|0〉=\begin{pmatrix} 1 \\ 0 \end{pmatrix}\) 和 \(|1〉=\begin{pmatrix} 0 \\ 1 \end{pmatrix}\),那么测量算子可以写作:
- \(M_0=|0〉〈0|=\begin{pmatrix} 1 \\ 0 \end{pmatrix}\begin{pmatrix} 1 & 0 \end{pmatrix}=\begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}\)
- \(M_1=|1〉〈1|=\begin{pmatrix} 0 \\ 1 \end{pmatrix}\begin{pmatrix} 0 & 1 \end{pmatrix}=\begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix}\)
现在我们来验证这些性质:
1. Hermite性:对于 \(M_0\) 和 \(M_1\),我们将它们与其共轭转置比较。
2. 幂等性:对于 \(M_0\) 和 \(M_1\),我们将它们自乘并与自身比较。
3. 完备性:我们将 \(M_0\) 和 \(M_1\) 相加并与单位矩阵比较。
下面,我将进行这些计算。
```python
```
假设被测量状态$|\psi〉=a|0〉+b|1〉$,则获得测量结果0的概率是:
$$
\begin{align*}
p(0)&=〈\psi|M^\dagger_0M_0|\psi〉\\
&=〈\psi|M_0|\psi〉\\
&=〈\psi|(|0〉〈0|)|\psi〉\\
&=(〈\psi|0〉)(〈0|\psi〉)\\
&=[(〈0|a^{\star}+〈1|b^{\star})|0〉][〈0|(a|0〉+b|1〉)]\\
&=(a^{\star}〈0|0〉+b^{\star}〈1|0〉)(a〈0|0〉+b〈1|0〉)\\
&=a^{\star}a\\
&=|a|^2
\end{align*}
$$
在量子力学的 bra-ket 表示法中,bra 和 ket 的顺序至关重要,它直接影响内积的计算结果。在表达式 \(a〈0|0〉+b〈1|0〉\) 中,每一项都代表了一个特定的内积操作,其中:
- \(a〈0|0〉\) 表示 bra 状态 \(〈0|\) 与 ket 状态 \(|0〉\) 的内积。由于 \(|0〉\) 和 \(〈0|\) 是同一基态的不同表示,它们的内积 \(〈0|0〉\) 等于 1。因此,这一项实际上是 \(a \times 1 = a\)。
- \(b〈1|0〉\) 表示 bra 状态 \(〈1|\) 与 ket 状态 \(|0〉\) 的内积。由于 \(|1〉\) 和 \(|0〉\) 是正交的基态(即它们代表两个不同的量子态,没有重叠),所以 \(〈1|0〉\) 的值为 0。因此,这一项实际上等于 \(b \times 0 = 0\)。
为什么这里不写成 \(b〈0|1〉\) 而是 \(b〈1|0〉\)?原因在于 \(b〈0|1〉\) 和 \(b〈1|0〉\) 代表了完全不同的内积操作。具体来说:
- \(b〈0|1〉\) 会计算 bra 状态 \(〈0|\) 与 ket 状态 \(|1〉\) 的内积。由于 \(|0〉\) 和 \(|1〉\) 同样是正交的基态,\(〈0|1〉\) 的值也是 0。这一项同样会贡献 0 到最终结果,但它代表的是 \(|0〉\) 和 \(|1〉\) 之间的相互作用,而不是 \(|1〉\) 和 \(|0〉\)。
- \(b〈1|0〉\) 则计算 bra 状态 \(〈1|\) 与 ket 状态 \(|0〉\) 的内积。虽然结果同样是 0,但它强调的是 \(|1〉\) 和 \(|0〉\) 之间的相互作用。
在原始问题的上下文中,我们需要计算 bra 状态 \(〈0|\) 作用于 ket 状态 \(a|0〉 + b|1〉\) 的内积,这直接导致了 \(a〈0|0〉\) 和 \(b〈1|0〉\) 的出现。写成 \(b〈1|0〉\) 而不是 \(b〈0|1〉\) 是为了准确反映 ket 状态 \(|1〉\) 与 bra 状态 \(〈0|\) 之间的内积计算,尽管在本例中两者的结果相同(都是 0),但它们代表了不同的物理意义和数学运算。
```python
```
假设量子态为 \(|\psi〉 = a|0〉 + b|1〉\),其中 \(a\) 和 \(b\) 分别是量子态在基态 \(|0〉\) 和 \(|1〉\) 上的复数系数,满足归一化条件 \(|a|^2 + |b|^2 = 1\)。根据量子力学原理,测量一个量子系统得到特定结果的概率等于该结果对应投影算符作用于量子态之后的内积的模平方。
在这个情况下,测量结果为0的概率由算子 \(M_0 = |0〉〈0|\) 描述,其中 \(|0〉\) 表示基态 \(0\) 的状态,而 \(〈0|\) 是其伴随(即 \(|0〉\) 的复共轭转置)。测量结果0的概率 \(p(0)\) 可以按照下列步骤计算:
1. 应用算子 \(M_0\) 到状态 \(|\psi〉\) 上,得到 \(M_0|\psi〉 = |0〉〈0|(a|0〉 + b|1〉)\)。
2. 计算 \(M_0|\psi〉\) 的伴随,即 \(〈\psi|M_0^\dagger\)。因为 \(M_0\) 是Hermite算子,所以有 \(M_0^\dagger = M_0\),因此伴随就是 \(〈\psi|M_0\)。
3. 计算伴随与 \(M_0|\psi〉\) 的内积,即 \(〈\psi|M_0M_0|\psi〉\)。但因为 \(M_0\) 是幂等算子,即 \(M_0^2 = M_0\),所以这简化为 \(〈\psi|M_0|\psi〉\)。
4. 最终概率 \(p(0) = 〈\psi|M_0|\psi〉\)。
根据上述步骤,具体计算如下:
- \(〈\psi|M_0|\psi〉 = (a^{\star}〈0| + b^{\star}〈1|)M_0(a|0〉 + b|1〉)\)。
- 因为 \(M_0 = |0〉〈0|\),所以 \(M_0(a|0〉 + b|1〉) = a|0〉〈0|0〉 + b|0〉〈0|1〉\)。
- 因为 \(〈0|0〉 = 1\) 而 \(〈0|1〉 = 0\)(基态之间的内积),所以 \(M_0(a|0〉 + b|1〉) = a|0〉\)。
- 将 \(a|0〉\) 代入上面的内积中得到 \(〈\psi|M_0|\psi〉 = (a^{\star}〈0| + b^{\star}〈1|)(a|0〉) = a^{\star}a〈0|0〉 + b^{\star}a〈1|0〉\)。
- 再次利用 \(〈0|0〉 = 1\) 和 \(〈1|0〉 = 0\) 得到最终结果 \(p(0) = a^{\star}a = |a|^2\)。
因此,如果一个量子态可以表示为 \(|\psi〉 = a|0〉 + b|1〉\),那么测量结果为0的概率确实是 \(|a|^2\)。这是量子力学中一个基本的概率公式,它表明量子态的复数系数的模平方给出了测量相应基态的概率。
```python
```
```python
```
```python
```
```python
类似地,获得测量结果1的概率是$p(1)=|b|^2$。两种情况下,测量后的状态分别为:
$$
\begin{align*}
\frac{M_0|\psi〉}{|a|}=\frac{a}{|a|}|0〉\\
\frac{M_1|\psi〉}{|b|}=\frac{b}{|b|}|1〉\\
\end{align*}
$$
### 多量子比特在计算基下的测量——以双量子比特为例
#### 测量系统中所有比特
双量子比特系统下计算基测量算子:$M_{00}=|00〉〈00|,M_{01}=|01〉〈01|,M_{10}=|10〉〈10|$和$M_{11}=|11〉〈11|$,注意到每个测量算子都是Hermite的,即满足$M_{ij}^\dagger=M_{ij},i,j\in\{0,1\}$,并且$M_{ij}^2=M_{ij}$,于是满足完备性关系:
$$
I=M^\dagger_{00}M_{00}+M^\dagger_{01}M_{01}+M^\dagger_{10}M_{10}+M^\dagger_{11}M_{11}=M_{00}+M_{01}+M_{10}+M_{11}
$$
假设被测量状态$|\psi〉=a|00〉+b|01〉+c|10〉+d|11〉$,则获得测量结果00的概率是:
$$
\begin{align*}
p(00)&=〈\psi|M^\dagger_{00}M_{00}|\psi〉\\
&=〈\psi|M_{00}|\psi〉\\
&=〈\psi|(|00〉〈00|)|\psi〉\\
&=(〈\psi|00〉)(〈00|\psi〉)\\
&=[(〈00|a^{\star}+〈01|b^{\star}+〈10|c^{\star}+〈11|d^{\star})|00〉][〈00|(a|00〉+b|01〉+c|10〉+d|11〉)]\\
&=(a^{\star}〈00|00〉+b^{\star}〈01|00〉+c^{\star}〈10|00〉+d^{\star}〈11|00〉)(a〈00|00〉+b〈00|01〉+c〈00|10〉+b〈00|11〉)\\
&=a^{\star}a\\
&=|a|^2
\end{align*}
$$
类似地,获得测量结果01的概率是$p(01)=|b|^2$,10的概率是$p(10)=|c|^2$,11的概率是$p(11)=|d|^2$。四种情况下,测量后的状态分别为:
$$
\begin{align*}
\frac{M_{00}|\psi〉}{|a|}=\frac{a}{|a|}|00〉\\
\frac{M_{01}|\psi〉}{|b|}=\frac{b}{|b|}|01〉\\
\frac{M_{10}|\psi〉}{|c|}=\frac{c}{|c|}|10〉\\
\frac{M_{11}|\psi〉}{|d|}=\frac{d}{|d|}|11〉\\
\end{align*}
$$
#### 测量系统中单个比特
如果测量双量子比特量子状态的第一个量子比特,双计算基测量算子:$M_0=|0〉〈0|\otimes I$和$M_1=|1〉〈1|\otimes I$,注意到每个测量算子都是Hermite的,即满足$M_0^\dagger=M_0,M_1^\dagger=M_1$,并且$M^2_0=M_0,M^2_1=M_1$,于是满足完备性关系:
$$
I=M^\dagger_0M_0+M^\dagger_1M_1=M_0+M_1
$$
假设被测量状态$|\psi〉=a|00〉+b|01〉+c|10〉+d|11〉$,则测量双量子比特量子状态的第一个量子比特,获得测量结果0的概率是:
$$
\begin{align*}
p(0)&=〈\psi|M^\dagger_0M_0|\psi〉\\
&=〈\psi|M_0|\psi〉\\
&=〈\psi|(|0〉〈0|\otimes I)|\psi〉\\
&=(〈00|a^{\star}+〈01|b^{\star}+〈10|c^{\star}+〈11|d^{\star})|(|0〉〈0|\otimes I)|(a|00〉+b|01〉+c|10〉+d|11〉)\\
&=(〈00|a^{\star}+〈01|b^{\star}+〈10|c^{\star}+〈11|d^{\star})|(a|00〉+b|01〉)\\
&=a^{\star}a+b^{\star}b\\
&=|a|^2+|b|^2
\end{align*}
$$
类似地,获得测量结果1的概率是$p(1)=|c|^2+|d|^2$。两种情况下,测量后的状态分别为:
$$
\begin{align*}
\frac{M_0|\psi〉}{\sqrt{|a|^2+|b|^2}}=\frac{a}{\sqrt{|a|^2+|b|^2}}|00〉+\frac{b}{\sqrt{|a|^2+|b|^2}}|01〉\\
\frac{M_1|\psi〉}{\sqrt{|c|^2+|d|^2}}=\frac{c}{\sqrt{|c|^2+|d|^2}}|10〉+\frac{d}{\sqrt{|c|^2+|d|^2}}|11〉\\
\end{align*}
$$
通过对计算基测量的学习,我们可以直观认识到,在多量子比特态的其中一个比特上做测量,本质是将量子态投影到两个子空间之一中。为了简洁的区分出这两个子空间,我们利用线性代数知识知道,可以通过恰好有两个唯一特征值的矩阵来描述两个正交子空间。
### 计算基测量的MindSpore Quantum实现
接下来我们使用MindSpore Quantum搭建一个含测量操作的量子线路并观察结果,首先导入本教程所依赖的模块。
```
Cell In[1], line 1
类似地,获得测量结果1的概率是$p(1)=|b|^2$。两种情况下,测量后的状态分别为:
^
SyntaxError: invalid character ',' (U+FF0C)
```python
import numpy as np # 导入numpy库并简写为np
from mindquantum.core.gates import X, H # 导入量子门H, X
from mindquantum.simulator import Simulator # 从mindquantum.simulator中导入Simulator类
from mindquantum.core.circuit import Circuit # 导入Circuit模块,用于搭建量子线路
from mindquantum.core.gates import Measure # 引入测量门
```
/home/ma-user/anaconda3/envs/Mindquantum-0.9.0/lib/python3.9/site-packages/mindquantum/simulator/__init__.py:17: UserWarning: Disable mqvector gpu backend due to: Malloc GPU memory failed: cudaErrorInsufficientDriver, CUDA driver version is insufficient for CUDA runtime version
from .available_simulator import SUPPORTED_SIMULATOR
说明:
(1)numpy是一个功能强大的Python库,主要用于对多维数组执行计算,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库;
(2)mindquantum是量子-经典混合计算框架,支持多种量子神经网络的训练和推理;
(3)搭建的量子线路中所需执行的量子门需要从 [mindquantum.core](https://www.mindspore.cn/mindquantum/docs/zh-CN/master/mindquantum.core.html) 模块中导入;
(4)运行量子线路所需要的量子模拟器需要从 [mindquantum.simulator](https://www.mindspore.cn/mindquantum/docs/zh-CN/master/mindquantum.simulator.html) 模块中导入;
(5)搭建量子线路所需要的量子线路类 [Circuit](https://www.mindspore.cn/mindquantum/docs/zh-CN/master/core/circuit/mindquantum.core.circuit.Circuit.html) 需要从 [mindquantum.core](https://www.mindspore.cn/mindquantum/docs/zh-CN/master/mindquantum.core.html) 模块中导入;
(6)对量子线路进行测量需要从 mindquantum 中导入 [Measure](https://www.mindspore.cn/mindquantum/docs/zh-CN/master/core/gates/mindquantum.core.gates.Measure.html) 操作。
我们搭建出一个制备双量子比特均匀叠加态$|\psi〉=\frac{\sqrt{2}(|00〉+|11〉)}{2}$的量子线路,并分别展示在所有量子比特上使用计算基测量和只在0号量子比特上使用计算基测量的结果。
#### MindSpore Quantum实现测量系统中所有比特
在使用代码演示之前,我们先简单计算出理论值。
在所有量子比特上使用计算基测量$|\psi〉=\frac{\sqrt{2}(|00〉+|11〉)}{2}$:
$$
\begin{align*}
p(00)&=|a|^2=(\frac{\sqrt{2}}{{2}})^2=\frac{1}{2}\\
p(01)&=|b|^2=0^2=0\\
p(10)&=|c|^2=0^2=0\\
p(11)&=|d|^2=(\frac{\sqrt{2}}{{2}})^2=\frac{1}{2}\\
\end{align*}
$$
可以看到,测量结果只有两种可能:00和11,概率均是$\frac{1}{2}$。测量后的状态分别为:
$$
\begin{align*}
\frac{a}{|a|}|00〉=|00〉\\
\frac{d}{|d|}|11〉=|11〉\\
\end{align*}
$$
我们开始搭建制备$|\psi〉=\frac{\sqrt{2}(|00〉+|11〉)}{2}$并在所有比特上做测量的量子线路:
```python
circ_all = Circuit() # 初始化量子线路
circ_all += H.on(0) # H门作用在第0位量子比特
circ_all += X.on(1, 0) # X门作用在第1位量子比特且受第0位量子比特控制
circ_all += Measure('q0').on(0) # 在0号量子比特作用一个测量,并将该测量命名为'q0'
circ_all += Measure('q1').on(1) # 在1号量子比特作用一个测量,并将该测量命名为'q1'
circ_all.svg() # 绘制SVG格式的量子线路图片
```
![svg](output_37_0.svg)
```python
sim = Simulator('mqvector', 2) # 声明一个2比特的mqvector模拟器
sim.apply_circuit(circ_all).svg() # 在模拟器上运行量子线路
```
![svg](output_38_0.svg)
可以看到我们得到的测量结果是'11'(由于测量具有随机性,此处的结果在执行时也有可能时'00'),测量后的量子态塌缩为:
```python
print(sim.get_qs(True))
```
1¦11〉
表达式 \(1|11\rangle\) 中前置的数字 1 实际上是一个复数系数,它属于量子态的线性组合的一部分。在量子力学中,一个量子态可以被表示为基矢量的线性组合,这里的基矢量是 \(|0\rangle\) 和 \(|1\rangle\)(对于单个量子比特)。对于多量子比特系统,基矢量则由单个量子比特的基矢量的张量积构成,如 \(|11\rangle\)。
在 \(1|11\rangle\) 中的 1 可以被视为一个标量,它乘以量子态 \(|11\rangle\)。这个标量可以是任意复数,但通常为了物理意义,我们会将其归一化,使得整个量子态的范数(或称为模)为 1。这是因为量子态的绝对大小并不携带物理意义;而是量子态的相对大小(即它们的相对概率幅)决定了测量结果的概率。
前置的复数系数影响了测量该态时观察到相应结果的概率。具体来说,如果我们有量子态 \(\alpha|00\rangle + \beta|11\rangle\),其中 \(\alpha\) 和 \(\beta\) 是复数,则测量得到 \(|00\rangle\) 的概率是 \(|\alpha|^2\),测量得到 \(|11\rangle\) 的概率是 \(|\beta|^2\)。这些概率必须加起来等于 1,这意味着整个量子态必须被归一化。
如果 \(1|11\rangle\) 是量子态的一部分,并且这个态已经归一化,那么这意味着 \(|11\rangle\) 状态的概率幅就是 1,而其他所有可能的状态的概率幅为 0。这样,如果我们对系统进行测量,我们有 100% 的概率会观测到 \(|11\rangle\) 的状态。但是,如果这是量子态线性组合中的一个项,那么其他的项也可能存在,并且整个态需要按照上述规则进行归一化。
量子态塌缩成了$1|11〉$,与理论值相符。
如果我们多测量几次,可以发现测量结果也会为'00' (请执行多次观察不同的结果):
```python
sim.reset() #复位模拟器
sim.apply_circuit(circ_all).svg() # 在模拟器上运行量子线路
```
![svg](output_43_0.svg)
打印出此时量子态,可以看到它坍缩成了相应的$|00〉$:
```python
print(sim.get_qs(True))
```
1¦11〉
我们观察到,测量结果时而为'00'时而为'11',符合理论预期,但是没有办法观察出现00和11的概率是否相同,我们希望可以多次测量,统计出不同结果出现的频率,以此观察结果是否满足预期的概率分布。为此我们使用量子线路采样(Sampling)功能:
```python
sim.reset()
result = sim.sampling(circ_all, shots=1000) # 对上面定义的线路采样1000次
result.svg()
```
![svg](output_47_0.svg)
我们可以看到,采样1000中,'00'出现了503次,'11'出现了497次(由于测量具有随机性,每次运行结果会略有不同),采样结果符合概率分布,细微的误差是由模拟器噪声导致。仔细阅读的同学可以发现,在[量子模拟器教程](https://www.mindspore.cn/mindquantum/docs/zh-CN/master/beginner/quantum_simulator.html)中我们已经展示过该线路的采样结果,但并未解释结果如是分布的原因,在本教程中学习了计算基测量后,相信同学们对该结果分布的认识更加深刻。
#### MindSpore Quantum实现测量系统中单个比特
同样地,在使用代码演示之前,我们先简单计算出理论值。
在0号量子比特上使用计算基测量$|\psi〉=\frac{\sqrt{2}(|00〉+|11〉)}{2}$:
$$
\begin{align*}
p(0)=|a|^2+|b|^2=(\frac{\sqrt{2}}{{2}})^2=\frac{1}{2}\\
p(1)=|c|^2+|d|^2=(\frac{\sqrt{2}}{{2}})^2=\frac{1}{2}\\
\end{align*}
$$
可以看到,测量结果有两种可能:0和1,概率均是$\frac{1}{2}$。测量后的状态分别为:
$$
\begin{align*}
\frac{a}{\sqrt{|a|^2+|b|^2}}|00〉+\frac{b}{\sqrt{|a|^2+|b|^2}}|01〉=|00〉\\
\frac{c}{\sqrt{|c|^2+|d|^2}}|10〉+\frac{d}{\sqrt{|c|^2+|d|^2}}|11〉=|11〉\\
\end{align*}
$$
我们开始搭建制备$|\psi〉=\frac{\sqrt{2}(|00〉+|11〉)}{2}$并在0号量子比特上做测量的量子线路:
```python
circ_partial = Circuit() # 初始化量子线路
circ_partial += H.on(0) # H门作用在第0位量子比特
circ_partial += X.on(1, 0) # X门作用在第1位量子比特且受第0位量子比特控制
circ_partial += Measure('q0').on(0) # 在0号量子比特作用一个测量,并将该测量命名为'q0' ##在0号量子比特上使用计算基测量 因为bc 等于0 所以智能有 0 则为00组合 有1 则智能是11组合
circ_partial.svg() # 绘制SVG格式的量子线路图片
```
![svg](output_49_0.svg)
```python
sim.reset() # 复位模拟器
sim.apply_circuit(circ_partial).svg() # 在模拟器上运行量子线路
```
![svg](output_50_0.svg)
可以看到我们得到的测量结果是'0'(由于测量具有随机性,执行时有可能测量结果为'1'),测量后的量子态塌缩为:
```python
print(sim.get_qs(True))
```
1¦00〉
量子态塌缩成了$1|00〉$,与理论值相符。
同样地,如果我们多测量几次,可以发现测量结果也会为'1',此处不再演示。我们直接对该量子线路采样1000次观察结果:
```python
sim.reset()
result = sim.sampling(circ_partial, shots=1000) # 对上面定义的线路采样1000次
result.svg()
```
![svg](output_54_0.svg)
```python
print("yange mindspore打卡第十三天之mindquantum计算基测量 2024 07 03")
```
yange mindspore打卡第十三天之mindquantum计算基测量 2024 07 03
```python
```